本例在一臺服務器上部署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