zookeeper windows单机模式和伪集群模式

 首先在官网上下载zookeeper稳定版本,下载地址:http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/ 下载zookeeper-3.4.6.tar.gz,我下载的是3.4.6,不算太新也不算太旧。

        zookeeper是一个分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用,协调及其管理的难度,提高性能的分布式服务。

        zookeeper本身是可以以Standalone模式安装运行,不过它在分布式Zookeeper集群中(一个Leader,多个Follower),基于选举算法来保证        zookeeper集群的稳定性和可用性,从而保证了分布式的可靠性。


一、单机模式安装


        1、解压到自己任意磁盘下,我的位置是D:\zookeeper-3.4.6


        2、复制zoo_sample.cfg 重命名为zoo.cfg。

zoo.cfg中的内容如下:

[html]  view plain  copy
 print ?
  1. # The number of milliseconds of each tick  
  2. tickTime=2000  
  3. # The number of ticks that the initial   
  4. # synchronization phase can take  
  5. initLimit=10  
  6. # The number of ticks that can pass between   
  7. # sending a request and getting an acknowledgement  
  8. syncLimit=5  
  9. # the directory where the snapshot is stored.  
  10. # do not use /tmp for storage, /tmp here is just   
  11. # example sakes.  
  12. dataDir=D:\\data\\zookeeper  
  13. # log config  
  14. dataLogDir=D:\\log\\zookeeper  
  15. # the port at which the clients will connect  
  16. clientPort=2181  
  17. # the maximum number of client connections.  
  18. # increase this if you need to handle more clients  
  19. #maxClientCnxns=60  
  20. #  
  21. # Be sure to read the maintenance section of the   
  22. # administrator guide before turning on autopurge.  
  23. #  
  24. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  
  25. #  
  26. # The number of snapshots to retain in dataDir  
  27. #autopurge.snapRetainCount=3  
  28. # Purge task interval in hours  
  29. # Set to "0" to disable auto purge feature  
  30. #autopurge.purgeInterval=1  

        其中


        dataDir为zookeeper数据存放位置,zookeeper将写数据的日志文件保存在这个目录里。

        dataLogDir是日志文件。

        clientPort=2181是zookeeper端口,我们连接zookeeper的端口,zookeeper会监听这个端口,接收客户端访问请求。

        tickTime:zookeeper服务器之间,或者zookeeper客户端与服务器之间维持的心跳的时间间隔,每隔tickTime时间,会执行一次。(心跳证明活着,心跳时间就是超时设置时间,可以理解为客户端和服务器端的session)

     

        3 、转到D盘的zookeeper bin目录下,执行zkServer.cmd,这样就启动了zookeeper服务了。

        4、查看zookeeper运行情况:D:\zookeeper-3.4.6\bin>zkCli.cmd-server 127.0.0.1:2181。

        这样就完成了zookeeper windows单机模式安装。



二、伪集群模式安装


        在一台PC上启动多个Zookeeper实例,同一个不同的端口,来实现微集群。

        简单原理:

        选举算法,有兴趣的同学可以看看,后续篇章中会详述。

        1、修改加载的配置文件。在D:\zookeeper-3.4.6\conf 下复制zoo.cfg重命名为zoo1.cfg ,zoo2.cfg,zoo3.cfg


        修改以下如下:

[html]  view plain  copy
 print ?
  1. dataDir=D:\\data\\zookeeper\\1  
  2. # log config  
  3. #dataLogDir=D:\\log\\zookeeper  
  4. # the port at which the clients will connect  
  5. clientPort=2181  
[html]  view plain  copy
 print ?
  1. #添加集群配置  
  2. server.1=localhost:2887:3887  
  3. server.2=localhost:2888:3888  
  4. server.3=localhost:2889:3889  

zoo1.cfg 文件修改dataDir目录为D:\\data\\zookeeper\\ 1 ,修改clientPort为 2181  ,同时添加server.1=localhost:2887:3887
server.2=localhost:2888:3888  server.3=localhost:2889:3889

        server.num=ip/domain:Port1:Port2

        其中num:表示数字表示第几号服务器;ip/domain :是服务器域名或者ip地址。Port1:表示这个服务器和集群中的Leader服务器交换信息的端口;Port2:表示万一集群中的Leader服务器挂了,需要一个端口重新进行选举,选出一个新的Leader,这个端口就是用来执行选举时服务器相互通信的端口。

        由于我们是伪集群,所以ip或者域名是一样的,所以要分配不同的端口号。

        zoo2.cfg也是如此修改,copy zoo1.cfg 只要修改上述红色标记的即可,\\2 clientPort=2182 ,类推,zoo2.cfg修改clientPort为2183 。


2、修改命令,加载不同的配置。复制zkServer.cmd并且重命名为,zkServer-1.cmd,zkServer-2.cmd,zkServer-3.cmd 分别修改这三个cmd如下所示。

[html]  view plain  copy
 print ?
  1. setlocal  
  2. call "%~dp0zkEnv.cmd"  
  3.   
  4. set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain  
  5. set ZOOCFG=D:\zookeeper-3.4.6\conf\zoo1.cfg  
  6. echo on  
  7. java "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*  
  8.   
  9. endlocal  


        不同的zkServer- 1 2 3  .cmd分别添加一行set ZOOCFG=..\zoo1.cfg zoo2.cfg zoo3.cfg


3、分别启动zkServer-1 .cmd、zkServer-2.cmd zkServer-3.cmd

        启动可能会报如下错误

第一种情况:

[html]  view plain  copy
 print ?
  1. 2015-10-09 11:20:08,162 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:218  
  2. 1:QuorumCnxManager@382] - Cannot open channel to 3 at election address localhost  
  3. /192.168.132.16:3889  
  4. java.net.ConnectException: Connection refused: connect  
  5.         at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)  
  6.         at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketI  
  7. mpl.java:85)  

        这是因为,zookeeper集群采用的是选举算法,当集群中的其他节点还没有启动的时候,选举算法就会出现异常,因为至少三台能选举出一个leader,2n+1台机器,可以选举n个leader,当全部启动起来后,就不会报异常,所以上述的报错是可以忽略的,尽管启动这三个节点即可。

第二种情况:

如果启动的时候一闪而过并且提示myid丢失,则需要到dataDir所设置的目录下面创建该文件并且输入对应的数字并写入一个数字用来标识本节点(类似这个节点的身份证)。

        这样在一台机器上搭建了zookeeper伪集群,并且启动成功。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值