本示例基于Centos 7,在阿里云的三台机器上部署zookeeper集群,假设目前使用的账号为release,拥有sudo权限。

由于Docker官方镜像下载较慢,可以开启阿里云的Docker镜像下载加速器,可参考此文进行配置。

假设三台主机的ip分别为:

  • 主机一:192.168.0.1
  • 主机二:192.168.0.2
  • 主机三:192.168.0.3

三台主机的安装步骤相似,以主机一为例:

1. 安装docker服务:

 sudo yum install -y docker

2. 启动docker服务:

sudo service docker start

3. 查找zookeeper镜像:

sudo docker search zookeeper

4. 下载官方redis镜像:

sudo  docker pull docker.io/zookeeper

5. 下载完后可检查镜像:

sudo docker images 

6. 主机上建立挂载目录和zookeeper配置文件:

mkdir -p /data/zookeeper_data/conf
mkdir -p /data/zookeeper_data/data
cd /data/zookeeper_data/conf
touch zoo.cfg
vi zoo.cfg

三台主机上的zoo.cfg配置信息如下:

clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.0=192.168.0.1:2888:3888
server.1=192.168.0.2:2888:3888
server.2=192.168.0.3:2888:3888

在主机一上为自己分配server id,命令如下:

cd /data/zookeeper_data/data
touch myid
echo > myid

在主机二上为自己分配server id,命令如下:

cd /data/zookeeper_data/data
touch myid
echo > myid

在主机二上为自己分配server id,命令如下:

cd /data/zookeeper_data/data
touch myid
echo > myid

7. 三台主机依次启动容器:

sudo docker run  --network host -v /data/zookeeper_data/data:/data -v /data/zookeeper_data/conf:/conf --name zk- -d docker.io/zookeeper

命令说明:

  • --network host: 使用主机上的网络配置,如果不用这种模式,而用默认的bridge模式,会导致容器跨主机间通信失败
  • -v /data/zookeeper_data/data:/data:主机的数据目录挂载到容器/data下
  • -v /data/zookeeper_data/conf:/conf: 主机的配置目录挂载到容器的/conf下,容器内的zkServer.sh默认会读取/conf/zoo.cfg下的配置

都启动完成后,每台主机的2181/2888/3888端口都会开放出来了

8. 检查容器的启动情况:

sudo docker exec -it 容器id /bin/bash

进入容器内部后,其工作目录为:/zookeeper-3.4.13(版本依据镜像而定),执行zookeeper检查:

[release@sh-lbs02 data]$ sudo docker exec -it  /bin/bash
[sudo] password for release:
bash-4.4# pwd
/zookeeper-3.4.
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
bash-4.4#

可以看到这个容器目前为从机状态,至此集群已启动完成。

9. 若启动失败了,通过如下命令观察zookeeper的启动日志:

sudo docker logs 容器id/容器名称

内容示例如下:

[release@sh-lbs02 ~]$ sudo docker logs zk-
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.server.quorum.QuorumPeerConfig).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Docker应用系列(二)| 构建Zookeeper集群的更多相关文章

  1. 【拆分版】Docker-compose构建Zookeeper集群管理Kafka集群

    写在前边 在搭建Logstash多节点之前,想到就算先搭好Logstash启动会因为日志无法连接到Kafka Brokers而无限重试,所以这里先构建下Zookeeper集群管理的Kafka集群. 众 ...

  2. Docker 一步搞定 ZooKeeper 集群的搭建

    Docker 一步搞定 ZooKeeper 集群的搭建 背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 ...

  3. 使用 Docker 一步搞定 ZooKeeper 集群的搭建

    背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 Docker 的镜像了, 于是就尝试了一下, 发现真是爽 ...

  4. 构建Zookeeper集群(zkcluster) ~一篇文章玩转zk集群^.^

    概念 Zookeeper集群是由一个leader(负责人)主机和多个follower(追随者)或observer(观察者)主机组成. 构建一个Zookeeper集群需要有一个leader和一个foll ...

  5. 定时组件quartz系列<二>quartz的集群原理

    1.基本信息:      Quartz是一个开源的作业调度框架,它完全由java写成,并设计用于J2Se和J2EE应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它 来为执行一个作业而创建简单的或 ...

  6. LVS系列二、LVS集群-DR模式

    一. LVS-DR和LVS-IP TUN集群概述 1.  Direct Routing(直接路由) Director分配请求到不同的real server.real server处理请求后直接回应给用 ...

  7. ElasticSearch实践系列(二):探索集群

    前言 为了方便ELK的逐步搭建,我们本篇文章先安装Kibana,然后用Kibana的DevTols执行命令.也可以安装elasticsearch-head运行命令. 安装Kibana 参考Instal ...

  8. docker环境下solrcloud+zookeeper集群部署教程

    前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...

  9. zookeeper集群搭建及Leader选举算法源码解析

    第一章.zookeeper概述 一.zookeeper 简介 zookeeper 是一个开源的分布式应用程序协调服务器,是 Hadoop 的重要组件. zooKeeper 是一个分布式的,开放源码的分 ...

随机推荐

  1. swiper.js的使用

    点击api文档地址, (1)图片轮播banner <script src="js/jquery-2.1.4.min.js"></script> <sc ...

  2. Eclipse 使用mybatis generator插件自动生成代码

    Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...

  3. 数学&动态规划:期望DP

    BZOJ3036 给定一张有向无环图,起点为1,终点为N,每个点i有ki条出边,从每个点走其中一条出边的概率是1/ki,求从1到N的期望步数 我们注意到一点,走每条边都是等概率的,那么就相当于 给定一 ...

  4. 可编辑表格(Editable Table)

    需求分析 1.单击table的每个cell后,给cell加上一个尺寸相当的input; 2.input后把value传给cell的innerHTML; 3.失焦后删除input. HTML <! ...

  5. 【BZOJ4565】【HAOI2016】字符合并 [状压DP][区间DP]

    字符合并 Time Limit: 20 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 有一个长度为 n 的 01 串,你 ...

  6. [bzoj 2460]线性基+贪心+证明过程

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 网上很多题目都没说这个题目的证明,只说了贪心策略,我比较愚钝,在大神眼里的显然的策略 ...

  7. 引用类型 ( 对象定义 )——Object 类型

    本文地址:http://www.cnblogs.com/veinyin/p/7607100.html  创建实例 new 操作符后跟构造函数 var people = new Object(); pe ...

  8. 【leetcode 简单】第三十八题 两数之和 II - 输入有序数组

    给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值( ...

  9. sublime格式化css代码插件:css format

    有时会从网上下载一些css压缩文件,打开后所有代码都在一行,不利于阅读,通过css format插件,能快速展开代码,方便阅读. 参考:Sublime Text 上最好用的 CSS 格式化插件 —— ...

  10. 组合数+逆元 A - Chat Group Gym - 101775A

    题目链接:https://cn.vjudge.net/contest/274151#problem/A 具体思路:我们可以先把所有的情况算出来,为2^n.然后不合法的情况减去就可以了.注意除法的时候要 ...