Centos 7.2 搭建zookeeper3.4.14集群

一、環(huán)境準(zhǔn)備

操作系統(tǒng):CentOS Linux release 7.2.1511 (Core)

JDK版本:1.8.0_121(open jdk 也可)

三臺(tái)服務(wù)器:106.12.204.214、39.106.87.20、152.136.159.168

二、下載zookeeper

下載地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

選擇適配系統(tǒng)環(huán)境的版本

三、安裝

1、上傳+解壓

#此處我上傳到opt目錄下(可自行選擇安裝目錄)

[root@localhost /]# cd /opt/

[root@localhost zookeeper3.4.14]# tar zxvf zookeeper-3.4.14.tar.gz

2、配置zookeeper

(1)創(chuàng)建數(shù)據(jù)目錄

下面zoo.cfg配置文件的dataDir將會(huì)使用這個(gè)目錄

[root@localhost zookeeper]# cd /opt/zookeeper3.4.14/

[root@localhost zookeeper]# mkdir data

(2)修改配置文件

[root@localhost zookeeper]# cd conf

[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

[root@localhost conf]# vi zoo.cfg

先把dataDir=/tmp/zookeeper注釋,然后將下面四行代碼添加到文件末尾

dataDir=/usr/local/zookeeper/data

#以下配置的sever.n和后續(xù)的myid必須一致,本機(jī)ip配置0.0.0.0

server.3=0.0.0.0:2888:3888

server.2=39.106.87.20:2888:3888

server.1=152.136.159.168:2888:3888

如圖:

(3)創(chuàng)建myid文件

[root@localhost conf]# cd ../data

#另外兩臺(tái)依次修改為2和3

[root@localhost data]# echo "1" > myid

3、開啟zookeeper端口

開啟2888、3888、2181端口(或者直接關(guān)閉防火墻也可)

firewall-cmd --zone=public --add-port=2888/tcp --permanent

firewall-cmd --zone=public --add-port=3888/tcp --permanent

firewall-cmd --zone=public --add-port=2181/tcp --permanent

重啟防火墻

firewall-cmd --reload

4、配置環(huán)境變量

vi /etc/profile

添加以下信息

export ZOOKEEPER_INSTALL=/opt/zookeeper-3.4.14

export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

備注:三臺(tái)機(jī)器依次操作2、3、4步驟(可以配置完其中一臺(tái),然后scp,再進(jìn)行相應(yīng)修改)

5、啟動(dòng)zookeeper

(1)啟動(dòng)(每臺(tái)機(jī)器都要啟動(dòng))

[root@localhost bin]# zkServer.sh start

如果輸出以下內(nèi)容,表示啟動(dòng)成功

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

(2)查看狀態(tài)

[root@localhost data]# zkServer.sh status

192.168.1.91:

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Mode: follower

192.168.1.92:

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Mode: leader

192.168.1.93:

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Mode: follower

由此我們看出192.168.1.92這臺(tái)機(jī)器被自動(dòng)選舉為leader了

四、驗(yàn)證

在Zookeeper安裝的任何一個(gè)節(jié)點(diǎn)執(zhí)行客戶端連接命令:

zkCli.sh -server 192.168.1.1:2181

能夠連接表示成功

常見問題:

1、zookeeper啟動(dòng)后,查看狀態(tài)顯示

[root@iZ2ze06fzsvx84ds11gda1Z zookeeper-3.4.14]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

這種情況一般表示zookeeper集群啟動(dòng)失敗,請(qǐng)根據(jù)日志進(jìn)行排查(仔細(xì)分析日志),一般由以下原因造成:

(1)防火墻未正常配置或者沒有關(guān)閉

(2)端口占用(netstat -apn | grep 2181、2888、3888)

(3)myid沒有配置或者與server.id不一致

(4)網(wǎng)絡(luò)問題,通過機(jī)器之間互ping ip排查

(5)本機(jī)的server.id的配置行的ip沒有配置為0.0.0.0

說明:

網(wǎng)上還有其他說法,比如配置/etc/hosts 文件,配置集群機(jī)器ip,刪除/etc/hosts中的127.0.0.1的配置,本人親測(cè),不影響zookeeper集群啟動(dòng)。

本人遇到“It is probably not running.”,通過上面(1)至(5)各自場(chǎng)景排查,均沒有解決問題,然后仔細(xì)分析日志zookeeper.out的內(nèi)容:

2019-05-31 15:20:51,075 [myid:1] - WARN? [QuorumPeer[myid=1]/0.0.0.0:2181:Learner@237] - Unexpected exception, tries=1, connecting to /39.106.87.20:2888

java.net.SocketTimeoutException: connect timed out

發(fā)現(xiàn)另外兩臺(tái)機(jī)器都報(bào)connecting to /39.106.87.20:2888超時(shí)的問題,因此懷疑機(jī)器39.106.87.20限制了外來訪問(但我已經(jīng)排查了防火墻和網(wǎng)絡(luò)問題),由于該機(jī)器是阿里云的ECS,我聯(lián)想到當(dāng)初自建MySQL無法遠(yuǎn)程登陸的問題,才想起來阿里云ECS默認(rèn)安全組是只開放了ssh 22等基本訪問端口,因此新增了安全組,集群正常啟動(dòng),因此加上第(6)條:機(jī)器安全組設(shè)置(云服務(wù)器)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容