如何在docker群模式下执行动物园pipe理员健康检查?
我们有一个有3个节点的docker群集群。 我们在swarm中部署的一个组件具有本地群集function,并依靠zookeeper进行群集协调和领导者select。
所以我们在swarm中configuration了zookeeper(下面的configuration)(把每个zookeeper实例固定到一个特定的节点上,并且使用swarm overlaynetworking服务发现来让它们find对方)。
这个设置工作正常。 在我们的testing环境中(没有swarm /高可用性),我们使用zookeeper独立模式,并且可以很容易地执行健康检查
然而,在群集中,我无法使这些健康检查工作,因为所有动物园pipe理员都以复制模式运行,并且需要完全启动并运行,然后才能通过服务发现彼此parsing(zookeeper1 / zookeeper2和zookeeper3主机名) 。
- 如果没有健康检查,最终所有3个实例都会启动并运行,find对方并达成一致。
- 因为每个动物园pipe理员都无法find其他的2(zookeeper1永远不能解决zookeeper2 / 3,zookeeper2永远不能解决zookeeper1 / 3,….)
在这种情况下是否可以进行健康检查,这是部署动物园pipe理员的正确方法
version: '3' services: zookeeper1: image: zookeeper user: root networks: - cnet environment: - ZOO_MY_ID=1 - ZOO_SERVERS=server.1=0.0.0.0:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888 # healthcheck: # test: ["CMD", "/bin/zkServer.sh","status"] deploy: mode: replicated replicas: 1 placement: constraints: [node.hostname == centos-a] zookeeper2: image: zookeeper user: root networks: - cnet environment: - ZOO_MY_ID=2 - ZOO_SERVERS=server.1=zookeeper1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zookeeper3:2888:3888 # healthcheck: # test: ["CMD", "/bin/zkServer.sh","status"] deploy: mode: replicated replicas: 1 placement: constraints: [node.hostname == centos-b] zookeeper3: image: zookeeper user: root networks: - cnet environment: - ZOO_MY_ID=3 - ZOO_SERVERS=server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=0.0.0.0:2888:3888 # healthcheck: # test: ["CMD", "/bin/zkServer.sh","status"] deploy: mode: replicated replicas: 1 placement: constraints: [node.hostname == centos-manager]
- 服务发现Cassandra Docker集群
- 使用Kafka,Zookeeper和MongoDB Dockerize Spring Boot Java应用程序
- 如何在Docker中设置Zookeeper的dataDir(fig.yml)
- 对于基于Docker容器的实现,在同一个容器中运行一对Kafka服务器和Zookeeper服务器是否有意义?
- 如何安排监控CPU,内存,磁盘等工作
- 有没有办法从使用kafkacat在Docker容器中运行的kafka节点读取消息?
- 卡夫卡docker工人 – 不能从docker集装箱外生产或消费
- 使用预加载的数据创build自定义Zookeeper映像
- Zookeeper /参展商集群节点继续重新启动