美文网首页
zookeeper伪集群

zookeeper伪集群

作者: 吕志豪 | 来源:发表于2017-09-23 11:58 被阅读0次

    伪集群模式

    伪集群模式就是在单机环境下模拟集群的Zookeeper服务。

    在zookeeper集群配置文件中,clientPort参数用来设置客户端连接zookeeper服务器的端口。server.1=IP1:2888:3888中,IP1指的是组成Zookeeper服务器的IP地址,2888为组成zookeeper服务器之间的通信端口,3888为用来选举leader的端口。由于伪集群模式中,我们使用的是同一台服务器,也就是说,需要在单台机器上运行多个zookeeper实例,所以我们必须要保证多个zookeeper实例的配置文件的client端口不能冲突。

    下面简单介绍一下如何在单台机器上建立伪集群模式。首先将zookeeper-3.4.9.tar.gz分别解压到server1,server2,server3目录下:

    tar -zxvf zookeeper-3.4.9.tar.gz  /home/lv/install/zookeeper/server1
    tar -zxvf zookeeper-3.4.9.tar.gz /home/lv/install/zookeeper/server2
    tar -zxvf zookeeper-3.4.9.tar.gz /home/lv/install/zookeeper/server3
    

    然后在server1/data/目录下创建文件myid文件并写入“1”,同样在server2/data/,目录下创建文件myid并写入“2”,server3进行同样的操作。

    下面分别展示在server1/conf/、server2/conf/、server3/conf/目录下的zoo.cfg文件:
    server1/conf/zoo.cfg文件

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/lv/install/zookeeper/server1/data
    dataLogDir=/home/lv/install/zookeeper/server1/datalog
    clientPort=2181
    server.1=127.0.0.1:2888:3888
    server.2=127.0.0.1:2889:3889
    server.3=127.0.0.1:2890:3890
    maxClientCnxns=60
    

    server2/conf/zoo.cfg文件

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/lv/install/zookeeper/server2/data
    dataLogDir=/home/lv/install/zookeeper/server2/datalog
    clientPort=2182
    server.1=127.0.0.1:2888:3888
    server.2=127.0.0.1:2889:3889
    server.3=127.0.0.1:2890:3890
    maxClientCnxns=60
    

    server3/conf/zoo.cfg文件

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/lv/install/zookeeper/server3/data
    dataLogDir=/home/lv/install/zookeeper/server3/datalog
    clientPort=2183
    server.1=127.0.0.1:2888:3888
    server.2=127.0.0.1:2889:3889
    server.3=127.0.0.1:2890:3890
    maxClientCnxns=60
    

    从上述三个代码清单可以发现,除了clientPort不同之外,dataDir和dataLogDir也不同。另外,不要忘记dataDir所对应的目录中创建的myid文件来指定对应的zookeeper服务器实例。
    Zookeeper伪集群模式运行
    当上述伪集群环境安装成功后就可以测试是否安装成功啦,我们可以尝尝鲜:
    首先启动server1服务器:
    cd server1/binbash zkServer.sh start

    此时出现以下提示信息,表示启动成功:


    打开zookeeper.out文件:

    2017-09-23 11:38:59,765 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@588] - Cannot open channel to 3 at election address /127.0.0.1:3890
    java.net.ConnectException: 拒绝连接 (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        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.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:562)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:614)
        at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:843)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:913)
    2017-09-23 11:38:59,765 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumPeer$QuorumServer@167] - Resolved hostname: 127.0.0.1 to address: /127.0.0.1
    2017-09-23 11:38:59,765 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@852] - Notification time out: 60000
    

    产生上述Waring信息是因为zookeeper服务的每个实例都拥有全局的配置信息,他们在启动的时候需要随时随地的进行leader选举,此时server1就需要和其他两个zookeeper实例进行通信,但是,另外两个zookeeper实例还没有启动起来,因此将会产生上述所示的提示信息。当我们用同样的方式启动server2和server3后就不会再有这样的警告信息了。

    当三台服务器均成功启动后切换至server1/bin/目录下执行以下命令:

    bash zkServer.sh status
    

    终端出现以下提示信息:



    说明server1服务器此时处于follower模式,同样切换至server2/bin目录下执行相同的命令,返回如下结果:



    说明server2被选举为leader。

    相关文章

      网友评论

          本文标题:zookeeper伪集群

          本文链接:https://www.haomeiwen.com/subject/yxkcextx.html