集群部署
192.168.38.6 zk01
192.168.38.7 zk02
192.168.38.8 zk03
安裝zookeeper,必須安裝jdk。
1.下載
$ cd /usr/local $ wget http://111.0.93.35/mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
2.解壓並重命名
$ tar -zxvf zookeeper-3.4.14.tar.gz $ mv /usr/local/zookeeper-3.4.14 /usr/local/zookeeper
3.文件配置
(1)在每個節點都創建data目錄和logs目錄
$ mkdir /home/zookeeper/data $ mkdir /home/zookeeper/logs
(2)在每個節點的 data目錄下創建 myid文件,並輸入內容 1/2/3 ;節點zk01的內容為1,節點zk02的內容為2,節點zk03的內容為3
myid(節點zk01)
#這里只有一個數字1 1
myid(節點zk02)
#這里只有一個數字2 2
myid(節點zk03)
#這里只有一個數字3 3
(3)復制zoo_sample.cfg,並編輯zoo.cfg文件
$ cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg $ vim /usr/local/conf/zoo.cfg
zoo.cfg(節點zk01)
dataDir=/home/zookeeper/data dataLogDir=/home/zookeeper/logs clientPort=2181 server.1=192.168.38.6:2881:3881 server.2=192.168.38.7:2881:3881 server.3=192.168.38.8:2881:3881
zoo.cfg(節點zk02)
dataDir=/home/zookeeper/data dataLogDir=/home/zookeeper/logs clientPort=2182 server.1=192.168.38.6:2881:3881 server.2=192.168.38.7:2881:3881 server.3=192.168.38.8:2881:3881
zoo.cfg(節點zk03)
dataDir=/home/zookeeper/data dataLogDir=/home/zookeeper/logs clientPort=2183 server.1=192.168.38.6:2881:3881 server.2=192.168.38.7:2881:3881 server.3=192.168.38.8:2881:3881
說明:
- 上面的myid 1 2 3 分別對應 配置文件server.1 server.2 server.3,並且不能有空格或空行;
- serverid的范圍為1~255,且不可以重復;也就是說zookeeper集群中最多可安裝255個節點;
- 2881為“選主端口”,3881為“通信端口”;
- zookeeper 集群中節點並不是越多越好,越多性能越低。生產環境中最佳集群節點個數為 7~15 個
4.關閉防火牆
$ systemctl stop firewalld
5.啟動zookeeper
在每一個節點上執行如下命令:
$ /usr/local/zookeeper/bin/zkServer.sh start
6.查看zookeeper狀態
$ /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower
leader:主
follower:從
常見錯誤:
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
可能有以下幾個原因:
第一,zoo.cfg文件配置出錯:dataLogDir指定的目錄未被創建;
第二,myid文件中的整數格式不對,或者與zoo.cfg中的server整數不對應
第三,防火牆未關閉;
第四,2181端口被占用;
第五,zoo.cfg文件中主機名出錯;
第六,hosts文件中,本機的主機名有兩個對應,只需保留主機名和ip地址的映射