注:本文使用docker for windows模拟构建zookeeper集群,在linux系统下,可使用同样的docker命令构建

参考url:https://github.com/31z4/zookeeper-docker

1. 创建一个文件,名为:stack.yml,内容为:

version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888

执行命令构建:docker stack deploy -c stack.yml zookeeper
或者:docker-compose -f stack.yml up
创建完成后,发现发生错误,java.net.ConnectException: Connection refused

其实这三个容器已经创建好了,但是就是没有启动,我们输入命令单个逐个启动,就可以了
docker start zookeeper_zoo1_1
docker start zookeeper_zoo2_1
docker start zookeeper_zoo3_1

2. 在三个节点上,依次执行命令zkServer.sh status(可以看到MODE,谁是leader,谁是follower)

3. 集群测试

  • 进入master,创建一个根节点
    输入命令进入master:docker exec -it zookeeper_zoo3_1 zkCli.sh

    创建一个根节点目录:create /project zookeeper_project
    输入命令:get /project

    在主机上创建成功
  • 进入follower节点,查看相应目录
    输入命令,进入zookeeper_zoo1_1:docker exec -it zookeeper_zoo1_1 zkCli.sh
    输入命令:get /project

    输入命令,进入zookeeper_zoo2_1:docker exec -it zookeeper_zoo2_1 zkCli.sh
    输入命令:get /project

    都成功了,说明集群也成功了

4. Zookeeper高可用测试-从节点接管主节点为新的主节点

  • 进入zookeeper_zoo3_1,查看状态为leader
    命令:docker exec –it zookeeper_zoo3_1 bash
    zkServer.sh status

  • 剩下的zoo1和zoo2都是follower节点
    输入命令,关闭zoo3
    Docker stop zookeeper_zoo3_1

    关闭主节点后,我们再查看子节点的状态

    发现zoo2变成了主节点,zoo1还是从节点
  • 我们再打开zoo3节点,再查看三个节点的状态
    Docker start zookeeper_zoo3_1

    我们发现zoo3和zoo1为从节点,zoo2变成了主节点,从此可以看出,zookeeper集群已经成功!

Docker部署Zookeeper部署集群实践(2)的更多相关文章

  1. Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战

    Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...

  2. 在kubernetes上部署zookeeper,kafka集群

    本文采用网上镜像:mirrorgooglecontainers/kubernetes-zookeeper:1.0-3.4.10 准备共享存储:nfs,glusterfs,seaweed或其他,并在no ...

  3. Docker搭建Zookeeper&Kafka集群

    最近在学习Kafka,准备测试集群状态的时候感觉无论是开三台虚拟机或者在一台虚拟机开辟三个不同的端口号都太麻烦了(嗯..主要是懒). 环境准备 一台可以上网且有CentOS7虚拟机的电脑 为什么使用虚 ...

  4. docker 部署 zookeeper+kafka 集群

    主机三台172.16.100.61172.16.100.62172.16.100.63Docker 版本 当前最新版 # 部署zk有2种方法 ## 注意 \后不要跟空格 一 . 端口映射 172.16 ...

  5. 基于Docker一键部署大规模Hadoop集群及设计思路

    一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...

  6. Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)

    文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...

  7. Zookeeper+Kafka集群部署(转)

    Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kaf ...

  8. Zookeeper+Kafka集群部署

    Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kaf ...

  9. Docker简单部署Ceph测试集群

    通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的;假设你只有一台机器,装了linux(如Ubuntu)系统和docker环境, ...

  10. 宝塔面板 + Rancher + 阿里云镜像仓库 + Docker + Kubernetes,添加集群、部署 web 应用

    目录 一,安装宝塔面板(V 6.8) 二,使用宝塔安装 Docker,配置阿里云容器服务 三,安装 Rancher (Server) 四,管理 Rancher.添加集群 五,添加 Rancher 应用 ...

随机推荐

  1. Android系统编程入门系列之界面Activity绘制展示

    上篇文章介绍了界面Activity的启动方式和生命周期,本篇将继续介绍在界面Activity中的内容是如何绘制展示给用户的. 在Android系统上运行新创建的界面Activtiy,给用户展示的是空白 ...

  2. APP-SECURITY-404 组件导出漏洞复现

    参考资料:https://github.com/wnagzihxa1n/APP-SECURITY-404/blob/master/2.%E7%BB%84%E4%BB%B6%E5%AF%BC%E5%87 ...

  3. 扩大UIPageViewController的点击范围

    UIPageViewController中的边缘点击手势大概是屏幕的1/6,市面的大多数阅读器点击手势都在1/3以上,或者我干脆想自定义点击的范围,但又不想放弃系统的翻页效果,这时候该怎么做了?其实很 ...

  4. Docker部署Mysq集群

    1.PXC(Percona XtraDB Cluster) 速度慢 但能保证强一致性 适用于保存价值较高的数据 数据同步是双向的 在任一节点写入数据 都会同步到其他所有节点 在任何节点上都能同时读写 ...

  5. Python单元测试框架unittest之批量用例管理(discover)

    前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了.加载用例后,用unittest里面的TextT ...

  6. java001-java基础

    基础数据类型 int--->Integer long--->Long float--->Float double--->Double boolean--->Boolean ...

  7. PYTHON3.4.4 升级pip

    python -m pip install --upgrade pipupgrade 前面是两个 "-" 

  8. C语言:预定义的宏

    预定义宏就是已经预先定义好的宏,我们可以直接使用,无需再重新定义.ANSI C 规定了以下几个预定义宏,它们在各个编译器下都可以使用: __LINE__:表示当前源代码的行号: __FILE__:表示 ...

  9. 【转载】SpringMVC学习笔记

    转载于:SpringMVC笔记 SpringMVC 1.SpringMVC概述 MVC: Model(模型): 数据模型,提供要展示的数据,:Value Object(数据Dao) 和 服务层(行为S ...

  10. HTML5-CSS(三)

    一.CSS  盒模型 1.元素尺寸:CSS 盒模型中最基础的就是设置一个元素的尺寸大小.有三组样式来配置一个元素的尺寸大小,样式表如下 //设置元素尺寸 div { width: 200px;heig ...