zookeeper伪分布式部署

1.设置zoo.cfg文件;我的zoo.cfg文件配置如下:原文承接搭建zookeeper环境

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=D:\\zookeeper\\zookeeper-1\\data
dataLogDir=D:\\zookeeper\\zookeeper-1\\log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
#前面的第一个(2888 2889 2890)端口号是数据传播同步用的,后面的端口是用于选举模式使用的,前面得端口号挂掉的话,就要通过后面得端口进行选举
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

2.复制两份一样的zookeeper,目录名字分别是zookeeper-2,zookeeper-3里面的zoo.cfg配置

   对应zookeeper-2:

       clientPort=2182

       dataDir=D:\\zookeeper\\zookeeper-2\\data
       dataLogDir=D:\\zookeeper\\zookeeper-2\\log

   zookeeper-3同上处理 端口要不一样不然会冲突,不同机器部署的话就不用

3.在每份的zookeeper下面的data目录创建一个myid文件,每个myid里面对应顺序输入数字123做标记。

4.直接启动全部zookeeper。注意点:如果出现这样的错误

2016-05-08 22:53:37,188 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@400] - Cannot open channel to 3 at election address /192.168.1.100:3889
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)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:381)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:426)
        at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:843)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:822)
    
  注:这个是正常现象,因为此时其它的ZooKeeper实例还未启动,等所有的ZooKeeper实例都启动后集群就正常了。

5.当集群部署完成后,只需要在开启一个命令窗口就可以查看各个互通的server情况啦:

echo stat|nc 127.0.0.1 2181 查看谁是leader谁是follower

ZooKeeper 常用四字命令:

ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。

用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令

[需要安装nc.exe程序]  C:\Windows 目录下直接扔nc.exe进去

   1. 可以通过命令:echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader
   2. 使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。
   3. echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。
   4. echo kill | nc 127.0.0.1 2181 ,关掉server[好像已经失效了,这个命令]
   5. echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。
   6. echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。
   7. echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。
   8. echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。
   9. echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。
   10. echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
   11. echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。

6.集群情况

  A B C 三个服务 如果 当前 A 是 leader 那 B C 就是flowers 

  当A突然暴毙,B,C 中就会有一个当leader,

  然后剩下的突然又死掉了一个,就会提示:this zookeeper instance is not currently serving【window下】

  原因:由于集群中的可用Server只剩下一台(达不到集群总数的半数以上),集群将处于不可用的状态

 

你可能感兴趣的:(zookeeper)