修改配置
复制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