Zookeeper(二)------centos下zookeeper集羣安裝

一、下載

https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

在這裏插入圖片描述
在這裏插入圖片描述

二、安裝

前提:安裝jdk

解壓縮 zookeeper 安裝包

 mkdir zookeeper
 cd zookeeper/
 tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz

進入conf目錄,cp生成一個zk能識別的配置文件名:zoo.cfg

 cd apache-zookeeper-3.6.1-bin/conf/
 cp zoo_sample.cfg  zoo.cfg

修改配置文件zoo.cfg

vi zoo.cfg 
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/data/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true


三、啓動Zookeeper

3.1、啓動節點

默認會到同級目錄conf中尋找zoo.cfg文件,所以默認不用加配置文件

./zkServer.sh start

在這裏插入圖片描述
如果啓動報錯,提示

: 找不到或無法加載主類 org.apache.zookeeper.server.quorum.QuorumPeerMain

zookeeper在3.5.5之後在下載的時候應該下載帶bin的文件,而之前的普通的tar.gz的包裏面是隻是源碼的包無法直接使用。

3.2、查看節點狀態

./zkServer.sh status

在這裏插入圖片描述

3.2、關閉節點

./zkServer.sh stop

在這裏插入圖片描述

四、集羣安裝Zookeeper

Zookeeper節點部署越多,服務的可靠性越高,建議部署奇數個節點,因爲zookeeper集羣是以
宕機個數過半纔會讓整個集羣宕機的。

ip myid 節點
192.168.1.200 1 節點1
192.168.1.201 2 節點2
192.168.1.202 3 節點3

分別在三臺服務器上安裝Zookeeper服務,步驟按照上述即可

4.1、修改配置文件zoo.cfg

三臺zoo.cfg文件內容一致

server.1=192.168.1.200:2888:3888
server.2=192.168.1.201:2889:3889
server.3=192.168.1.202:2890:3890

4.2、添加myid文件

集羣模式下需要添加myid文件,保存路徑爲zoo.cfg文件下dataDir=/data/zookeeper路徑下

myid文件內容爲zoo.cfg文件中server.x,即對應(1,2,3),zookeeper會根據myid文件內容,判斷那個是server(節點)

cd /data/zookeeper/

分別爲1,2,3

vi myid
1
vi myid
2
vi myid
3

4.3、啓動集羣

三臺zk服務器分別執行啓動命令

cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/
./zkServer.sh start

查看日誌,發現啓動失敗

cd ..
tail -f logs/zookeeper-root-server-192.168.1.200.out
2020-06-14 21:54:44,540 [myid:2] - WARN  [QuorumConnectionThread-[myid=2]-2:QuorumCnxManager@400] - Cannot open channel to 3 at election address /192.168.1.202:3890
java.net.NoRouteToHostException: 沒有到主機的路由 (Host unreachable)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager.initiateConnection(QuorumCnxManager.java:383)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(QuorumCnxManager.java:457)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

原因,防火牆未關閉導致

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall開機啓動

firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running)

查看節點狀態

./zkServer.sh status

200服務器

#從節點
Mode: follower

201服務器

#從節點
Mode: follower

202服務器

#主節點
Mode: leader

五、zookeeper角色、狀態介紹

在zookeeper的集羣中,節點具有3種角色、4種狀態

角色:leader,follower,observer

狀態:leading,following,observing,looking

leading:當前Server即爲選舉出來的leader。

following:已經選舉出來,當前Server與之同步。

observing:的行爲在大多數情況下與follower完全一致,但是他們不參加選舉和投票,而僅僅接受(observing)選舉和投票的結果。

looking:當前Server不知道leader是誰,正在搜尋。

六、設置開機自啓

cd /etc/rc.d/init.d/
#創建zookeeper文件
vi zookeeper

編寫腳本

#!/bin/bash

#chkconfig: 2345 80 90

#description:zookeeper
 
#processname:zookeeper
export JAVA_HOME=/usr/java/jdk1.8.0_191
case $1 in
          start)   su root /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/zkServer.sh start;;  
          stop)    su root /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/zkServer.sh stop;;    
          status)  su root /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/zkServer.sh status;;  
          restart) su root /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/zkServer.sh restart;;
     *)  echo "require start|stop|status|restart"  ;;  
esac

#給文件添加權限
chmod +x zookeeper
#配置開機啓動項
chkconfig --add zookeeper
#查看zk配置是否成功
chkconfig --list

在這裏插入圖片描述

#重啓服務器測試是否成功
reboot
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章