CentOS下ZooKeeper单机模式、集群模式安装
本文環(huán)境如下:
操作系統(tǒng):CentOS 6 32位
ZooKeeper版本:3.4.8
0. 環(huán)境需求
Zookeeper需要JDK1.6以上版本的Java環(huán)境
可以參考:
CentOS 6使用rpm方式安裝JDK8
1. 下載軟件包
到ZooKeeper官網(wǎng)上http://zookeeper.apache.org/下載軟件包,例如:
wget "http://apache.opencas.org/zookeeper/stable/zookeeper-3.4.8.tar.gz" tar -xzvf zookeeper-3.4.8.tar.gz mv zookeeper-3.4.8 /opt2. 單機(jī)模式
2.1 修改配置文件
cd /opt/zookeeper-3.4.8/conf/ cp zoo_sample.cfg zoo.cfg vi zoo.cfgZookeeper提供了一份默認(rèn)的配置文件,復(fù)制為zoo.cfg打開后,我們需要修改數(shù)據(jù)存放的路徑:
dataDir=/opt/zookeeper-3.4.8/data2.2 運(yùn)行Zookeeper
cd /opt/zookeeper-3.4.8/bin/ ./zkServer.sh start如果運(yùn)行無報(bào)錯(cuò),說明Zookeeper啟動(dòng)成功了。
為了以后操作方便,我們可以將Zookeeper/bin添加到path
在末尾添加:
ZOOKEEPER_HOME=/opt/zookeeper-3.4.8 PATH=$PATH:$ZOOKEEPER_HOME/bin更新配置:
source /etc/profile3. 集群模式
單機(jī)模式非常方便,適合開發(fā)、測試場景,但是在生產(chǎn)環(huán)境中,應(yīng)該運(yùn)行一個(gè)集群模式。集群模式至少應(yīng)該有3個(gè)節(jié)點(diǎn),并且強(qiáng)烈建議是奇數(shù)個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)應(yīng)該有相同的配置文件。
3.1 修改配置文件
cd /opt/zookeeper-3.4.8/conf/ vi zoo.cfg打開后,修改為:
tickTime=2000 dataDir=/opt/zookeeper-3.4.8/data clientPort=2181 initLimit=5 syncLimit=2 server.1=master:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888server后面跟的數(shù)字就是該節(jié)點(diǎn)的標(biāo)號(hào),我們需要將這個(gè)編號(hào)寫入名為myid的文件。該文件應(yīng)該存放在前面配置的dataDir指向的目錄下。
例如上面的slave1節(jié)點(diǎn),對應(yīng)的data/myid文件中應(yīng)該寫入2。
3.2 拷貝文件夾
scp -r /opt/zookeeper-3.4.8 root@slave1:/opt/ scp -r /opt/zookeeper-3.4.8 root@slave2:/opt/拷貝完成后,記得修改對應(yīng)服務(wù)器的myid文件。
3.3 啟動(dòng)服務(wù)
需要到每個(gè)節(jié)點(diǎn)上啟動(dòng)Zookeeper服務(wù),每個(gè)節(jié)點(diǎn)啟動(dòng)后可以用zkServer.sh status查看當(dāng)前節(jié)點(diǎn)的啟動(dòng)狀態(tài)以及是leader節(jié)點(diǎn)還是follower節(jié)點(diǎn)。
4. 異常分析
運(yùn)行日志文件默認(rèn)在程序目錄下的zookeeper.out。
4.1 無法連接
2016-04-13 05:18:21,531 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@400] - Cannot open channel to 2 at election address slave1/5.2.8.5:3888 java.net.ConnectException: Connection refusedat 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:381)at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:354)at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)at java.lang.Thread.run(Thread.java:745)出現(xiàn)這個(gè)異常,可能是zookeeper節(jié)點(diǎn)的防火墻是開啟狀態(tài)并且沒有打開相應(yīng)端口(2888,3888);也可能是有節(jié)點(diǎn)未啟動(dòng)或者掛掉了。
總結(jié)
以上是生活随笔為你收集整理的CentOS下ZooKeeper单机模式、集群模式安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 6 安装Hadoop 2.
- 下一篇: CentOS下Storm 1.0.0集群