Zookeeper集群模式无法部署云服务器【java.net.BindException: 无法指定被请求的地址 (Bind failed)】的解决

Zookeeper集群模式无法部署云服务器【java.net.BindException: 无法指定被请求的地址 (Bind failed)】的解决。 正文

在云服务器(阿里云、腾讯云)上部署Zookeeper集群模式时,无法成功的原因有很多,网上主要提到了端口被占用(未开放)和防火墙开启两种问题,类似的博客很多,本文不再赘述。
如果你已经针对上述两种情况做了修改依然没有成功,那么就可能出现了本篇的问题。
Zookeeper在启动时,并不会打印信息,即使集群启动失败,依然会显示:

这样我们看不到日志信息,无法判断出现的问题,通过

# zkServer.sh start-foreground

可以看到Zookeeper启动时的信息。
每次Zookeeper启动时信息很多,一定翻到最上面要从第一条开始看。

如果有这条错误消息

2017-08-05 09:27:32,253 [myid:1] - ERROR [/xxx.xx.xxx.xxx(你的IP):3888:QuorumCnxManager$Listener@763] - Exception while listening java.net.BindException: 无法指定被请求的地址 at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382) at java.net.ServerSocket.bind(ServerSocket.java:375) at java.net.ServerSocket.bind(ServerSocket.java:329) at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener.run(QuorumCnxManager.java:742)

恭喜你和我遇到了同样的问题。

解决方法

很简单,在每个Zookeeper节点上的zoo.cfg里面添加上

quorumListenOnAllIPs=true

然后重启所有节点。

原因

我自己也不是很懂,大概是对于云服务器来说,由于是采用虚拟化的技术。。。。。。balabala,希望比较熟悉这方面的人可以赐教。

这个参数的潜在问题

主要是会影响ZAB协议和FastLeaderElection协议。
官网原文如下

quorumListenOnAllIPs

When set to true the ZooKeeper server will listen for connections from its peers on all available IP addresses, and not only the address configured in the server list of the configuration file. It affects the connections handling the ZAB protocol and the Fast Leader Election protocol. Default value is false

额外收获

在Zookeeper官网上找到了各种配置参数的说明,如果之后有啥问题也至于这么抓瞎。 
Zookeeper配置参数说明

感谢 & 引用

本文主要引用和参考了 @回头小kiss 的博客zookeeper集群无法正确启动
十分感谢博主的分享。 

同时还要感谢攀攀学长和张根学长的帮助。最终解决了这个问题

心路历程

手头的分布式爬虫,从自己想当然的准备手撸分布式协调算法到选型Zookeeper。从翻着满屏幕的Kazoo英文API文档到部署Zookeeper失败一次又一次。然后面对着Java网络编程的异常不知从何下手。。。。所幸最后的救命稻草---学长 及时出马拯救了我,bug啊bug,总会是有解决方法的,缘分到了自然就成了。 

当然,这件事情也充分的体现了技术面的重要,其实第一次去求助老王时,老王给出的方向很正确,就是对于云服务器虚拟化这方面可能存在的坑,但是我对于虚拟化实在是一窍不通,也没往这上想。而后来看到那个Java的异常,自己在网上搜了搜也没有啥相关的解释,可能这两方面自己有一点点的积累都能大概有个方向。

我和我最后的倔强,最后还是询问了学姐学长,感谢@攀攀学长和@傻根学长。 

真是尴尬,最后是学长找到篇博客。。。但是我自己搜罗N篇都没找到,果然有时候bug还是靠缘分的。

时间: 2025-01-27 03:58:54

Zookeeper集群模式无法部署云服务器【java.net.BindException: 无法指定被请求的地址 (Bind failed)】的解决的相关文章

zookeeper集群搭建

