zookeeper windows伪集群模式配置

来源:互联网 发布:linux新建文件的命令 编辑:程序博客网 时间:2024/05/15 02:36

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

一:伪集群模式安装


        在一台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

dataDir文件路径必须要存在不然会报错。

还是就是要在对应的dataDir路径下面建立一个myid的文件(可以先建立一个TXT文档。里面写入对应的服务器编号如:zoo1.cfg下的zookeeper的值应该为1,依次类推,zoo2.cfg的myid里面的值为2),然后删除.txt这个后缀就可以了(被这个问题坑惨了!)。


修改clientPort为2181 ,同时添加

server.1=localhost:2887:3887

server.2=localhost:2888:3888  

server.3=localhost:2889:3889

或者

server.1=127.0.0.1:2887:3887

server.2=127.0.0.1:2888:3888  

server.3=127.0.0.1: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,当全部启动起来后,就不会报异常,所以上述的报错是可以忽略的,尽管启动这三个节点即可。


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

参考资料:http://blog.csdn.net/lovesummerforever/article/details/48975703
0 0
原创粉丝点击