Zookeeper 集群搭建
在一台虚拟机内创建三个zookeeper实例
复制配置文件
cd {zookeeperurl}/conf/
> cp zoo.cfg zoo1.cfg
> cp zoo.cfg zoo2.cfg
> cp zoo.cfg zoo3.cfg
{zookeeperurl}表示zookeeper的安装路径,比如我的是"/data/zookeeper/apache-zookeeper-3.6.3-bin/"
创建数据以及日志文件目录
> mkdir -p /data/zookeeper/data_1
> mkdir -p /data/zookeeper/data_2
> mkdir -p /data/zookeeper/data_3
> mkdir -p /data/zookeeper/logs_1
> mkdir -p /data/zookeeper/logs_2
> mkdir -p /data/zookeeper/logs_3
创建myid文件
> echo "1" > /data/zookeeper/data_1/myid
> echo "2" > /data/zookeeper/data_2/myid
> echo "3" > /data/zookeeper/data_3/myid
修改配置文件
zoo1.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data_1
clientPort=2181
dataLogDir=/data/zookeeper/logs_1
# server.x中的x和myid中的一致,第一个端口用户Leader和Learner之间的同步,第二个端口用于选举过程中的投票通信
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zoo2.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data_2
clientPort=2182
dataLogDir=/data/zookeeper/logs_2
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zoo3.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data_3
clientPort=2183
dataLogDir=/data/zookeeper/logs_3
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
启动集群
> zkServer.sh start {zookeeperUrl}/conf/zoo1.cfg
> zkServer.sh start {zookeeperUrl}/conf/zoo2.cfg
> zkServer.sh start {zookeeperUrl}/conf/zoo3.cfg
验证
执行命令:
> zkServer.sh status {zookeeperUrl}/conf/zoo1.cfg
> zkServer.sh status {zookeeperUrl}/conf/zoo2.cfg
> zkServer.sh status {zookeeperUrl}/conf/zoo3.cfg
可以看到server1:Mode: follower
可以看到server2:Mode: leader
可以看到server3:Mode: follower
打开三个命令行客户端分别连上三个server
> zkCli.sh -server localhost:2181
> zkCli.sh -server localhost:2182
> zkCli.sh -server localhost:2183
连上之后,在三个客户端执行ls /
可以分别查到3个server的当前目录结构都是一样的。
在server1上执行命令create /firstNode "server1创建的"
,执行完成后可以看到在server2、server3都能同步被创建成功。