在滴滴雲 DC2 雲伺服器上搭建 ZooKeeper 叢集實戰(一)
ZooKeeper 簡介
ZooKeeper 是一個高效的分散式協調服務,可以提供配置資訊管理、命名、分散式同步、叢集管理、資料庫切換等服務。
ZooKeeper 的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。它不適合用來儲存大量資訊,可以用來儲存一些配置、釋出與訂閱等少量資訊。
Hadoop、Storm、訊息中介軟體、RPC 服務框架、分散式資料庫同步系統,這些都是 ZooKeeper 的應用場景。
ZooKeeper 搭建
準備工作
1.硬體準備
根據 ZooKeeper 的選舉演算法,叢集搭建需要 2n+1 臺機器。我們在
本文選擇三臺廣州一區 1 核、1G 記憶體、40G 高效雲盤的通用型 DC2、一個 1M 的 EIP。
EIP 繫結其中的一臺 DC2,三臺機器通過內網連結。
2.軟體準備
本文選擇的是 CentOS7.5 映象。
確保這三臺機器安裝好 Java 環境,本文選擇的是 jdk1.8.0_191 版本。
ZooKeeper 單機版搭建
1.獲取 ZooKeeper
可以去 ZooKeeper 官網選擇版本下載, 本文選擇的是 ZooKeeper3.4.9 版本。由於本文選購的是 1M 頻寬的 EIP,所以載入速度略慢,耐心等待。
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
2.建立 ZooKeeper 目錄
此目錄為 ZooKeeper 解壓目錄:
sudo mkdir /zookeeper
3.解壓 ZooKeeper 至目標目錄
sudo tar -zxf zookeeper-3.4.9.tar.gz -C /zookeeper
4.進入 ZooKeeper 的目錄,建立 ZooKeeper 的資料目錄和日誌目錄
cd /zookeeper/zookeeper-3.4.9 mkdir data mkdir logs
5.配置檔案建立
進入 ZooKeeper 的配置檔案目錄,該目錄下自帶 sample 版本的配置檔案。建立zookeeper的配置檔案,本文以 sample 版本進行修改。
cd /zookeeper/zookeeper-3.4.9/conf
cp zoo_sample.cfg zoo.cfg
6.修改配置檔案
一個普通標題 | 一個普通標題 |
---|---|
tickTime | 心跳間隔時間 |
initLimit | 叢集中的follower伺服器(F)與leader伺服器(L)之間初始連線時能容忍的最多心跳數(tickTime的數量) |
syncLimit | 叢集中flower伺服器(F)跟leader(L)伺服器之間的請求和答應最多能容忍的心跳數 |
dataDir | 資料資訊 |
dataLogDir | 日誌資訊 |
clientPort | zookeeper對外暴露的埠 |
admin.serverPort | 管理控制檯埠 |
server.id=host:port:port | 叢集配置時,第一個埠是用於叢集節點間的通訊,比如接收更新資料的命令,特殊的使用場景是叢集的follower使用這個埠連線到leader;第二個埠用於叢集的leader選舉流程 |
對 zoo.cfg 檔案進行修改,如下圖進行配置修改:
7.啟動 ZooKeeper
sudo sh /zookeeper/zookeeper-3.4.9/bin/zkServer.sh start
檢視當前 ZooKeeper 狀態:
sh /zookeeper/zookeeper-3.4.9/bin/zkServer.sh status
如圖,當前的模式為 standalone。至此,ZooKeeper 單機版搭建完畢。
ZooKeeper 叢集版搭建
1.配置檔案修改
如單機版操作步驟相同,對三臺機器分配安裝 ZooKeeper。如下圖對三臺例項的配置檔案做修改。分別對應三臺例項的內網 IP。
2.myid 檔案
在 /zookeeper/zookeeper-3.4.9/data
目錄下建立文字檔案 myid,每個例項記錄當前機器安排的例項編號,即 server.{id}
中的 id
。
3.三臺機器分別執行如下命令
sudo sh /zookeeper/zookeeper-3.4.9/bin/zkServer.sh start
三臺機器中執行如下命令可看到對應例項的狀態。其中兩個例項的模式是 follower,一個例項的模式是 leader。
sh /zookeeper/zookeeper-3.4.9/bin/zkServer.sh status
至此,ZooKeeper 選舉完畢,可以對外提供服務。
總結
ZooKeeper 的搭建過程相對簡單,過程中遇到問題可以在 ZooKeeper.out 中檢視啟動日誌尋找解決辦法。
本文介紹了一個簡單的 ZooKeeper 叢集的搭建方法,更深層次的應用可檢視 ZooKeeper 官方文件。