关于zookeeper连不上解决方法暨使用外网访问阿里云服务器安装的ZooKeeper以实现服务的注册

部分引用https://blog.csdn.net/sl1992/article/details/79879209

另外当linux使用了nohup和& 后台运行程序时,./zkServer.sh status 会卡死。

在用ZooKeeper用于网站表现层和服务层的注册功能,发现运行服务层时候控制台一直卡着不动,既不报错也不打印东西,也不 完成。后面通过复制打印log的文件log4j.properties到/***-***-manager/src/main/resources下,打印日志(这是一个神器,可以把异常打印 出来),得知连不上zookeeper。

llog4j.properties文件共享出来,就几行代码,如下

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
先看看你有没有连vpn之类的东西,我也因为过这个原因搞了半天.

首先第一个问题是阿里云禁止我的这个外网访问,解决如下:

将云服务器的/etc/hosts文件外网IP地址修改为内网IP地址

.1进入阿里云ECS实例控制台 
进入ECS控制台
2.选择更多-安全组配置 
选择更多-安全组配置 
3.选择配置规则 
选择配置规则
4.选择添加安全组规则 
选择添加安全组规则
5.添加安全组规则

可根据需要选择协议类型及设置对应端口范围,为了省事,我选择协议类型为全部。点击确定,安全组规则设置完成。 
添加安全组规则

这样Windows或MAC机器就能使用ECS提供的外网IP访问到ZooKeeper了。


使用外网IP和主机名映射的配置会报最开始的错误,解决方案如下:

1.ZooKeeper的配置文件zoo.cfg要加参数quorumListenOnAllIPs=true

2.需要进入ECS控制台配置安全组规则,伪分布式ZooKeeper使用到的端口都需要在规则内

设置完成后启动ZooKeeper,发现启动成功,而且Windows或MAC机器也能使用ECS提供的外网IP访问到ZooKeeper了。


服务层搞定以后,运行表现层,同样卡住不动,复制打印log的文件到/***-***-web/src/main/resources下,不得不说这是一个神器,发现仍然报连不上linux上的zookeeper。发现和服务层的端口号不一样,将2183改为2181.完美解决

<!-- 引用dubbo服务 -->
<dubbo:application name="***-***-web"/>
<dubbo:registry protocol="zookeeper" address="47.98.***.***:2181"/>


猜你喜欢

转载自blog.csdn.net/weixin_38450840/article/details/80686167