Zookeeper簡單介紹
Zookeeper官方:ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。
Zookeeper單機模式搭建
環境:Centos 7、jdk1.8、zookeeper-3.4.10
- 下載 Zookeeper【Zookeeper官網】
- 解壓:
tar -zxvf zookeeper-3.4.10.tar.gz
- 進入 zookeeper-3.4.10/conf 目錄將 zoo_sample.cfg 檔名修改為 zoo.cfg:
mv zoo_sample.cfg zoo.cfg
- 進入 zookeeper-3.4.10/conf 目錄啟動 Zookeeper :
sh zkServer.sh start
- 驗證是否啟動成功:
sh zkServer.sh status
(最後一行出現 standalone 則成功) - 連線 Zookeeper
sh zkCli.sh
複製程式碼
Zookeeper叢集模式搭建
- 修改 zoo.cfg 檔案,在 zoo.cfg 檔案中新增如下配置:
### server.A=B:C:D
### A:第幾號伺服器,B:服務IP,C:leader 和 follower 通訊埠,D:備用 leader 埠
server.1=192.168.43.200:2188:2888
server.2=192.168.43.201:2188:2888
server.3=192.168.43.202:2188:2888
複製程式碼
- 將 zookeeper 拷貝到另外兩臺機器
scp -r zookeeper-3.4.10/ root@192.168.43.201:/tools
scp -r zookeeper-3.4.10/ root@192.168.43.202:/tools
複製程式碼
- 設定 myid 檔案,告訴 Zookeeper 當前是哪一臺伺服器
### 設定 1 號伺服器
echo "1" >/tmp/zookeeper/myid
### 設定 2 號伺服器
echo "2" >/tmp/zookeeper/myid
### 設定 3 號伺服器
echo "3" >/tmp/zookeeper/myid
複製程式碼
- 順序啟動這三個 Zookeeper 伺服器
- 驗證啟動是否成功,列印日誌最後一行出現 leader 或 follower 則啟動成功
- 連線 Zookeeper 服務
sh zkCli.sh -server 192.168.43.201:2181,192.168.43.200:2181,192.168.43.202:2181
複製程式碼
Zookeeper叢集角色介紹
- Leader: ZooKeeper叢集的主節點,負責響應所有對ZooKeeper狀態變更的請求。會將每個狀態更新請求進行排序和編號,以便保證整個叢集內部訊息處理的FIFO,寫操作都走 leader,ZK中只有一個 leader
- Follower : Followe響應本伺服器上的讀請求外,處理leader的提議,leader提交該提議時在本地也進行提交。 注意: leader 和follower 構成ZooKeeper叢集的法定人數,也就是說,只有他們才參與新leader的選舉、響應leader的提議。 幫助leader處理讀請求,有投票權選舉 leader。
- Observer : 提高讀取吞吐量。observer 不需要將事務持久化到磁碟,若 observer 被重啟,需要 leader 重新同步整個名字空間。 沒有投票權利(因為 observer 不屬於法定人數),只可以處理讀請求