zookeeper 叢集快速搭建
zookeeper穩定版下載地址 : http://apache.fayea.com/zookeeper/
這篇文章使用的是 zookeeper-3.4.12
首先將的伺服器的 ip 地址記錄下來 , 這裡我使用的是 4臺 伺服器
叢集的角色: leader 1臺 、follower 2臺、 observer 1臺
leader
leader是zookeeper叢集的核心。
- 事務請求的唯一排程者和處理者,保證叢集事務處理的順序性
- 叢集內部各個伺服器的排程者
follower
- 處理客戶端非事務請求,以及轉發事務請求給leader伺服器
- 參與事務請求提議(proposal)的投票(客戶端的一個事務請求,需要半數伺服器投票通過以後才能通知leader commit; leader會發起一個提案,要求follower投票)
- 參與leader選舉的投票
observer
觀察zookeeper叢集中最新狀態的變化並將這些狀態同步到observer伺服器上
增加observer不影響叢集中事務處理能力,同時還能提升叢集的非事務處理能力
下載 zookeeper 並解壓
進入 zookeeper 目錄 找到 conf 資料夾
進入 conf 資料夾 將 zoo_sample.cfg(官方提供模板檔案) 複製並重命名為 zoo.cfg
修改zoo.cfg
在最下面 將 4臺伺服器的ip地址 以 server.id=ip:port:port 的格式書寫
server.1=伺服器ip:2888:3181
2888 表示follower節點與leader節點交換資訊的埠號
3181 如果leader節點掛掉了, 需要一個埠來重新選舉
如果增加 observer 需要書寫成 server.id=ip:port:port:observer
並在 zoo.cfg 中增加配置 peerType=observer 這裡將第4臺伺服器 作為 observer
zoo.cfg配置檔案分析
tickTime=2000 zookeeper中最小的時間單位長度 (ms)
initLimit=10 follower節點啟動後與leader節點完成資料同步的時間
syncLimit=5 leader節點和follower節點進行心跳檢測的最大延時時間
dataDir=/tmp/zookeeper 表示zookeeper伺服器儲存快照檔案的目錄
dataLogDir 表示配置 zookeeper事務日誌的儲存路徑,預設指定在dataDir目錄下
clientPort 表示客戶端和服務端建立連線的埠號: 2181
接下來 使用 xftp (別的也可) 將修改好的 zookeeper 分別上傳到 4臺伺服器
zoo.cfg中有一個dataDir = /tmp/zookeeper
進入 $dataDir 所在的目錄 新建檔案 名為 myid 內容為 這臺伺服器的id
分別為4臺伺服器分配id 1,2,3,4
cd /tmp/zookeeper
vim myid
內容為 1/2/3/4 (id範圍1~255) 不可重複
編輯好id 之後儲存並退出
因為 id=4 的伺服器 為 observer 伺服器
所以我們需要在 id=4 的伺服器的 zookeeper存放目錄/zookeeper/conf/zoo.cfg 配置檔案中 加入配置 peerType=observer
這樣叢集的配置就完成了
接下來我們來啟動叢集
進入 zookeeper 目錄下的 bin 資料夾
如果檔案沒有變成 綠色高亮 代表未授權
可使用 chmod +x *.sh 命令進行授權
使用 sh zkServer.sh start 命令啟動zookeeper
使用 tail -f zookeeper.out 檢視日誌輸出
將4臺伺服器全部啟動 並檢視日誌 如沒有報錯 說明叢集啟動成功
然後 我們使用 sh zkServer status 命令檢視zookeeper 的執行狀態與所分配的角色 是否與我們所要配置的一致
myid=1 的 角色為 follower
myid=2 的 角色為 follower
myid=3 的 角色為 leader
myid=4 的 角色為 observer
與我們所要配置的一致 , 叢集搭建成功
如想使用java 操作 zookeeper 請參考我的另一片文章 https://blog.csdn.net/weixin_40461281/article/details/85337190