zookeeper集群配置说明以及window单台机器集群搭建
zk tar.gz 目錄:
在src/main 下面的源碼是zk 服務端和客戶端的源碼!!!不過在服務運行起來的時候,服務是調用圖中根目錄下的zookeeper.jar.
在集群模式下,所有的zk進程可以使用相同的配置文件(是指各個zk進程部署在不同的機器上面),例如如下配置:
tickTime=2000 dataDir=/home/myname/zookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=192.168.229.160:2888:3888 server.2=192.168.229.161:2888:3888 server.3=192.168.229.162:2888:3888- initLimit?
ZooKeeper集群模式下包含多個zk進程,其中一個進程為leader,余下的進程為follower。?
當follower最初與leader建立連接時,它們之間會傳輸相當多的數據,尤其是follower的數據落后leader很多。initLimit配置follower與leader之間建立連接后進行同步的最長時間。 - syncLimit?
配置follower和leader之間發送消息,請求和應答的最大時間長度。 - tickTime?
tickTime則是上述兩個超時配置的基本單位,例如對于initLimit,其配置值為5,說明其超時時間為 2000ms * 5 = 10秒。 - server.id=host:port1:port2?
其中id為一個數字,表示zk進程的id,這個id也是dataDir目錄下myid文件的內容。?
host是該zk進程所在的IP地址,port1表示follower和leader交換消息所使用的端口,port2表示選舉leader所使用的端口。 - dataDir?
其配置的含義跟單機模式下的含義類似,不同的是集群模式下還有一個myid文件。myid文件的內容只有一行,且內容只能為1 - 255之間的數字,這個數字亦即上面介紹server.id中的id,表示zk進程的id。
注意?
如果僅為了測試部署集群模式而在同一臺機器上部署zk進程,server.id=host:port1:port2配置中的port參數必須不同。但是,為了減少機器宕機的風險,強烈建議在部署集群模式時,將zk進程部署不同的物理機器上面。
準備啟動:
假如我們打算在三臺不同的機器 192.168.229.160,192.168.229.161,192.168.229.162上各部署一個zk進程,以構成一個zk集群。?
三個zk進程均使用相同的 zoo.cfg 配置:
在三臺機器dataDir目錄( /home/myname/zookeeper 目錄)下,分別生成一個myid文件,其內容分別為1,2,3。然后分別在這三臺機器上啟動zk進程,這樣我們便將zk集群啟動了起來。
連接zk集群:
可以使用以下命令來連接一個zk集群:
bin/zkCli.sh -server 192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181通過client連接zk:
2016-06-28 19:29:18,074 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@770537e4 Welcome to ZooKeeper! 2016-06-28 19:29:18,146 [myid:] - INFO [main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@975] - Opening socket connection to server 192.168.229.162/192.168.229.162:2181. Will not attempt to authenticate using SASL (unknown error) JLine support is enabled 2016-06-28 19:29:18,161 [myid:] - INFO [main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@852] - Socket connection established to 192.168.229.162/192.168.229.162:2181, initiating session 2016-06-28 19:29:18,199 [myid:] - INFO [main-SendThread(192.168.229.162:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server 192.168.229.162/192.168.229.162:2181, sessionid = 0x3557c39d2810029, negotiated timeout = 30000WATCHER::WatchedEvent state:SyncConnected type:None path:null [zk: 192.168.229.160:2181,192.168.229.161:2181,192.168.229.162:2181(CONNECTED) 0]最終連接的192.168.229.162機器上
--------------------------------------------------------------動手實踐-----------------------------------------------------------------
將服務copy 三份,修改配置:
(1)在D:/zk/data下面創建三個目錄data1,data2,和data3,并在這三個目錄下面分別建一個myid文件,分別對應寫入1,2,3。?
(2) 將zookeeper-1/conf/zoo.cfg中的dataDir改為dataDir=D:/zk/data/data1,并在文件末尾追加:?
server.1=127.0.0.1:2887:3887?
server.2=127.0.0.1:2888:3888?
server.3=127.0.0.1:2889:3889?
zookeeper-2和zookeeper-3改動如下:?
zookeeper-2/conf/zoo.cfg中的dataDir改為dataDir=D:/zk/data/data2?
zookeeper-3/conf/zoo.cfg中的dataDir改為dataDir=D:/zk/data/data3?
zookeeper-2/conf/zoo.cfg中的clientPort改為2182?
zookeeper-2/conf/zoo.cfg中的clientPort改為2183?
zookeeper-2和zookeeper-3都在zoo.cfg后追加上面的代碼塊。?
每個服務下面 啟動:
bin/zkServer.cmd看下 tmp/zookeeper/data
兩個文件中的文本都是“1”,3.4版本的zk 不是生成myid 文件
后天進程信息:
啟動一個zk 進程服務占空間大小100M左右:
總結
以上是生活随笔為你收集整理的zookeeper集群配置说明以及window单台机器集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入浅出Oracle:Redo的作用
- 下一篇: 西游释厄传如何设置简化出招表