部分引用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实例控制台
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"/>