客户端如何连接zookeeper集群 zookeeper连接数配置
转载
软件环境
ZooKeeper Server是一个Java语言实现的分布式协调服务框架,需要JDK 6或更高版本的支持。
集群配置
集群的数量建议是2*n+1。因为zookeeper集群中只要有超过一半的机器是正常工作的,那么整个集群对外就是可用的,正是基于这个特性,建议是将集群的机器数量控制为奇数较为合适。
服务搭建
- 部署jdk环境;
- 设置合理的jvm参数(集群部署完成后压测);
- 下载最新的稳定版本zookeeper,规划部署位置(主程序、配置文件、日志文件);
- 参数配置,配置文件zoo.cfg的主要参数:
tickTime=2000 #ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime。这也是ZK确认服务的心跳间隔。
initLimit=10 #Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在initLimit时间内完成这个工作。如果ZK集群的数据量确实很大了,有必要适当调大这个参数。
syncLimit=5 #在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。
dataDir= /opt/zookeeper/zkdata #存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。
dataLogDir= /opt/zookeeper/zkdatalog #事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能。
clientPort=2181 #客户端连接server的端口,默认2181。
server.1=zoo1:2888:3888 #server.id中的id必须与myid文件中的id是一致的,id的范围是1~255。右边可以配置两个端口,第一个端口用于F和L之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信。
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
|
创建myid文件:每个server上执行echo "id" > /opt/zookeeper/zkdata/myid
ZK的日志配置由log4j.properties管理
zk的配置文件在每台服务器上都是一样的,只需要配置一份由git统一管理。
- 启动并检查服务状态:
进入主程序目录执行启动命令: ./zkServer.sh start
状态检查: ./zkServer.sh status - zk日志清理策略:
zookeeper不会主动的清除旧的快照和日志文件(从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,在zoo.cfg中配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理)。
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。