[腾讯云服务器集群搭建报错] 在服务上搭建并启动zookeeper,有QuorumPeerMain进程,但status却报错问题

zookeeper信息配置流程:

配置zoo.cfg文件

(1)重命名/opt/module/zookeeper/conf目录下的zoo_sample.cfg为zoo.cfg

mv zoo_sample.cfg zoo.cfg

(2)打开zoo.cfg文件

vim zoo.cfg

修改数据存储路径配置

dataDir=/opt/module/zookeeper/zkData

增加如下配置

#######################cluster##########################

server.2=hadoop102:2888:3888

server.3=hadoop103:2888:3888

server.4=hadoop104:2888:3888

(3)同步/opt/module/zookeeper目录内容到hadoop103、hadoop104

[atguigu@hadoop102 module]$ xsync zookeeper/

(4)分别修改hadoop103、hadoop104上的myid文件中内容为3、4

(5)zoo.cfg配置参数解读

server.A=B:C:D。

A是一个数字,表示这个是第几号服务器;

集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。

B是这个服务器的地址;

C是这个服务器Follower与集群中的Leader服务器交换信息的端口;

D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。


问题描述

(1)分别启动Zookeeper

 分别在hadoo102,hadoop103,hadoop104 启动zookeeper进程

bin/zkServer.sh start

(2)查看状态

使用指令查看进程

xcall jps --需要编写xcall脚本

你会发现QuorumPeerMain都存在

bin/zkServer.sh status

然后使用指令查看进程状态

进程存在 ,但就是无法正常启动zookeeper

进入/opt/module/zookeeper/logs 查看日志信息 

2024-11-08 17:05:52,624 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FastLeaderElection@980] - Notification time out: 400
2024-11-08 17:05:52,624 [myid:2] - WARN  [QuorumConnectionThread-[myid=2]-2:QuorumCnxManager@401] - Cannot open channel to 4 at election address /10.206.0.7:3888
java.net.ConnectException: Connection refused (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.initiateConnection(QuorumCnxManager.java:384)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(QuorumCnxManager.java:458)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
2024-11-08 17:05:52,625 [myid:2] - WARN  [QuorumConnectionThread-[myid=2]-3:QuorumCnxManager@401] - Cannot open channel to 3 at election address /10.206.0.9:3888
java.net.ConnectException: Connection refused (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.initiateConnection(QuorumCnxManager.java:384)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(QuorumCnxManager.java:458)

 简而言之就是无法与 hadoop103,hadoop104 进行通信,但是如果

        ping hadoop103 的时候是可以通的


原因分析:

        此处是由于在购买服务器时候,会给一个公网ip,和内网ip

  • 公网IP:公网IP通常用于服务器和外部网络的通信。它适用于你需要从外部访问或远程管理的情况。比如:

    • 你需要通过SSH进行远程登录管理这些服务器。
    • 如果有外部应用需要访问你的Hadoop集群(比如外部数据源),可以通过公网IP进行连接。
  • 内网IP:内网IP用于服务器之间的内部通信,确保集群内节点之间的流量不会通过公网。比如:

    • 在Hadoop集群内部,DataNode、NameNode、ResourceManager等组件之间通过内网IP进行通信。
    • 用于HDFS文件存储、MapReduce计算任务的分发与协调等。

解决方案:

ZooKeeper之间的相互通信应当使用内网IP。因为ZooKeeper是Hadoop集群中的协调服务,通常用于集群中的节点间协调和管理信息,确保集群的高可用性和一致性。在集群内部,ZooKeeper服务器需要相互之间频繁地进行心跳和数据同步,这些通信都应该通过内网IP进行,以避免公网流量影响性能和安全性。

server.1=192.168.1.2:2888:3888
server.2=192.168.1.3:2888:3888
server.3=192.168.1.4:2888:3888

这里,192.168.1.2192.168.1.3192.168.1.4就是ZooKeeper节点间的内网IP。

而不是hadoop102,hadoop103,hadoop104 本地DNS服务器解析的公网ip


上述博客为本人在遇到问题,解决问题的一些见解,如果有错误欢迎指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值