资讯专栏INFORMATION COLUMN

在Docker中运行的ZooKeeper无法使用四字命令解决办法

Kerr1Gan / 2450人阅读

摘要:如果正常返回,否则返回空重置服务器的统计信息输出服务器的详细信息。版本接收发送包数量连接数模式节点总数输出服务器的详细信息接收发送包数量连接数模式节点总数延迟。如果数量很大的话,将会产生很大的开销,会影响性能,小心使用列出集群的健康状态。

前阵子写过一篇文章,用来记录如何在docker中启动ZooKeeper的单机或者集群节点,最近收到一个issue,大意是说项目启动后,测试ZK的四字命令无效,这篇文章记录一下解决办法
ZK四字命令

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

zk四字命令列表:

命令 示范 解释
conf echo conf nc 127.0.0.1 2181 输出相关服务配置的详细信息。比如端口、zk数据及日志配置路径、最大连接数,session超时时间、serverId等
cons echo cons nc 127.0.0.1 2181 列出所有连接到这台服务器的客户端连接/会话的详细信息 包括“接受/发送”的包数量、session id 、操作延迟、最后的操作执行等信息
crst echo crst nc 127.0.0.1 2181 重置当前这台服务器所有连接/会话的统计信息
dump echo dump nc 127.0.0.1 2181 列出未经处理的会话和临时节点(只在leader上有效)
envi echo envi nc 127.0.0.1 2181 输出关于服务器的环境详细信息(不同于conf命令),比如host.name、java.version、java.home、user.dir=/data/zookeeper-3.4.6/bin之类信息
ruok echo ruok nc 127.0.0.1 2181 测试服务是否处于正确运行状态。如果正常返回"imok",否则返回空
srst echo srst nc 127.0.0.1 2181 重置服务器的统计信息
srvr echo srvr nc 127.0.0.1 2181 (New in 3.3.0)输出服务器的详细信息。zk版本、接收/发送包数量、连接数、模式(leader/follower)、节点总数
stat echo stat nc 127.0.0.1 2181 输出服务器的详细信息:接收/发送包数量、连接数、模式(leader/follower)、节点总数、延迟。 所有客户端的列表
wchs echo wchs nc 127.0.0.1 2181 列出服务器watches的简洁信息:连接总数、watching节点总数和watches总数
wchc echo wchc nc 127.0.0.1 2181 通过session分组,列出watch的所有节点,它的输出是一个与 watch 相关的会话的节点列表。如果watches数量很大的话,将会产生很大的开销,会影响性能,小心使用
wchp echo wchp nc 127.0.0.1 2181 通过路径分组,列出所有的 watch 的session id信息。它输出一个与 session 相关的路径。如果watches数量很大的话,将会产生很大的开销,会影响性能,小心使用
mntr echo mntr nc 127.0.0.1 2181 列出集群的健康状态。包括“接受/发送”的包数量、操作延迟、当前服务模式(leader/follower)、节点总数、watch总数、临时节点总数
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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75816.html

相关文章

  • 技术干货 | 初次微服务体验:从Docker容器农场说起

    摘要:或许你的第一次微服务体验,就从本文开始在本文中,和等纷纷亮相,并配有详细的代码说明。该角色与本地网络及的配置设置相关。由于会在虚拟机初始化过程中自动执行配置任务,因此惟一的解决办法就是将相关内容提取至单独的剧本当中 这是一篇温和有趣的技术文章,如果你初识Docker,对微服务充满兴趣,不妨一读。或许你的第一次微服务体验,就从本文开始…… 在本文中,Mesos、Zookeeper、Ma...

    魏宪会 评论0 收藏0
  • 基于Docker运行弹性集群五个关键点之:运行高可用模式

    摘要:当企业的运维团队去维护一个弹性的容器集群时,传统的软件部署方式需要向容器迁移,这个过程中需要有风险预判和规避之道。但是这样会有些问题,就是大部分镜像都是基于构建的,这会和树莓派的很不兼容。多次尝试后状态被破坏删库重试,重启大法好。 当前技术世界的发展形势就是让开发人员从繁琐的应用配置和管理中解放出来,使用容器镜像来处理复杂的程序运行依赖库的需求,保证代码运行环境的一致性。既然这样的好处...

    antz 评论0 收藏0
  • 使用 Docker 一步搞定 ZooKeeper 集群搭建

    摘要:背景原来学习时我是在本地搭建的伪集群虽然说使用起来没有什么问题但是总感觉部署起来有点麻烦刚好我发现了已经有了的镜像了于是就尝试了一下发现真是爽爆了几个命令就可以搭建一个完整的集群下面我简单记录一下使用搭建集群的一些步骤镜像下载上有不少镜像不 背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 D...

    B0B0 评论0 收藏0
  • docker 必备 — marathon 基础教程

    摘要:基本概念采用与相同的机制,只是运行在不同的抽象层次上。它是一个为分布式应用提供一致性服务的软件,提供的功能包括配置维护名字服务分布式同步组服务等。它是集群的分布式,能够原样运行任何二进制发布版本,如等等。部署为了部署的方便全部使用部署。 筋斗云 岂安运维工程师爱游泳、爱旅行、爱计算机。 前言 目前越来越多的互联网企业开始使用 docker,在这之前,虚拟机占据着大部分的企业市场...

    罗志环 评论0 收藏0
  • docker 必备 — marathon 基础教程

    摘要:基本概念采用与相同的机制,只是运行在不同的抽象层次上。它是一个为分布式应用提供一致性服务的软件,提供的功能包括配置维护名字服务分布式同步组服务等。它是集群的分布式,能够原样运行任何二进制发布版本,如等等。部署为了部署的方便全部使用部署。 筋斗云 岂安运维工程师爱游泳、爱旅行、爱计算机。 前言 目前越来越多的互联网企业开始使用 docker,在这之前,虚拟机占据着大部分的企业市场...

    learning 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<