Linux下單機實現Zookeeper集群
阿新 • • 發佈:2019-03-17
ble html urg maximum creat 進行 inf his 交換
安裝配置JAVA開發環境
下載ZOOKEEPER
zookeeper下載地址
在下載的zookeeper目錄裏創建3個文件,zk1,zk2,zk3,用意存放每個集群的數據文件。
並在三個目錄下創建data和logs目錄
配置配置文件
將conf目錄下的zoo-sample.cfg 更改為zoo1.cfg , zoo2.cfg ,zoo3.cfg
配置如下
# The number of milliseconds of each tick # 心跳檢測時間 tickTime=2000 # The number of ticks that the initial # synchronization phase can take # 心跳檢測失敗最大次數 initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. # 內存數據庫保存的模糊快照的目錄,如果某個服務器為集群中的一臺,則id文件也保存在該目錄下 # 快照異步寫入,不會阻塞 dataDir= ../zk1/data dataLogDir= ../zk1/logs # the port at which the clients will connect # TCP監聽端口 clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 # server.myid=IP:PORT1;PORT2 #PORT1:服務器與集群中的LEADER服務器交換信息的端口 #PORT2:萬一集群中的LEADER掛了,需要一個端口來重新進行宣講 選出新的LEADER server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883
三個文件的區別是這三個配置
zoo1.cfg
dataDir= ../zk1/data
dataLogDir= ../zk1/logs
clientPort=2181
zoo2.cfg
dataDir= ../zk2/data
dataLogDir= ../zk2/logs
clientPort=2182
zoo3.cfg
dataDir= ../zk3/data dataLogDir= ../zk3/logs clientPort=2183
- tickTime: 基本事件單元,以毫秒為單位。這個時間是作為zookeeper服務器之間或客戶端與服務器間維持心跳的時間。也就是每隔tickTime時間就會發送一個心跳
- dataDir: 存儲內存中數據庫快照的位置,就是zookeeper保存數據的目錄,默認情況下,zookeeper將數據的日誌問也保存在這個目錄裏
- clientPort: 客戶端連接zookeeper服務器的端口,默認是2181,zookeeper會監聽這個端口,接收客戶端的訪問請求
- initLimit: 這個配置項是用來配置zookeeper接收客戶端初始化連接能忍受多少個心跳時間間隔數。當已經超過10個心跳的時間(tickTime)長度後,zookeeper服務器還沒有接收到客戶端的返回信息,那麽表明這個客戶端連接失敗。總的時間長度就是 10*2000 = 20 秒
- syncLimit: 這個配置項標識Leader和Follower之間發送消息,請求和應答的長度,最長不能超過多少個tickTime的時間長度,總的時間長度就是 5 * 2000 = 10秒
- server.myid=IP:Port1:Port2, myid是服務器的編號,一個正整數,一般是0、1、2、3等待,port1表示的是服務器與集群中的Leader服務器交換信息的端口,Port2表示的是萬一集群中的Leader服務器宕機了,需要一個端口來重新進行宣講,選出一個新的Leader,如果是不同的機器,可以選用相同的端口,由於本次測試是在單機上進行,因此選用不同的端口。
創建myid文件
在每個目錄下的data目錄裏創建 myid文件,文件內容分別為1,2,3.
啟動服務
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo1.cfg ZooKeeper JMX enabled by default Using config: ../conf/zoo1.cfg Starting zookeeper ... STARTED lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo2.cfg ZooKeeper JMX enabled by default Using config: ../conf/zoo2.cfg Starting zookeeper ... STARTED lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh start ../conf/zoo3.cfg ZooKeeper JMX enabled by default Using config: ../conf/zoo3.cfg Starting zookeeper ... STARTED
查看服務狀態
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo1.cfg ZooKeeper JMX enabled by default Using config: ../conf/zoo1.cfg Mode: follower
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo2.cfg ZooKeeper JMX enabled by default Using config: ../conf/zoo2.cfg Mode: leader
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkServer.sh status ../conf/zoo3.cfg ZooKeeper JMX enabled by default Using config: ../conf/zoo3.cfg Mode: follower
可以看到,ZK2選舉成為了leader,另外兩個為follower。
客戶端連接測試
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh -server 127.0.0.1:2181
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh -server 127.0.0.1:2182
lgj@lgj-Lenovo-G470:~/java/zookeeper-3.4.13/bin$ ./zkCli.sh -server 127.0.0.1:2183
分別連接三個集群節點
在任何一個集群節點進行操作,其他集群也會同步更新。
在zk2創建節點
[zk: 127.0.0.1:2182(CONNECTED) 1] create /test1 ""
Created /test1
在zk1查看節點
[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper, test1]
Linux下單機實現Zookeeper集群