zookeeper 集群安装和配置
zookeeper 集群安装和配置
先主要介绍一下zoo.cfg的基本配置。
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data dataLogDir=/datalog clientPort=2181 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883
配置的基本信息
tickTime=2000:毫秒级的基本时间单位,其他时间如心跳/超时等都为该单位时间的整数倍;
initLimit=10:tickTime的倍数,表示leader选举结束后,followers与leader同步需要的时间,leader的数据非常多时或followers比较多,则该值应该适当大一些;
syncLimit=5:tickTime的倍数,表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,正常请求转发或ping等消息交互时的超时时间。
clientPort=2181:监听客户端连接的服务端口
electionAlg=3:领导选举算法,默认3。(No Java system property)
dataDir=/data:内存数据库快照地址,事务日志地址(除非由 dataLogDir 另行指定)
dataLogDir=/datalog:事务日志目录,可以使用专用的设备,以避免事务日志与快照之间的竞争。
server.x=[hostname]:nnnnn[:nnnnn], etc
集群配置中,在dataDir目录下必须有一个myid文件,其中的值就是数字x,范围是1-255。第一个nnnnn是与leader通讯使用,第二个nnnnn是选举leader使用,electionAlg等于0时不需要此参数。(No Java system property)
在一台机器上开启zookeeper的三个实例,其实就是一个伪集群。集群中的三个配置为:
zookeeper实例一:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zookeeper-3.4.6-1/data dataLogDir=/zookeeper-3.4.6-1/datalog clientPort=2181 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883
zookeeper实例二:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zookeeper-3.4.6-2/data dataLogDir=/zookeeper-3.4.6-2/datalog clientPort=2182 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883
zookeeper实例三:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zookeeper-3.4.6-3/data dataLogDir=/zookeeper-3.4.6-3/datalog clientPort=2183 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883
其中,
dataDir=/zookeeper-3.4.6-1/data dataLogDir=/zookeeper-3.4.6-1/datalog
该目录为其实例所在的目录下。
最后别忘了在dataDir配置的目录下建立myid文件。好了,集群基本就配置完了。
最后启动每个zookeeper实例。
如下图三个zookeeper实例启动后的状态:
打开任何一个客户端,建立znode,如下,
[zk: localhost:2181(CONNECTED) 3] create /zk_test mydata Created /zk_test [zk: localhost:2181(CONNECTED) 4] get /zk_test mydata cZxid = 0x600000004 ctime = Mon Mar 16 17:51:58 CST 2015 mZxid = 0x600000004 mtime = Mon Mar 16 17:51:58 CST 2015 pZxid = 0x600000004 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0 [zk: localhost:2181(CONNECTED) 5]
打开另一个客户端,如下,
[zk: localhost:2181(CONNECTED) 1] get /zk_test mydata cZxid = 0x600000004 ctime = Mon Mar 16 17:51:58 CST 2015 mZxid = 0x600000004 mtime = Mon Mar 16 17:51:58 CST 2015 pZxid = 0x600000004 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0 [zk: localhost:2181(CONNECTED) 2] ls / [mynode, zookeeper, zk_test] [zk: localhost:2181(CONNECTED) 3]
一个集群就搭建好了。
参考:http://ibruce.info/2014/10/23/zookeeper/
http://greemranqq.iteye.com/blog/2171449
http://www.cnblogs.com/yuyijq/p/3438829.html
==================================END==================================