step 1:
下载zookeeper :从http://zookeeper.apache.org找一个稳定版下载,例如:zookeeper-3.4.8.tar.gz
(http://apache.fayea.com/zookeeper/)
step2:
建3个集群的目录:zk0, zk1, zk2.
把zookeeper-3.4.8.tar.gz 解压复制3份到每个节点下
step3:
修改配置文件 /zk0/conf/zoo.cfg
tickTime=2000 initLimit=5 syncLimit=2 dataDir=d:/tmp/cluster0 dataLogDir=d:/tmp/cluster0/logs clientPort=4180 server.0=127.0.0.1:8880:7770 server.1=127.0.0.1:8881:7771 server.2=127.0.0.1:8882:7772dataLogDir可以不配置,默认放在dataDir下。
clientPort 故名思义客端连接的端口,由于物理PC,每个节点配置一个,否则会出现端口已占用异常。
其它2个节点的配置 省略
step4:
在step3配置 的${dataDir} 目录下为每个节点建myid文件,内容为对应server的编号,zk0节点下的为0.
step5:
启动zk,
命令行模式进入zk0/bin/ ,输入:
这时有warn并抛出异常,内容是连接另2个节点连接不上,可以忽略,把另2个节点依照此法逐个启动。
zk0不再报异常。
step6:
测试集群
>zkCli -server 127.0.0.1:4182
连接第3个节点
连接zk1.
zk0:
同步成功。
备注:常用命令
启动ZK
zkServer
连接client
zkCli -server 127.0.0.1:4182
client 命令:
create /test "test"
get /test
set /test "test"
delete /test
后记:
1.无论哪个节点做事务操作,各个节点都会更新。
2.
昨天才弄的zookeeper,不知道怎么查看哪个是Leader,哪位同学知道可以回复,多谢.
但应该是样:
启动顺序zk0,zk1,zk2. Leader 是zk1.
启动顺序是zk1,zk2,zk0,Leader是zk2.
启动顺序是zk2,zk1,zk0,Leader是zk2.
为什么呢? ZK的election是有规则的:(1) TXid 最大 (2) 节点ID最大。