因为公司的业务发展,需要搭建codis集群(一个由国内豌豆荚开发的redis集群解决方案),但是codis集群是依赖与zookeeper集群的.所以这篇文章,我们主要介绍有关zookeeper集群的搭建. 一.zookeeper介绍 zookeeper是一个分布式的开源框架,它能很好的管理集群,而且提供协调分布式应用的基本服务. 它向外部应用暴露一组通用服务--分布式同步(Distributed Synchronization).命名服务(Naming Service).集群维护(Group M

如何构建高可用ZooKeeper集群

ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 ZooKeeper 便捷的使用方式.卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop.HBase.Kafka 和 Dubbo 等大型分布式系统中. 本文的目标读者是对 ZooKeeper 有一定了解的技术人员,将从 ZooKeeper 运行模式.集群组成.容灾和水平扩容四方面逐步深入,最终构建

消息中间件kafka+zookeeper集群部署、测试与应用

业务系统中,通常会遇到这些场景:A系统向B系统主动推送一个处理请求:A系统向B系统发送一个业务处理请求,因为某些原因(断电.宕机..),B业务系统挂机了,A系统发起的请求处理失败:前端应用并发量过大,部分请求丢失或后端业务系统卡死....这个时候,消息中间件就派上用场了--提升系统稳定性.可用性.可扩展性. 一.消息中间件消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.

NetApp借助集群模式Data ONTAP发力云服务

提到云服务提供的难度, 那么部署和管理公有云.私有云以及混合云的基础设施应该算是其中之一. 众多http://www.aliyun.com/zixun/aggregation/13793.html">云服务提供商本身的云都是各有思路, 实现方法千差万别,标准的缺失一定程度上阻碍了云的大规模推广.当下 NetApp提出了一种 新的解决方案用于管理不同的云模型,这种解决方案基于三种战略理念:通用的数据平台(universal data platform). 动态的数据移植(dynamic da

服务器-怎样获取zookeeper集群中leader的IP并应用

问题描述 怎样获取zookeeper集群中leader的IP并应用 现在有一个需求,想调用zookeeper集群中leader的IP,请问应该如何用java实现获取leader的IP?求指教

学习Docker容器网络模型 - 搭建分布式Zookeeper集群

ZooKeeper是一个流行的分布式协调服务.它提供了两种不同的部署方式:单机模式和分布式模式.其中单机模式的部署非常简单,网上也有很多资料,我们今天会利用Docker搭建分布式Zookeeper集群,并来帮助大家熟悉Docker中容器网络模型的使用. ZooKeeper集群中所有的节点作为一个整体对分布式应用提供服务.节点中有两个的角色:Leader和Follower.在整个集群运行过程中,只有一个Leader,其他节点的都是Follower,如果ZK集群在运行过程中Leader出了问题,系统

NetApp集群模式Data ONTAP展露新颜

 NetApp(纳斯达克股票代码:NTAP)宣布推出集群模式Data ONTAP 8.2,这一新版本是其旗舰存储操作系统打出的又一记重拳.新的软件产品使得企业和云服务提供商能够快速且经济高效地提供新的服务及性能,同时最大限度地支持应用程序无中断正常运行.集群模式 Data ONTAP 8.2 突破了传统孤立硬件的性能.可用性和效率极限,支持 IT 根据不断变化的业务和应用程序需求无中断地调整存储基础架构. 集群模式Data ONTAP具备行业领先的功能: ● 无中断运行--可靠性超过99.999

zookeeper(三)--- 搭建zookeeper集群

  zookeeper(三)--- 搭建zookeeper集群          环境         vagrant虚拟机         centos7         SecureCRT      软件         zookeeper3.4.6.tar.gz        步骤         1.使用vagrant创建3个虚拟机         IP地址:192.168.21.222,192.168.21.223,192.168.22.224         2.使用SecureCR

Hadoop2.6(NN/RM)高可用集群安装与部署

 Hadoop2对HDFS的改进很大,支持HDFS(NameNode) 和ResourceManager高可用性,避免集群中单点故障造成整个集群不可用.那么,从本文开始将部署一套高可用Hadoop集群及家族中相关开源系统,具体根据下面规划来,本文只部署高可用Hadoop集群,后续很快更新其他软件部署及使用. 一.部署前准备 操作系统:CentOS7_x64 安装目录:/opt 1. 节点分配 HostName IP Hadoop HBase Zookeeper Hive HMaster0 192