一.單機版
1.執行:wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
2. 解壓 :tar -zxvf zookeeper-3.4.10.tar.gz
3. 進入到剛剛解壓好的目錄中,創建兩個文件夾,分別是data和logs,如下:
4.進去conf文件夾:複製配置模板到zoo.cfg
cp zoo_sample.cfg zoo.cfg
5.編輯zoo.cfg
1.2888 端口號是zookeeper服務之間通信的端口
2.3888 是zookeeper 與其他應用程序通信的端口
3.initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶連接 Zookeeper服務器的客戶端,而是 Zookeeper 服務器集羣中連接到 Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器還沒有收到客戶端的返回信息,那麼表明這個客戶端連接失敗。總的時間長度就是 5*2000=10 秒。
4.syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 秒
5.如果是集羣環境需要配置這個:
server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的IP地址或/etc/hosts文件中映射了IP的主機名;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。如果是僞集羣的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。
6..在 dataDir=/opt/zookeeper-3.4.10/data下創建 myid文件 編輯myid文件,並在對應的IP的機器上輸入對應的編號。如在zookeeper上,myid文件內容就是1。如果只在單點上進行安裝配置,那麼只有一個server.1。如下:
7.在文件中增加zookeeper配置
vim /etc/profile
8.使配置生效
source /etc/profile
9.啓動服務
二、集羣版
1.先從當前這臺機器複製zookeeper到另一臺虛擬機上,然後修改zoo.cfg的clientPort分別爲2180和2181
2.加入環境變量,並source生效
3.分別啓動zookeeper,並使用zkCli.sh測試是否可以連接(注意:同一個機器,連接時需要指定ip和端口不然默認都是2181)
4.修改conf/zoo.cfg文件
server.1=192.168.213.128:2888:3888
server.2=192.168.213.129:2888:3888
server.3=192.168.213.129:2889:3889
5.修改myid文件,文件中的數字就是對應的zoo.cfg中的server後面的數字
6.關閉防火牆,這個會導致網絡不通
7.重啓三個zookeeper服務
bin/zkServer.sh start
8.檢查集羣狀態---bin/zkServer.sh status
一個leader, 2個follower,集羣搭建成功。
遇到的問題:
1在一個機器,2,3在另一個機器,2,3的防火牆沒關時,1啓動報錯
# /opt/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.