準備工作:
已裝好單機 zookeeper的三臺機器:
192.168.0.164,192.168.0.166,192.168.0.184
Zookeeper 的集羣搭建很簡單,只要在配置好的單機zookeeper基礎上修改兩個地方即可,
一個是配置文件zoo.cfg,另一個是創建myid文件。集羣示圖如下:
詳細步驟如下:(以server 2 爲例,ip :192.168.0.166 , myid :2)
1. 關閉zookeeper(如果zookeeper在運行,沒有跳到第二步)
查看zookeeper進程:
ps -ef | grep zookeeper
進程id爲3085,殺死該進程:
Kill -s 9 3085
或者 在zookeeper安裝包的bin目錄下:
sh zkServer.sh stop
查看確認zookeeper已關閉:
ps -ef | grep zookeeper
2. 修改配置文件
修改conf目錄下zoo.cfg文件
dataDir : 數據文件目錄
dataLogDir : 日誌打印文件目錄
clientPort = 2181 供客戶端註冊發現服務用
2888:集羣中zookeeper之間通信用
3888:選舉lead時用
配置zookeeper集羣,三臺機器:
server.1 = 192.168.0.164:2888:3888
server.2 = 192.168.0.166:2888:3888
server.3 = 192.168.0.184:2888:3888
(爲了避免混亂,server根據ip從小到大按順序排列)
3. 創建myid
在zookeeper安裝目錄下,進入data文件夾中,創建myid文件(沒有後綴):
vi myid
Esc +:+ wq
保存退出myid文件
(PS:如果三臺虛擬機只有一臺裝了zookeeper,可以配置好後通過遠程拷貝到其他兩臺:
scp -r /usr/local/zookeeper-3.5.4-beta 192.168.0.184:/usr/local
scp -r /usr/local/zookeeper-3.5.4-beta 192.168.0.164:/usr/local
三臺機器zoo.cfg都一樣,只要修改對應的myid值即可。
Zookeeper是java寫的,需要運行在java環境之上,需裝jdk)
即:
Ip 192.168.0.164 機器爲server 1 對應的myid 爲 1
IP 192.168.0.166 機器爲server 2 對應的myid 爲 2
IP 192.168.0.184 機器爲server 3 對應的myid 爲 3
4. 啓動zookeeper
分別進入到三臺機器zookeeper安裝目錄bin中,通過命令:
sh zkServer.sh start
啓動zookeeper
OK,確保三臺機器zookeeper都能啓動成功。之後,zookeeper集羣會選出一個leader,其餘爲follower。
5. 查看狀態
同樣,在安裝目錄bin下, 通過命令
sh zkServer.sh status
查看集羣狀態
即 166和184 爲follower ,164爲leader,表示集羣搭建成功。
注意的坑:
若單臺zookeeper都能啓動成功,而沒有通信成功,沒有leader和follower,則可能是端口的原因:
a. 端口是否被佔用
b. 防火牆是否放行
c. 更多問題可以通過日誌文件查看