筆記6:zookeeper偽叢集模式雲伺服器搭建
-
clientPort端⼝
如果在1臺機器上部署多個server,那麼每臺機器都要不同的 clientPort,⽐如 server1是2181,server2 是2182,server3是2183 -
dataDir和dataLogDir
dataDir和dataLogDir也需要區分下,將資料⽂件和⽇志⽂件分開存放,同時每個server的這兩變數所對應的路徑都是不同的 -
server.X和myid
server.X 這個數字就是對應,data/myid中的數字。在3個server的myid⽂件中分別寫⼊了1,2,3,那 麼每個server中的zoo.cfg都配 server.1 server.2,server.3就⾏了。因為在同⼀臺機器上,後⾯連著的2 個端⼝,3個server都不要⼀樣,否則端⼝衝突 -
建立⽬錄zkcluster
mkdir zkcluster
-
解壓 zookeeper-x.x.xx.tar.gz到zkcluster⽬錄下
tar -zxvf zookeeper-3.6.2.tar.gz
-
改變名稱
mv zookeeper-3.6.2 zookeeper01
-
複製並改名
cp -r zookeeper01/ zookeeper02 cp -r zookeeper01/ zookeeper03
-
分別在zookeeper01、zookeeper02、zookeeper03⽬錄下建立data及logs⽬錄
mkdir data cd data mkdir logs
-
修改配置⽂件名稱
cd conf mv zoo_sample.cfg zoo.cfg
-
配置每⼀個Zookeeper 的dataDir(zoo.cfg) clientPort 分別為2181 2182 2183
clientPort=2181 dataDir=/usr/local/zkcluster/zookeeper01/data dataLogDir=/usr/local/zkcluster/zookeeper01/data/logs
clientPort=2182 dataDir=/usr/local/zkcluster/zookeeper02/data dataLogDir=/usr/local/zkcluster/zookeeper02/data/logs
clientPort=2183 dataDir=/usr/local/zkcluster/zookeeper03/data dataLogDir=/usr/local/zkcluster/zookeeper03/data/logs
-
配置叢集
(1)在每個zookeeper的 data ⽬錄下建立⼀個 myid ⽂件,內容分別是1、2、3 。這個⽂件就是記錄每個伺服器的IDtouch myid
(2)在每⼀個zookeeper 的 zoo.cfg配置客戶端訪問端⼝(clientPort)和叢集伺服器IP列表。
server.1=121.4.55.123:2881:3881 server.2=121.4.55.123:2882:3882 server.3=121.4.55.123:2883:3883 quorumListenOnAllIPs=true
- server.伺服器ID=伺服器IP地址:伺服器之間通訊端⼝:伺服器之間投票選舉端⼝。
- quorumListenOnAllIPs=true: 在雲伺服器(阿里雲、騰訊雲)上部署Zookeeper叢集模式時要加,
否則會報錯:Error contacting service. It is probably not running. - quorumListenOnAllIPs=true這個引數潛在的問題:主要是會影響ZAB協議和FastLeaderElection協議。
官網原文如下
quorumListenOnAllIPs
When set to true the ZooKeeper server will listen for connections from its peers on all available IP addresses, and not only the address configured in the server list of the configuration file. It affects the connections handling the ZAB protocol and the Fast Leader Election protocol. Default value is false -
啟動成功
zookeeper01:
zookeeper02:
zookeeper03: