Zookeeper 3.7.0 zookeeper not connected解决方案(低版本也适用)

前提

截止2021-07-29,各帖子文章解决zookeeper not connected的方法仍不全面,特别是面对通过Docker-Compose部署的Zookeeper、高版本的Zookeeper、高版本的Dubbo等情况,完全没有资源,因此我来撰写一篇

CentOS 8
Docker-Compose
Zookeeper 3.7.0
Dubbo 3.0.1
SpringBoot 2.5.2
application.yml

1、Dubbo Timeout

(1) dubbo.config-center.timeout

这个timeout默认是6000(ms),将其改大些,是最常见的解决方法
但仅此1个方法对于我的这台老爷爷机器完全不够

(2) dubbo.registry.timeout

也需要修改这个timeout
添加的内容如下(如果已经有dubbo:,则在dubbo的范围内直接添加最后4行即可):

dubbo:
  registry:
    timeout: 30000
  config-center:
    timeout: 30000

2、tickTime

(1)

tickTime: Zookeeper的基本时间单位,tickTime的默认值是3秒,即3000ms
minSessionTimeout: 自从Zookeeper3.3.0后,启动Zookeeper,服务器允许与客户端协商的最小会话超时(ms)
maxSessionTimeout: 自从Zookeeper3.3.0后,启动Zookeeper,服务器允许与客户端协商的最大会话超时(ms)

(2)

而minSessionTimeout、maxSessionTimeout的时间长度都以tickTime为单位,minSessionTimeout默认为2个tickTime,maxSessionTimeout默认为20个tickTime

(3)

那为了防止超时导致的zookeeper not connected,就要对默认的tickTime进行修改(毕竟minSessionTimeout、maxSessionTimeout依赖于tickTime,单单需改tickTime即可)

(4)

tickTime在Zookeeper的配置文件zoo.cfg中,既然是通过Docker部署的Zookeeper,又需要使用配置文件,那配置文件的目录挂载少不了

(5)

先找出zoo.cfg在容器中的路径,通过一下方法查找:

find / -name zoo.cfg

查找到的路径为(中间那段乱乱的数字为容器ID,太长了影响观看,我给删短了再贴上来):

/var/lib/docker/overlay2/5c4fbc/diff/conf/zoo.cfg

可见Zookeeper容器中的zoo.cfg路径为:/conf/zoo.cfg(从diff开始都与容器目录无关,其他容器也是如此)

(6)

据此在宿主机中自定义的目录下创建zoo.cfg,在docker-compose.yml中与容器的zoo.cfg路径挂载起来(这里就不贴出来了)
创建的zoo.cfg:

dataDir=/data
dataLogDir=/datalog
tickTime=30000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181
audit.enable=true

3、Zookeeper disable改为enable

Zookeeper 3.7.0默认是disable的(我的说法不准确,随便康康就行),因此要让它跑起来,同在zoo.cfg中添加修改即可,修改的内容就在上方的zoo.cfg中有写,即:audit.enable=true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值