1. 程式人生 > >Zookeeper偽分散式配置

Zookeeper偽分散式配置

1.下載

從hust的映象站下載

地址:

http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz

2.然後解壓、移動到自己喜歡的位置就行

我是放到 /usr/zookeeper下面

3.配置(需要配置好Java環境)

1)修改配置檔案

cd /usr/zookeeper/conf
cp zoo_sample.cfg zoo1.cfg

然後使用vim編輯zoo1.cfg

需要修改 dataDir,新增dataLogDir,新增server.0、server.1、server.2(假設叢集有3個節點)

我的修改如下:

dataDir=/usr/zookeeper/data/1
clientPort=2181
dataLogDir=/usr/zookeeper/log/1
server.0=0.0.0.0:2287:3387
server.1=localhost:2288:3388
server.2=localhost:2289:3389

之後重複複製和編輯操作,建立zoo2.cfg、zoo3.cfg

把dataDir分別改為 /usr/zookeeper/data/2 、 /usr/zookeeper/data/3

clientPort分別改為 2182 2183

dataLogDir分別改為 /usr/zookeeper/log/2、 /usr/zookeeper/log/3

zoo2的server.1需要改成0.0.0.0:2288:3388,zoo3同理修改server.2

2)建立myid

使用mkdir -p 命令,建立/usr/zookeeper/data及子目錄1、2、3

然後使用 echo "0" > /usr/zookeeper/data/1/myid 建立server.0的id檔案,另兩個目錄同理

3.執行

命令格式:

zkServer.sh start zoo.cfg

這一步開始遇到問題了

我本地的WSL環境,用指令碼啟動不知為何總是報錯,如下:

[2018-11-08 08:57:19,707] INFO Resolved hostname: localhost to address: localhost/127.0.0.1 (org.apache.zookeeper.server.quorum.QuorumPeer)
[2018-11-08 08:57:20,709] WARN Cannot open channel to 1 at election address localhost/127.0.0.1:3388 (org.apache.zookeeper.server.quorum.QuorumCnxManager)
java.net.ConnectException: Connection refused (Connection refused)
        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.connectOne(QuorumCnxManager.java:558)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)
        at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:838)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:957)
[2018-11-08 08:57:20,714] INFO Resolved hostname: localhost to address: localhost/127.0.0.1 (org.apache.zookeeper.server.quorum.QuorumPeer)
[2018-11-08 08:57:20,714] INFO Notification time out: 400 (org.apache.zookeeper.server.quorum.FastLeaderElection)

逐個啟動,輸出倒是沒什麼問題,但是用 zkServer.sh status 命令仍顯示無法連線,jps也沒有zookeeper的程序,說明沒啟動成功,如果用zoo_sample.cfg單機模式啟動是正常的,搞不懂什麼問題

於是換伺服器環境重試一邊,沒遇到任何問題就成功了

[email protected]:/usr/zookeeper/data$ jps
29124 QuorumPeerMain
29176 QuorumPeerMain
29291 Jps
29244 QuorumPeerMain

使用 zkCli.sh -server 127.0.0.1:2181 連線伺服器,可以成功連線

4.遇到的其他奇怪問題:

1)明明安裝了Java,仍然報錯:

Error: JAVA_HOME is not set and could not be found.

在 /etc/profile 已經export了JAVA_HOME和PATH,直接在終端使用export命令也能看到值

使用java -version也沒問題,最奇怪的是指令碼的輸出裡能看到,實際上指令碼已經讀取到JAVA_HOME

輸出了類似 java:/usr/java/bin/java 的內容

在 zkEnv.sh 顯式export JAVA_HOME也沒用

無解

2)zkEnv.sh 報各種格式錯誤

比如說提示某一行的括號錯誤,應該是"fi"之類的

也是無解,而且現在還不能復現了。。。