本示例基于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. 1.redis设计与实现--简单动态字符串

    1.redis没有使用c语言的字符串表示,而是使用更加适合自己的SDS(simple dynamic string),简单动态字符串,结构如下: 2.sys与c字符串的对比: 3.总结: redis采 ...

  2. Redhat安装配置VNC服务器

    1. 检查安装VNC服务器 # rpm -qa|grep vnc 如果返回信息中有tigervnc-server,说明已安装了VNC:如果没有: # yum install tigervnc # yu ...

  3. dubbo 响应超时异常: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout.

    因为dubbo默认的时间是500ms,超过这个时间它会重新请求服务层,最多尝试三次. 如果数据量比较大就不行了显示出来的异常为timeout. 在服务提供端设置timeout=1200000 并且加了 ...

  4. 朋友封装的一个ASP.NET上传文件的方法

    朋友做了asp.net开发多年,做了这个,自我感觉封装得还不错!!! 代码如下: #region 上传文件的方法 /// <summary> /// 上传文件方法 /// </sum ...

  5. 2017ACM暑期多校联合训练 - Team 1 1003 HDU 6035 Colorful Tree (dfs)

    题目链接 Problem Description There is a tree with n nodes, each of which has a type of color represented ...

  6. 背包DP FOJ 2214

    题目:http://acm.fzu.edu.cn/problem.php?pid=2214 (http://www.fjutacm.com/Problem.jsp?pid=2053) 这题看起来是一题 ...

  7. oracle 归档模式、补充日志

    1.归档模式: Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里.一般数据库至少要有2个联机重做日志组.当一个联机重做 ...

  8. 全面了解 Nginx 主要应用场景

    前言 本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流 N ...

  9. Python Random模块生成伪随机数字

    This module implements pseudo-random number generators for various distributions. 对于整数,有一个范围的均匀选择: 对 ...

  10. selenium grid结构图

    调用 Selenium-Grid 的基本结构图如下: 上面是使用 selenium-grid 的一种普通方式,仅仅使用了其支持的分布式执行的功能,即当你同时需 要测试用例比较多时,可以平行的执行这些用 ...