环境准备
- 至少三台 Java 运行环境服务器(方便演示,本文同台机器不同端口)
- ZooKeeper 部署包(演示版本:3.4.13)
- SSH 工具
解压部署包
解压部署包,拷贝至不同服务器,演示目录如下;
- zk_1
- zk_2
- zk_3
编辑配置文件
配置文件路径:$ZK_HOME/conf/zoo.cfg
依次修改 dataDir、clientPort 和 server 集群的配置,以 zk_1 为示例:
……
dataDir=/caojiantao/zk_1/data
clientPort=2181
server.1=192.168.43.128:2281:2381
server.2=192.168.43.128:2282:2382
server.3=192.168.43.128:2283:2383
……
注:server.${myid}=${ip}:${clusterPort}:${electionPort},myid 指集群中节点的唯一标识,ip 指节点的 ip,clusterPort 用于集群节点之间相互通信的端口号,electionPort 是在 leader 选举时特定的端口号。
根据上述配置的节点 myid,在各自对应的 dataDir 下创建 myid 文件,写入对应的唯一标识值,以 zk_1 为示例;
/caojiantao/zk_1/data/myid
1
启动服务
依次启动 zk_1、zk_2 和 zk_3 服务,演示需要,使用前台启动;
./zkServer.sh start-foreground
生产环境采用 start 后台启动方式。
注意赋予脚本可执行权限。
在启动前几个节点时,由于集群节点未完全启动,会出现 Connection refused。待集群所有节点都已启动成功,错误提示会自动停止。
连接测试
集群连接命令;
./zkCli.sh -server 192.168.43.128:2181,192.168.43.128:2182,192.168.43.128:2183
连接成功,执行任何命令结果都会同步至每一个集群节点。节点宕机不超过一半也不会影响集群效果,宕机重连任然会同步最新数据。
网友评论