天天看點

ZK(4)——ZK叢集安裝

單機僞分布式安裝ZK叢集

1. ZK叢集搭建注意點

  • 配置資料檔案

    myid 1/2/3

    對應

    server.1/2/3

  • 通過

    ./zjCli.sh -server [ip]:[port]

    監測叢集是否配置成功

2. ZK叢集的安裝過程

  • 首先要拷貝2份ZK,現在系統中有3份ZK
  • 其次要修改 /conf/zoo.cfg 檔案,一共修改3個位置。

ZK(4)——ZK叢集安裝
ZK(4)——ZK叢集安裝
  • 然後在 /bin/目錄下

    ./zkServer.sh start

    啟動zk,啟動完成後通過

    ./zkServer.sh status

    來檢視ZK伺服器是否啟動成功

三台實體機(虛拟機)安裝ZK叢集

這裡有一個無知坑。。。。

首先我在虛拟機上克隆了兩個centOS系統,現在一共有3個centOS系統。

ZK(4)——ZK叢集安裝

這三個系統中分别裝了zookeeper,分别代表 server1、server2 和 server3。

配置檔案如下:

ZK(4)——ZK叢集安裝

主要是框住的3個位置,第一個位置中需要建立一個myid檔案,該檔案中的值對應server.x的x。即如果myid中的值為1,那麼對應的是server.1這個節點。因為是真機叢集,是以這裡的ClientPort都設定為一樣的值,這裡隻有server.x中的ip不一樣即可,剩下的配置都一樣。

server.A=B:C:D

server.1=192.168.41.129:2888:3888

server.2=192.168.41.132:2888:3888

server.3=192.168.41.133:2888:3888

A 是一個數字,表示這個是第幾号伺服器;

B 是這個伺服器的 IP 位址(或者是與 IP 位址做了映射的主機名,如果寫的是主機名需要在hosts中配置一下) ;

C 第一個端口用來叢集成員的資訊交換,表示這個伺服器與叢集中的 Leader 伺服器交換資訊的端口;

D 是在 leader 挂掉時專門用來進行選舉 leader 所用的端口。

注意:如果是僞叢集的配置方式,不同的 Zookeeper 執行個體通信端口号不能一樣,是以要給它們配置設定不同的端口号。

這樣就配置完成了,接下來,我們說一下我遇到的坑~~~~

在配置好後,在zookeeper/bin檔案夾下,運作zkServer.sh start指令,會報錯。

2019-01-11 17:15:03,776 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-01-11 17:15:03,777 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/127.0.0.1:2181, initiating session
2019-01-11 17:15:03,778 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Unable to read additional data from server sessionid 0x300001555fd0000, likely server has closed socket, closing socket connection and attempting reconnect
2019-01-11 17:15:05,726 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-01-11 17:15:05,729 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
2019-01-11 17:15:05,734 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Unable to read additional data from server sessionid 0x300001555fd0000, likely server has closed socket, closing socket connection and attempting reconnect
2019-01-11 17:15:06,043 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-01-11 17:15:06,044 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/127.0.0.1:2181, initiating session
2019-01-11 17:15:06,045 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Unable to read additional data from server sessionid 0x300001555fd0000, likely server has closed socket, closing socket connection and attempting reconnect
2019-01-11 17:15:07,215 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-01-11 17:15:07,216 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
2019-01-11 17:15:07,217 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Unable to read additional data from server sessionid 0x300001555fd0000, likely server has closed socket, closing socket connection and attempting reconnect
2019-01-11 17:15:07,883 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-01-11 17:15:07,883 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/127.0.0.1:2181, initiating session
2019-01-11 17:15:07,887 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Unable to read additional data from server sessionid 0x300001555fd0000, likely server has closed socket, closing socket connection and attempting reconnect
2019-01-11 17:15:09,678 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-01-11 17:15:09,681 [myid:] - INFO  [main-SendThread(localhost:2181):[email protected]] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
           

這個問題查了好久部落格都沒有搞定,把防火牆關了也不好使,自己以為是配置出現了問題,是以看了很多遍别人的配置部落格,都要看爛了,後來把配置檔案zoo.cfg的server節點注釋掉,發現可以正常啟動,是以就定位到了一定是叢集的問題,然後後來找到了另一篇博文,終于解決了這個問題。

因為在zoo.cfg中配置了三台機器,但是隻啟動了1台機器,ZK就會任務服務處于不可用的狀态。是以當你把所有機器都起來的時候,在運作用戶端就可以了。

ZK有一個選舉算法,當整個叢集超過半數機器當機,ZK就會認為叢集處于不可用的狀态。

參考并感謝

https://www.cnblogs.com/showxiaxian/p/4528590.html