修改配置
復制conf/zoo_sample.cfg文件為conf/zoo.cfg,修改其中的數據目錄。
# cat /opt/apps/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=5 syncLimit=2 dataDir=/opt/zkdata clientPort=2181
相關配置如下:
- tickTime:這個時間作為Zookeeper服務器之間或者服務器與客戶端之間維護心跳的時間,時間單位毫秒。
- initLimit:選舉leader的初始延時。由于服務器啟動加載數據需要一定的時間(尤其是配置數據非常多),因此在選舉 Leader后立即同步數據前需要一定的時間來完成初始化。可以適當放大一點。延時時間為initLimit*tickTime,也即此數值為 tickTime的次數。
- syncLimit:此時間表示為Leader與Follower之間的最大響應時間單元,如果超時此時間(syncLimit*tickTime),那么Leader認為Follwer也即死掉,將從服務器列表中刪除。
如果是單機模式的話,那么只需要tickTime/dataDir/clientPort三個參數即可,這在單機調試環境很有效。
集群環境配置
增加其他機器的配置
# cat /opt/apps/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=5 syncLimit=2 dataDir=/opt/zkdata clientPort=2181 server.1=10.11.5.202:2888:3888 server.2=192.168.105.218:2888:3888 server.3=192.168.105.65:2888:3888
其中server.X的配置是每一個機器的相關參數。X代表唯一序號,例如1/2/3等,值是IP:PORT:PORT。其中IP是 zookeeper服務器的IP地址或者域名,第一個PORT(例如2888)是服務器之間交換數據的端口,也即Follower連接Leader的端 口,而第二個端口(例如3888)是各服務器選舉Leader的端口。單機配置集群的話可以通過不同的端口來實現。
同步文件目錄
# rsync --inplace -vzrtLp --delete-after --progress /opt/apps/zookeeper root@192.168.105.218:/opt/apps # rsync --inplace -vzrtLp --delete-after --progress /opt/apps/zookeeper root@192.168.106.65:/opt/apps
建立每一個服務器的id
注意,此id需要和zoo.cfg中的配置對應起來
ssh root@10.11.5.202 'echo 1 > /opt/zkdata/myid' ssh root@192.168.105.218 'echo 2 > /opt/zkdata/myid' ssh root@192.168.106.65 'echo 3 > /opt/zkdata/myid'
啟動服務器
ssh root@10.11.5.202 '/opt/apps/zookeeper/bin/zkServer.sh start' ssh root@192.168.105.218 '/opt/apps/zookeeper/bin/zkServer.sh start' ssh root@192.168.106.65 '/opt/apps/zookeeper/bin/zkServer.sh start'
防火墻配置
如果開啟了iptables防火墻,則需要在文件/etc/sysconfig/iptables文件下增加如下配置
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重啟防火墻:
service iptables restart