本例在一台服务器上部署3个zk服务:z一、z二、z3。shell
https://zookeeper.apache.org/
tar -xvzf zookeeper-3.4.10.tar.gz
mkdir z1 mkdir z1/data mkdir z2 mkdir z2/data mkdir z3 mkdir z3/data
此处注意data文件夹权限,不然有可能zookeeper_server.pid文件会没法写入。apache
echo 1 > z1/data/myid echo 2 > z2/data/myid echo 3 > z3/data/myid
如下配置文件分别复制到{PATH_TO_ZK}/z1/z1.cfg、{PATH_TO_ZK}/z2/z2.cfg、{PATH_TO_ZK}/z3/z3.cfg服务器
tickTime=2000 initLimit=10 syncLimit=5 dataDir=./z1/data【注1】 clientPort=2181【注2】 server.1=127.0.0.1:2222:2223 server.2=127.0.0.1:3333:3334 server.3=127.0.0.1:4444:4445【注3】
【注1】:spa
zk的data目录z一、z二、z3需修改成各自目录。日志
【注2】:code
客户端链接端口号,z一、z二、z3不相同,可分别配置为218一、218二、2183。server
【注3】:blog
server.n指定了编号为n的ZooKeeper服务使用的地址和端口号。部署
格式为server.{n}={host}:{port1}:{port2}。n为zk服务编号,host为主机名(hostname),port1和port2分别为仲裁通讯和群首选举的TCP端口号。it
能够在不一样shell执行如下命令启动zk服务并查看日志。
bin/zkServer.sh start-foreground ./z1/z1.cfg & bin/zkServer.sh start-foreground ./z2/z2.cfg & bin/zkServer.sh start-foreground ./z3/z3.cfg &
bin/zkServer.sh stop ./z1/z1.cfg bin/zkServer.sh stop ./z2/z2.cfg bin/zkServer.sh stop ./z3/z3.cfg
bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183