成功解决(Socket error occurred: localhost/127.0.0.1:2181: Connection refused)连接zkServer被拒绝的问题

成功解决zookeeper启动后立即退出的问题、客户端连接zookeeper拒绝的问题(Socket error occurred: localhost/127.0.0.1:2181: Connection refused)

遇到的问题:

我在本地的虚拟机起了三个zookeeper(伪集群),启动的时候zkServer还没启动一会就停止服务了,用kafka连接、zkClient连接都被拒绝。

 2020-11-05 20:21:37,259 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - Opening socket connection to server localhost/192.168.205.128:2181. Will not attempt to authenticate using SASL (unknown error)
2020-11-05 20:21:37,260 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1244] - Socket error occurred: localhost/192.168.205.128:2181: Connection refused
解决方法
  1. 首先把/tmp/zookeeper里面的zookeeper_server.pid删掉
[root@dingy zookeeper]# ls
zookeeper_server.pid
[root@dingy zookeeper]# ls
zookeeper_server.pid
[root@dingy zookeeper]# cat zookeeper_server.pid 
5513[root@dingy zookeeper]# cd co
-bash: cd: co: No such file or directory
[root@dingy zookeeper]# ls
zookeeper_server.pid
[root@dingy zookeeper]# rm -rf zookeeper_server.pid 
[root@dingy zookeeper]# cd ..
[root@dingy tmp]# ls
hsperfdata_root                                                          vmware-root_676-2731021186  vmware-root_690-2697074069  zookeeper-1
systemd-private-2e40606fd5474a4187c563106e45a043-chronyd.service-kC7VlS  vmware-root_678-2722697728  vmware-root_694-2688619536  zookeeper-2
vmware-root_671-3988556280                                               vmware-root_684-2697598348  zookeeper
[root@dingy tmp]# cd zookeeper-1
[root@dingy zookeeper-1]# ls
zookeeper_server.pid
[root@dingy zookeeper-1]# rm -rf zookeeper_server.pid 
[root@dingy zookeeper-1]# cd ..
[root@dingy tmp]# cd zookeeper-2
[root@dingy zookeeper-2]# ls
zookeeper_server.pid
[root@dingy zookeeper-2]# rm -rf zookeeper_server.pid 
[root@dingy zookeeper-2]# cd ../zookeeper

删除命令为

rm -rf zookeeper_server.pid
  1. 然后再看看各自的/tmp/zookeeper里面有没有各自的myid文件(这个如果你是配置的伪集群需要检查一下,如果只是单节点就不需要了,直接做完上一步后启动zookeeper即可)
[root@dingy zookeeper]# ls
zookeeper_server.pid
[root@dingy zookeeper]# rm -rf zookeeper_server.pid
[root@dingy zookeeper]# vim myid
[root@dingy zookeeper]# ls
myid
[root@dingy zookeeper]# cd ..
[root@dingy tmp]# cd zookeeper-1
[root@dingy zookeeper-1]# ls
zookeeper_server.pid
[root@dingy zookeeper-1]# rm -rf zookeeper_server.pid
[root@dingy zookeeper-1]# vim myid
[root@dingy zookeeper-1]# ls
myid
[root@dingy zookeeper-1]# cd ../zookeeper-2
[root@dingy zookeeper-2]# ls
zookeeper_server.pid
[root@dingy zookeeper-2]# rm -rf zookeeper_server.pid
[root@dingy zookeeper-2]# ls
[root@dingy zookeeper-2]# vi myid
[root@dingy zookeeper-2]# ls
myid
  1. 启动zookeeper,然后jps看下启动成功没有
[root@dingy zookeeper-2]# jps
6016 QuorumPeerMain
5985 QuorumPeerMain
5954 QuorumPeerMain
6211 Kafka
6184 ZooKeeperMain
6639 Jps
### 解决HTTP POST请求连接重置的问题 当遇到`error: connection reset by peer`错误时,这通常意味着服务器主动关闭了客户端的连接。对于尝试访问 `http://127.0.0.1:11434/api/show` 的情况,可以从以下几个方面排查并解决问题。 #### 配置超时设置 确保消费者和服务提供者之间的连接配置合理。例如,在某些情况下可以调整消费者的连接超时时间来适应网络状况或服务响应速度: ```yaml connectTimeout: 600000 # 设置较长的连接超时时间为600秒[^1] ``` 然而,此参数仅适用于特定框架下的RPC调用场景,并不直接作用于HTTP协议层面;因此还需要考虑其他因素。 #### 检查本地服务状态 确认目标地址上的应用是否正常运行以及监听指定端口。如果命令行工具返回如下提示,则表明当前环境未能成功建立到API接口所在位置的有效通信链路: ``` The connection to the server localhost:8080 was refused - did you specify the right host or port? ``` 上述信息暗示可能是因为未启动相关服务或者指定了错误的服务地址/端口号所引起的问题[^2]。针对这个问题,建议执行以下操作验证目的主机上对应进程的状态: - 使用 `netstat`, `ss` 或者 `lsof` 命令查看是否有程序正在占用所需端口; - 尝试通过浏览器或其他HTTP客户端发送GET请求测试该路径是否存在; - 查看应用程序日志文件了解更详细的报错原因。 #### 调整防火墙规则与安全组策略 有时即使服务已经就绪也可能由于网络安全机制阻止外部流量进入而导致无法完成握手过程。此时应当审查操作系统自带防火墙(如iptables)、云平台实例的安全组设定以及其他任何中间件设备(代理、负载均衡器等),确保允许来自预期源IP范围内的入站TCP连接到达目的地端口。 #### 客户端代码优化 编写健壮性的客户端逻辑也很重要,比如适当增加重试次数、处理异常情形的能力等特性能够提高整体系统的稳定性。下面给出一段Python示例用于发起带超时控制的POST请求: ```python import requests try: response = requests.post( url='http://127.0.0.1:11434/api/show', timeout=5, # 请求超时时长设为五秒钟 json={"key": "value"} # 发送JSON数据体作为payload ) except (requests.exceptions.ConnectionError, requests.exceptions.Timeout) as e: print(f"An error occurred while making request:{e}") else: if response.status_code == 200: result = response.json() print(result) ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值