Apache ZooKeeper - 高可用ZK集群模式搭建与运维
生活随笔
收集整理的這篇文章主要介紹了
Apache ZooKeeper - 高可用ZK集群模式搭建与运维
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 環境信息
- JDK
- 總覽
- 集群架構及角色解讀
- 安裝目錄
- 部署十步曲
- 配置文件
- node1
- node2
- node3
- node4(Observer節點)
- 配置參數解讀
- myid 節點唯一標示
- 啟動節點
- 節點狀態查看
- 結
環境信息
| OS | CentOS7 |
| ZK Version | 3.5.8 |
| JDK Version | 1.8 + (1.7以上即可) |
| IP Info | 192.168.126.133 |
其實我就一臺Server …
偽集群 … 【其實和在多臺部署上是一樣一樣的,我也木有這么多server~】
JDK
ZK Java編寫的,當然少不了JDK了 ~
[root@localhost conf]# java -version openjdk version "c.0_262" OpenJDK Runtime Environment (build 1.8.0_262-b10) OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode) [root@localhost conf]#總覽
集群架構及角色解讀
-
Leader: 處理所有的事務請求(讀+寫請求),集群中只能有一個Leader
-
Follower:只能處理讀請求,同時參與選舉 。 作為 Leader的候選節點,如果Leader宕機,Follower節點要參與到新的Leader選舉中,有可能成為新的Leader節點
-
Observer:只能處理讀請求,不參與選舉
安裝目錄
部署十步曲
- Step1:配置JAVA環境
- Step2:下載并解壓zookeeper
- Step3:copy zoo_sample.cfg文件zoo1.cfg
- Step4:修改配置文件zoo-1.cfg
- Step5: 復制三zoo1.cfg ,分別為zoo2.cfg,zoo3.cfg ,zoo4.cfg,修改dataDir和clientPort (如果是同一主機確保在同一主機上不同即可)
- Step6: 標識Server ID , 創建四個文件夾${ZK_HOME}/data/zk1,${ZK_HOME}/data/zk2,${ZK_HOME}/data/zk3,${ZK_HOME}/data/zk4,在每個目錄中創建文件myid 文件,寫入當前實例的server id,即1,2,3,4
- Step7: 啟動4個節點 ./bin/zkServer.sh start ./conf/zoo1.cfg ./bin/zkServer.sh start ./conf/zoo2.cfg ./bin/zkServer.sh start ./conf/zoo3.cfg ./bin/zkServer.sh start ./conf/zoo4.cfg
- Step8: 檢測集群狀態 ./bin/zkServer.sh status ./conf/zoo1.cfg ./bin/zkServer.sh status ./conf/zoo2.cfg ./bin/zkServer.sh status ./conf/zoo3.cfg ./bin/zkServer.sh status ./conf/zoo4.cfg
- Step9: 客戶端連接 ./zkCli.sh -server 192.168.126.133:2181,192.168.126.133:2182,192.168.126.133:2183,192.168.126.133:2184
- Step10: 查看集群配置
下面看下細節
配置文件
node1
[root@localhost conf]# cat zoo1.cfg | grep -v "#" tickTime=2000 initLimit=10 syncLimit=5 dataDir=/root/zkcluster/zk3.5.8Cluster/data/zk1 clientPort=2181 server.1=192.168.126.133:2188:3188 server.2=192.168.126.133:2189:3189 server.3=192.168.126.133:2190:3190 server.4=192.168.126.133:2191:3191:observernode2
[root@localhost conf]# cat zoo2.cfg | grep -v "#" tickTime=2000 initLimit=10 syncLimit=5 dataDir=/root/zkcluster/zk3.5.8Cluster/data/zk2 clientPort=2182 server.1=192.168.126.133:2188:3188 server.2=192.168.126.133:2189:3189 server.3=192.168.126.133:2190:3190 server.4=192.168.126.133:2191:3191:observernode3
[root@localhost conf]# cat zoo3.cfg | grep -v "#" tickTime=2000 initLimit=10 syncLimit=5 dataDir=/root/zkcluster/zk3.5.8Cluster/data/zk3 clientPort=2183 server.1=192.168.126.133:2188:3188 server.2=192.168.126.133:2189:3189 server.3=192.168.126.133:2190:3190 server.4=192.168.126.133:2191:3191:observernode4(Observer節點)
[root@localhost conf]# cat zoo4.cfg | grep -v "#" tickTime=2000 initLimit=10 syncLimit=5 dataDir=/root/zkcluster/zk3.5.8Cluster/data/zk4 clientPort=2184 server.1=192.168.126.133:2188:3188 server.2=192.168.126.133:2189:3189 server.3=192.168.126.133:2190:3190 server.4=192.168.126.133:2191:3191:observer配置參數解讀
- tickTime:用于配置Zookeeper中最小時間單位的長度,很多運行時的時間間隔都是使用tickTime的倍數來表示的
- initLimit:用于配置Leader服務器等待Follower啟動,并完成數據同步的時間。Follower服務器再啟動過程中,會與Leader建立連接并完成數據的同步,從而確定自己對外提供服務的起始狀態。Leader服務器允許Follower在initLimit 時間內完成這個工作
- syncLimit:Leader 與Follower心跳檢測的最大延時時間
- dataDir:Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日志文件也保存在這個目錄里
- dataLogDir: Zookeeper服務器存儲事務日志的目錄,默認為dataDir
- clientPort:客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求\
- server.A=B:C:D:E
myid 節點唯一標示
4個節點的myid信息如下
啟動節點
[root@localhost conf]# pwd /root/zkcluster/zk3.5.8Cluster/conf [root@localhost conf]# [root@localhost conf]# [root@localhost conf]# [root@localhost conf]# [root@localhost conf]# [root@localhost conf]# [root@localhost conf]# ../bin/zkServer.sh start ./zoo1.cfg /usr/bin/java ZooKeeper JMX enabled by default Using config: ./zoo1.cfg Starting zookeeper ... STARTED [root@localhost conf]# ../bin/zkServer.sh start ./zoo2.cfg /usr/bin/java ZooKeeper JMX enabled by default Using config: ./zoo2.cfg Starting zookeeper ... STARTED [root@localhost conf]# ../bin/zkServer.sh start ./zoo3.cfg /usr/bin/java ZooKeeper JMX enabled by default Using config: ./zoo3.cfg Starting zookeeper ... STARTED [root@localhost conf]# ../bin/zkServer.sh start ./zoo4.cfg /usr/bin/java ZooKeeper JMX enabled by default Using config: ./zoo4.cfg Starting zookeeper ... STARTED [root@localhost conf]#節點狀態查看
[root@localhost conf]# ../bin/zkServer.sh status ./zoo1.cfg /usr/bin/java ZooKeeper JMX enabled by default Using config: ./zoo1.cfg Client port found: 2181. Client address: localhost. Mode: follower [root@localhost conf]# [root@localhost conf]# ../bin/zkServer.sh status ./zoo2.cfg /usr/bin/java ZooKeeper JMX enabled by default Using config: ./zoo2.cfg Client port found: 2182. Client address: localhost. Mode: leader [root@localhost conf]# ../bin/zkServer.sh status ./zoo3.cfg /usr/bin/java ZooKeeper JMX enabled by default Using config: ./zoo3.cfg Client port found: 2183. Client address: localhost. Mode: follower [root@localhost conf]# ../bin/zkServer.sh status ./zoo4.cfg /usr/bin/java ZooKeeper JMX enabled by default Using config: ./zoo4.cfg Client port found: 2184. Client address: localhost. Mode: observer [root@localhost conf]#或者使用客戶端連上server 查看
get /zookeeper/config
完事兒 一切正常 沒啦
結
行了就到這兒吧, 你也去搭建一套吧(別像我一樣,扣扣搜搜都在一臺server上)
總結
以上是生活随笔為你收集整理的Apache ZooKeeper - 高可用ZK集群模式搭建与运维的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache ZooKeeper - 使
- 下一篇: Apache ZooKeeper - 使