ZK四字命令

四字命令其实就是通过类似 echo stat | nc 127.0.0.1 2181 这样的指令,来与zk节点交互,获取或者设置数据的指令

zk四字命令列表:

Docker容器中的ZooKeeper不响应四字命令

随着ZooKeeper的官方Docker镜像推出,大家也都纷纷按照官方介绍的那样,用Docker来运行ZooKeeper,开始用着很爽,直到有人发现四字命令出问题:“输了命令没有响应”

百度谷歌各家论坛也没有找到解决办法,直到认真翻了一遍ZooKeeper的官方文档:zookeeper-doc

才发现,使用Docker镜像启动的ZK容器,默认是没有配置四字命令白名单列表的,说白了,你只有在这个docker容器内部才能使用四字命令,而到了宿主机上,则会被禁止掉,所以就会出现无响应这种问题

那么解决办法也很简单,我们可以利用volumes指令,在宿主机上配置好zk镜像,再映射到容器中来启动zk即可解决

具体操作办法:

  • 编写配置文件zoo.cfg,并保存在./config目录下,内容如下所示:

    	dataDir=/data
    	dataLogDir=/datalog
    	tickTime=2000
    	initLimit=5
    	syncLimit=2
    	autopurge.snapRetainCount=3
    	autopurge.purgeInterval=0
    	maxClientCnxns=60
    	standaloneEnabled=true
    	admin.enableServer=true
    	server.1=localhost:2888:3888;2181
    	4lw.commands.whitelist=*
    
  • 编写docker-compose,配置volumes,添加以下内容:

volumes:
      - ./config:/conf
  • 启动测试,解决

如果这篇文章没有帮助您解决问题的话,欢迎来:docker-compose-zookeeper 发布issue

08-05 21:23