安裝和啟動zookeeper
要安裝和啟動zookeeper,請按照以下步驟進行操作。筆者使用的是3.4.5版本。
-
下載Zookeeper: 從apache Zookeeper官網下載最新版本:https://www.php.cn/link/b53f8d01835616293e994afe0ea01bdf
-
解壓文件: 下載完成后,解壓文件。解壓后,您將看到以下文件結構:
zookeeper-3.4.5 ├── bin ├── conf ├── contrib ├── docs ├── lib ├── src └── ...
其中,conf目錄包含Zookeeper的配置文件;bin目錄包含Zookeeper的服務端和客戶端啟動腳本;lib目錄存放Zookeeper依賴的第三方JAR包。
-
配置Zookeeper: 在conf目錄下,您會找到一個名為zoo_sample.cfg的文件。這是配置文件的示例。我們需要復制這個文件并重命名為zoo.cfg,因為zoo.cfg是Zookeeper啟動時使用的配置文件名。
zoo.cfg配置文件中包含以下主要參數:
tickTime=2000 # 心跳時間,單位為毫秒;默認會話的最小時間是該值的兩倍 initLimit=10 # 初始連接時間限制,為tickTime的10倍 syncLimit=5 # 同步時間限制,為tickTime的5倍,用于發起請求與獲得確認 dataDir=/tmp/zookeeper # 快照存儲目錄,/tmp只是一個示例,實際生產環境應使用有意義的命名 clientPort=2181 # 客戶端連接端口
-
啟動Zookeeper: 要啟動Zookeeper,執行bin目錄下的啟動腳本。對于windows環境,使用zkServer.cmd;對于其他環境,使用zkServer.sh。這樣,一個單機版的Zookeeper服務器就啟動了。默認情況下,zkCli.cmd會連接到本地的Zookeeper服務器。
-
配置Zookeeper集群: 對于單機環境下的Zookeeper集群配置,官方文檔提供了一個簡單的示例。在zoo.cfg中添加以下集群配置:
# 偽集群設置 # 第一個端口是節點間通信端口,用于連接follower和leader # 當新的leader誕生時,follower會使用這個端口(例如2888)打開一個TCP連接到leader # 由于leader選舉也使用TCP,因此需要另一個端口(例如3888)用于選舉 server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
這里的1、2、3是集群節點的server ID,zoo1到zoo3是節點的IP地址。
-
設置集群配置:
-
在zoo.cfg中添加集群配置:
server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890
-
復制Zookeeper目錄到同級目錄,并重命名,例如:
-
修改每個節點的zoo.cfg配置:
-
指定每個節點的存儲目錄:
例如,第二個節點的配置可以是dataDir=E:111softwareszookeeper-3.4.5zookeeper-3.4.5.2oyyzookeeper。
-
在每個節點的dataDir指定的目錄中創建一個myid文件,文件內容僅包含該節點的server ID。例如,第一個節點的myid文件內容應為1。
-
-
啟動集群: 分別啟動三個Zookeeper服務。啟動后,查看日志輸出以確認每個服務的角色(FOLLOWER或LEADER)。例如:
2018-09-13 09:46:27,928 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:ZooKeeperServer@162] - Created server with tickTime 6000 minSessionTimeout 12000 maxSessionTimeout 120000 datadir E:Isoftwareszookeeper-3.4.5zookeeper-3.4.5oyyzookeeperersion-2 snapdir E:Isoftwareszookeeper-3.4.5zookeeper-3.4.5oyyzookeeperersion-2 2018-09-13 09:46:27,931 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Follower@63] - FOLLOWING - LEADER ELECTION TOOK - 303 2018-09-13 09:46:27,959 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Learner@325] - Getting a snapshot from leader
2018-09-13 09:45:40,225 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2183:ZooKeeperServer@162] - Created server with tickTime 6000 minSessionTimeout 12000 maxSessionTimeout 120000 datadir E:Isoftwareszookeeper-3.4.5zookeeper-3.4.5.3oyyzookeeperersion-2 snapdir E:Isoftwareszookeeper-3.4.5zookeeper-3.4.5.3oyyzookeeperersion-2 2018-09-13 09:45:40,241 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2183:Leader@345] - LEADING - LEADER ELECTION TOOK - 3276 2018-09-13 09:45:40,246 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2183:FileTxnSnapLog@240] - Snapshotting: 0x0 to E:Isoftwareszookeeper-3.4.5zookeeper-3.4.5.3oyyzookeeperersion-2snapshot.0 2018-09-13 09:45:40,262 [myid:3] - INFO [LearnerHandler-/127.0.0.1:62665:LearnerHandler@263] - Follower sid: 2 : info : org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer@e93d6562 2018-09-13 09:45:40,319 [myid:3] - INFO [LearnerHandler-/127.0.0.1:62665:LearnerHandler@318] - Synchronizing with Follower sid: 2 maxCommittedLog=0x0 minCommittedLog=0x0 peerLastZxid=0x0 2018-09-13 09:45:40,319 [myid:3] - INFO [LearnerHandler-/127.0.0.1:62665:LearnerHandler@395] - Sending DIFF
通過以上步驟,您可以成功安裝和啟動zookeeper,并在單機環境下配置和運行一個Zookeeper集群。