前提
Zookeeper包含多个组件,有的组件支持多平台,有的组件只支持个别平台
Zookeeper需要运行在java虚拟机上,需要安装JDK 7及以上
下载
单服务器
配置文件
# Zookeeper的时间单位是以毫秒为单位的,该属性用来做心跳,最小的会话超时将是tickTime的两倍 tickTime=2000 # CS通信时限,tickTime的倍数 # 参数设定了允许所有跟随者与领导者进行连接并同步的时间,如果在设定的时间段内,半数以上的跟随者未能完成同步,领导者便会宣布放弃领导地位,进行另一次的领导选举 # 如果zk集群环境数量确实很大,同步数据的时间会变长,因此这种情况下可以适当调大该参数。默认为10 initLimit=10 # FL同步时限,tickTime的倍数 # 参数设定了允许一个跟随者与一个领导者进行同步的时间,如果在设定的时间段内,跟随者未完成同步,它将会被集群丢弃。所有关联到这个跟随者的客户端将连接到另外一个跟随着 syncLimit=5 # 存储内存数据库快照的位置,以及数据库更新的事务日志(除非另外指定) dataDir=/var/lib/zookeeper # 监听客户端连接的端口 clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1
启动
bin/zkServer.sh start
维护Zookeeper的存储
对于长时间运行的生产环境,Zookeeper的存储必须有外部管理(dataDir、logs)
连接Zookeeper
http://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_ConnectingToZooKeeper
Zookeeper集群化
tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
server.X列出构成ZooKeeper服务的服务器,当服务器启动时,它通过在数据目录中查找文件myid来知道它是集群中的哪个服务器,该文件包含服务器号,用ASCII表示
" 2888" and "3888":“2888”端口,节点连接其他节点将用到,该连接很有必要,这样才能保证各个节点之间的通讯,如协商更新操作的顺序,ZooKeeper服务器使用此端口将follower连接到leader,当新的leader出现时,follower使用这个端口打开到leader的TCP连接;"3888"端口,由于默认的leader选举也使用TCP,我们目前需要另一个端口进行leader选举,该端口将用到
进一步提升性能的操作
要获得较低的更新延迟,有一个专门的事务日志目录是很重要的。默认情况下,事务日志与数据快照和myid文件放在同一个目录中。dataLogDir参数表示事务日志存储的目录