1:下载zookeeper-3.4.12减压
2:copy E:\ZK\zookeeper-3.4.12\conf目录下的zoo_sample.cfg 另存为:zoo1.cfg zoo2.cfg zoo3.cfg
修改zoo1.cf文件内容为:
dataDir=E:\\ZK\\data1
dataLogDir=E:\\ZK\\log1
clientPort=2181
server.1=127.0.0.1:20881:30881
server.2=127.0.0.1:20882:30882
server.3=127.0.0.1:20883:30883
修改zoo2.cf文件内容为:
dataDir=E:\\ZK\\data2
dataLogDir=E:\\ZK\\log2
clientPort=2182
server.1=127.0.0.1:20881:30881
server.2=127.0.0.1:20882:30882
server.3=127.0.0.1:20883:30883
修改zoo3.cf文件内容为:
dataDir=E:\\ZK\\data3
dataLogDir=E:\\ZK\\log3
clientPort=2183
server.1=127.0.0.1:20881:30881
server.2=127.0.0.1:20882:30882
server.3=127.0.0.1:20883:30883
3:在E:\ZK\zookeeper-3.4.12目录下创建文件夹:
data1 log1 data2 log2 data3 log3
4:分别在data1 data2 data3目录下创建myid文件
data1目录下myid的文件内容是1
data2目录下myid的文件内容是2
data3目录下myid的文件内容是3
5:分别打开3个cmd窗口输入
cmd窗口1输入:
C:\Users\Administrator>e:
E:\>cd E:\ZK\zookeeper-3.4.12\bin
E:\ZK\zookeeper-3.4.12\bin>zkServer1.cmd
cmd窗口2输入:
C:\Users\Administrator>e:
E:\>cd E:\ZK\zookeeper-3.4.12\bin
E:\ZK\zookeeper-3.4.12\bin>zkServer2.cmd
cmd窗口1输入:
C:\Users\Administrator>e:
E:\>cd E:\ZK\zookeeper-3.4.12\bin
E:\ZK\zookeeper-3.4.12\bin>zkServer3.cmd
启动三个zookeeper,在启动zkServer1.cmd zkServer2.cmd的时候 控制台会打印出错误:
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
原因:zookeeper的其他节点还没有启动,当三个节点都启动后,就正常运行了。
当启动完第三个节点后 就恢复正常了。
注意:zk的部署个数最好为基数,ZK集群的机制是只要超过半数的节点OK,集群就能正常提供服务。