記錄Zookeeper
集羣搭建的過程!html
ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。java
劃重點:分佈式應用程序協調服務,在分佈式系統中,一般須要一個通用的服務註冊與發現中心,所以Zookeeper
就是充當這樣的角色,國內很是出名的分佈式框架Dubbo
也建議使用Zookeeper
做爲服務註冊與發現中心。vim
準備三臺Linux
虛擬機,前往官網下載zookeeper
壓縮包,若是不知道官網如何下載,可在公衆號「張少林同窗」回覆Java工具
獲取網盤下載連接centos
OS | 主機名 | ip | zookeeper/端口 |
---|---|---|---|
centos7 | LIHETEST6 | 192.168.2.216 | zookeeper-3.4.11.tar.gz/2181 |
centos7 | LIHETEST7 | 192.168.2.217 | zookeeper-3.4.11.tar.gz/2181 |
centos7 | LIHETEST8 | 192.168.2.218 | zookeeper-3.4.11.tar.gz/2181 |
在三臺服務器分別作如下操做,這裏以 LIHETEST6
爲例:服務器
hostname
vim /etc/hostname
刪除原有內容,新增主機名:LIHETEST6
vim /etc/hosts
在文件尾部添加內容,格式爲: IP 地址 主機名 (中間用空格分割),保存退出,例如:192.168.2.216 LIHETEST6
systemctl restart network
將Zookeeper
壓縮包上傳到服務器後,解壓網絡
//上傳壓縮包
scp zookeeper-3.4.11.tar.gz root@192.168.2.219:/home/tools
//登陸到服務器目錄 解壓
tar -zxvf zookeeper-3.4.11.tar.gz
//進入zookeeper主目錄
cd zookeeper-3.4.11
複製代碼
解壓後看看都有哪些內容:框架
咱們只須要把焦點定位到這兩個目錄:tcp
Zookeeper
啓動腳本等執行腳本命令./bin/zkServer.sh start
啓動Zookeeper
,結果以下: 分佈式
提示找不到 ../conf/zoo.cfg
文件,可是最後卻打印STARTED
,因而執行./bin/zkServer.sh status
看看當前Zookeeper
狀態,結果以下:工具
上述結果很清晰明瞭了,Zookeeper
啓動失敗,緣由是找不到配置文件:./conf/zoo.cfg
,./bin/zkServer.sh start
命令啓動時,默認會使用此配置文件啓動,而初始化時./conf
目錄下並沒有此文件,查看./conf
中存在一個樣例配置文件./conf/zoo_sample.cfg
,因而執行cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
複製一份./conf/zoo.cfg
文件出來,再次執行命令啓動Zookeeper
,結果以下:
能夠看出Zookeeper
已經啓動了,而且是單機模式啓動。
再看看啓動日誌信息cat zookeeper.out
:
zookeeper
啓動,綁定在2181
端口,查看一下進程是否存在:netstat -lntp | grep 2181
,結果以下:
tcp6 0 0 :::2181 :::* LISTEN 27201/java
複製代碼
有時候咱們會在本機搭建一個僞集羣,用於項目代碼測試,那麼只須要啓動三個不一樣配置的Zookeeper
便可,只要端口不一樣,便可視爲不一樣的程序。
在./conf
目錄下新增zoo1.cfg
,zoo2.cfg
,zoo3.cfg
配置文件,其中dataDir
目錄依次都不一樣,clientPort
分別配置爲2181
,2182
,2183
。啓動Zookeeper
時,顯式指定配置文件,如:./bin/zkServer.sh start conf/zoo3.cfg
,依次啓動三個Zookeeper
配置文件。。那麼最終執行netstat -lntp
看下端口監聽狀況:
能夠看到啓動了三個監聽不一樣端口的Zookeeper
.
在真實生產環境中,咱們通常會搭建一個多機器集羣的,目的很明顯,爲了提升容錯能力。
在三臺機器中,每檯安裝一個Zookeeper
服務,這三臺機器造成一個小規模的集羣。
在每臺機器中修改./conf/zoo.cfg
配置文件以下:
initLimit=10 // 初始容忍的心跳數
syncLimit=5 // 等待最大容忍的心跳數
dataDir=/home/wwwroot/easywits/tools/zookeeper-3.4.11/data //數據存儲目錄
dataLogDir=/home/wwwroot/easywits/tools/zookeeper-3.4.11/logs //數據日誌文件目錄
clientPort=2181 //zookeeper 監聽端口
server.1=192.168.2.216:2888:3888 //主機ip/服務間心跳鏈接端口/數據端口
server.2=192.168.2.217:2888:3888
server.3=192.168.2.218:2888:3888
複製代碼
分別在每臺服務器 數據目錄 /home/wwwroot/easywits/tools/zookeeper-3.4.11/data
中新增名爲 myid
文本文件,內容依次爲 0,1,2
,這是集羣中每臺 Zookeeper
服務的惟一標識,不能重複,以第一臺爲例:
echo "0" > /home/wwwroot/easywits/tools/zookeeper-3.4.11/data/myid
複製代碼
啓動 Zookeeper
: ./bin/zkServer.sh start
查看每臺服務器中,Zookeeper
狀態:./bin/zkServer.sh status
,結果分別以下:
Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower
Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: leader
Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower
複製代碼
能夠看到啓動模式,第一臺與第三臺爲follower
,而第二臺爲leader
注意:Zookeeper
集羣規模,機器數量只能是奇數個,在三臺機器集羣的狀況下,最多隻能掛掉其中一臺,若是主節點掛掉,剩下兩臺服務會從新選舉一臺做爲主節點。
Zookeeper
啓動失敗,能夠在./zookeeper.out
文件查看異常日誌myid
中內容爲服務的惟一標識,不能重複ping
通,必要時請先關閉防火牆ip
進行配置Zookeeper
集羣機器數量只能是奇數個,詳見 www.cnblogs.com/LeeScofiled…ps:關於須要用到的工具,可在公衆號「張少林同窗」回覆Java工具
獲取網盤下載連接
記錄一波Zookeeper
搭建過程,後續會不按期更新原創文章,歡迎關注公衆號 「張少林同窗」!