Zookeeper集群设置

时间:2014-11-20 07:06:26

标签: java bigdata apache-zookeeper apache-storm apache-kafka

我可以在1台机器上设置带有3个不同端口的zookeeper群集,但是当我使用不同的IP执行相同操作系统实例时,它会抛出以下错误:

2014-11-20 12:16:24,819 [myid:1] - INFO  [main:QuorumPeerMain@127] - Starting quorum peer
2014-11-20 12:16:24,827 [myid:1] - INFO  [main:NIOServerCnxnFactory@94] - binding to port 0.0.0.0/0.0.0.0:2181
2014-11-20 12:16:24,842 [myid:1] - INFO  [main:QuorumPeer@959] - tickTime set to 2000
2014-11-20 12:16:24,842 [myid:1] - INFO  [main:QuorumPeer@979] - minSessionTimeout set to -1
2014-11-20 12:16:24,842 [myid:1] - INFO  [main:QuorumPeer@990] - maxSessionTimeout set to -1
2014-11-20 12:16:24,842 [myid:1] - INFO  [main:QuorumPeer@1005] - initLimit set to 10
2014-11-20 12:16:24,857 [myid:1] - INFO  [Thread-1:QuorumCnxManager$Listener@504] - My election bind port: /172.16.1.175:2223
2014-11-20 12:16:24,870 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumPeer@714] - LOOKING
2014-11-20 12:16:24,873 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@815] - New election. My id =  1, proposed zxid=0x0
2014-11-20 12:16:24,876 [myid:1] - INFO  [WorkerReceiver[myid=1]:FastLeaderElection@597] - Notification: 1 (message format version), 1 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
2014-11-20 12:16:24,881 [myid:1] - WARN  [WorkerSender[myid=1]:QuorumCnxManager@382] - Cannot open channel to 2 at election address /172.16.1.170:2223
java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:341)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:449)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:430)
    at java.lang.Thread.run(Thread.java:744)

2 个答案:

答案 0 :(得分:1)

您是否在所有三个节点中启动了zookeeper?在多集群设置中(假设您具有包含多台计算机的分布式环境),每个服务器都知道集群中存在的其他节点,称为 ensemble 。它通过查看zoo.cfg文件中的以下一行来完成此操作。

    server.1=zoo1:2888:3888
    server.2=zoo2:2888:3888
它说

In multi-cluster set up doc页面

  

只要合奏的大部分都在使用,该服务将可用。因为Zookeeper需要占多数,所以最好使用奇数个机器。例如,使用四台机器,ZooKeeper只能处理单台机器的故障;如果两台机器出现故障,其余两台机器不会占多数。但是,有了五台机器,ZooKeeper可以处理两台机器的故障

现在,除非您在所有三个节点中启动该进程,否则它将无法相互通信并继续记录此类错误。这可能会帮助你到达某个地方。

答案 1 :(得分:1)

如何为多个群集或远程服务器设置Zookeeper?

步骤1 :检查系统下的Java 1.8.0或更高版本是否可用     / opt / java -version

第2步:使用以下命令从链接下载Zookeeper-3.3.6

Sudo wget  http://redrockdigimark.com/apachemirror/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz

第3步:使用以下命令

提取文件
Sudo tar xzf  zookeeper-3.3.6.tar.gz -C /opt/

第4步:将zookeeper -3.3.6映射到Zookeeper,如下所示

/opt/>  ls -s zookeeper-3.3.6 zookeeper         then

/opt/>   Cd zookeeper/conf

第5步:通过从zoo_sample.cfg / opt / zookeeper / conf />中复制zoo.cfg来创建配置文件

    cp zoo.cfg sample_zoo.cfg

第6步:使用/ opt / zookeeper / conf />命令编辑zoo.cfg

sudo vi zoo.cfg

将Data目录创建为DataDir = / var / lib / zookeeper

第7步:在/ var / lib / zookeeper下创建一个没有扩展名的文件作为myid 并为server1

提供唯一ID为1

将按钮中的所有群集服务器添加为

server.1=0.0.0.0:2888:3888
server.2=184.72.205.209:2888:3888
server.3=34.207.92.20:2888:3888

步骤8 :在/ var / lib / zookeeper下创建一个没有扩展名的文件作为myid  并为server2

提供唯一ID为2

步骤9 :与第二台服务器相同的配置,如下所示

server.1=34.229.138.19:2888:3888
server.2=0.0.0.0:2888:3888
server.3=34.207.92.20:2888:3888

步骤10 :安装nc包和lsof包,如下所示

Sudo yum install nc

Sudo yum install lsof

步骤11 :现在在所有服务器中启动Zookeeper

Sudo /opt/zookeeper/bin/zkServer.sh start

步骤12 :停止Zookeeper服务器

Sudo /opt/zookeeper/bin/zkServer.sh Stop

检查Zookeeper服务器的状态

Sudo /opt/zookeeper/bin/zkServer.sh Status

需要注意的重要事项

1.对于要维护的Zookeeper 2F + 1服务器,即。如果您有1台服务器,那么(2 * 1)+ 1 = 3台要维护的服务器,如果您有2台服务器,那么(2 * 2)+ 1 = 5台要维护的服务器,F代表服务器数量

2.所有服务器都应该有zoo.cfg配置文件,本地服务器IP应该是0.0.0.0

3.zookeeper使用2888端口连接到具有领导节点

的各个关注节点

4.Port 3888用于点对点通信

5.pader选举将由zookeeper自动处理,如果领导下来,在2微秒内,它将选出其他领导并分享关注者的信息

6.在zoo.cfg配置文件中,客户端端口必须为2181