當前位置:
首頁 > 知識 > ZooKeeper集群安裝配置使用

ZooKeeper集群安裝配置使用

ZooKeeper集群安裝配置使用

ZooKeeper

ZooKeeper集群安裝配置使用

Apache

ZooKeeper集群安裝配置使用

CentOS6.8

單機版的安裝請參看我之前的文章《ZooKeeper單機版安裝配置——集群版後面再發》


1、伺服器說明

伺服器1:192.168.1.101;埠:2181,2881,3881

伺服器2:192.168.1.102;埠:2182,2882,3882

伺服器3:192.168.1.103;埠:2183,2882,3883


2、修改Host

使用root用戶,vi /etc/hosts,在每一台服務的Host配置文件里增加如下內容:


## zookeeper env

192.168.1.101 leo.dis1

192.168.1.102 leo.dis2

192.168.1.103 leo.dis3

3、下載、解壓縮、配置

具體參看《ZooKeeper單機版安裝配置》。注意以下更改:

1)分別將zookeeper目錄改為zk1、zk2、zk3。

2)zoo.cfg裡面clientPort要根據伺服器的不同設置為2181、2182、2183。

3)zoo.cfg裡面增加如下伺服器配置:


server.1=leo.dis1:2881:3881

server.2=leo.dis2:2882:3882

server.3=leo.dis3:2883:3883

4) 根據伺服器的不同,在data目錄下創建myid文件,內容為1、2、3

其他後續操作可參看《ZooKeeper單機版安裝配置》。


6、ZooKeeper選舉機制

ZooKeeper採用Fast Leader Election演算法。

ZooKeeper伺服器共有4個狀態:

LOOKING:尋找Leader狀態。

LEADING:領導者。

FOLLOWING:跟隨者。

OBSERVING:觀察者。

大致的過程就是:

1) 服務啟動之後,先選擇自己作為Leader,廣播通知其他伺服器,並等待接收其他伺服器的發送的選票。

2) 不停地接收其他伺服器發送的選票,根據ZXID和伺服器的ID更新自己的選票。

3) 直到某伺服器的選票過半數,設置為Leader,其他都是Follower。

4) 當Leader已經確定的情況下,新加入的伺服器也只能是Follower。

ZXID:ZooKeeper狀態的每一次改變(每一次請求), 都對應著一個遞增的Transaction id, 該id稱為zxid. 由於zxid的遞增性質, 如果zxid1小於zxid2, 那麼zxid1肯定先於zxid2發生. 創建任意節點, 或者更新任意節點的數據, 或者刪除任意節點, 都會導致Zookeeper狀態發生改變, 從而導致zxid的值增加。

初始狀態,大家的ZXID都一致,那就就選舉ID(myid裡面配置的數字)最大的。

假設有5台伺服器:


1)伺服器1啟動,此時只有它一台伺服器啟動了,它發出去的消息沒有任何響應,所以它的選舉狀態一直是LOOKING狀態。

2)伺服器2啟動,它與最開始啟動的伺服器1進行通信,互相交換自己的選舉結果,由於兩者都沒有歷史數據,所以id值較大的伺服器2勝出,但是由於沒有達到超過半數以上的伺服器都同意選舉它(半數以上是3),所以伺服器1,2還是繼續保持LOOKING狀態。

3)伺服器3啟動,根據前面的理論分析,伺服器3先選自己為Leader,伺服器1、2分別也選它為Leader(ID最大),所以它成為了這次選舉的leader。

4)伺服器4啟動,根據前面的分析,理論上伺服器4應該是伺服器1,2,3,4中最大的,但是由於前面已經有半數以上的伺服器選舉了伺服器3,所以它只能做Follower。

5)伺服器5啟動,同4一樣,當Follower。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

ZooKeeper單機版安裝配置——集群版後面再發
MySQL5.7主從複製
Keepalived+Nginx高可用安裝部署(含Nginx+Tomcat負載均衡)
Redis3.2.9單機版安裝
基於Redis的消息隊列之生產消費者模式(明天寫發布/訂閱模式)

TAG:Java個人學習心得 |

您可能感興趣

快速安裝與配置kubernetes集群搭建
使用Kubespray部署生產可用的Kubernetes集群
SpringCloud實現Eureka集群配置
redis單點、主從、哨兵sentinel,集群cluster配置使用
Docker Compose搭建MySQL主從複製集群
Docker環境下搭建DNS LVS(keepAlived) OpenResty伺服器簡易集群
docker zookeeper 集群搭建
如何使用Rancher 2.0在Kubernetes集群上部署Istio
多Kubernetes集群角色管理
如何在本地數據中心安裝Service Fabric for Windows集群
集群服務間通信之RoutingMesh
使用 Artifactory 集群作為文件共享中心
Docker簡單部署Ceph測試集群
如何在 Kubernetes 環境中運行 Spark 集群
Tomcat集群實現Session共享
ganglia集群版搭建(支持hadoop和spark)
基於Codis的Redis集群部署
tomcat集群和session共享
如何在Kubernetes中管理和操作Kafka集群
SpringCloud如何實現Eureka集群、HA機制?