我可以在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)
答案 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