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"之類的
也是無解,而且現在還不能復現了。。。