docker-compose搭建zookeeper集群环境

使用docker-compose搭建zookeeper集群环境

zookeeper是一个集群环境,用来管理微服务架构下面的配置管理功能。

这篇文章是一个基础步骤如何搭建zookeeper的docker集群环境。
我们使用docker-compose来搭建如下的zookeeper集群环境:

  1. 集群包含三个node:zookeeper1, zookeeper2, zookeeper3
  1. 下载zookeeper docker image
$ docker pull zookeeper
  1. 编辑docker-compose.yaml文件
version: '2'
networks:
byfn: services:
zookeeper1:
image: zookeeper
container_name: zookeeper1
environment:
- ZOO_MY_ID=1
- ZOO_SERVERS=server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
ports:
- 2181
networks:
- byfn zookeeper2:
image: zookeeper
container_name: zookeeper2
environment:
- ZOO_MY_ID=2
- ZOO_SERVERS=server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
ports:
- 2181
networks:
- byfn zookeeper3:
image: zookeeper
container_name: zookeeper3
environment:
- ZOO_MY_ID=3
- ZOO_SERVERS=server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
ports:
- 2181
networks:
- byfn

详细的配置请参考文档:https://hub.docker.com/_/zookeeper/
这里非常清楚的描述了如何修改配置,存储数据,以及调整日志级别以及输出等设置。

  1. 启动服务
$ docker-compose up
  1. 验证集群的状态
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1f7646bf0e6 zookeeper "/docker-entrypoin..." 23 minutes ago Up 23 minutes 2888/tcp, 3888/tcp, 0.0.0.0:32794->2181/tcp zookeeper2
7e05f06c258d zookeeper "/docker-entrypoin..." 23 minutes ago Up 23 minutes 2888/tcp, 3888/tcp, 0.0.0.0:32793->2181/tcp zookeeper3
d293438c1813 zookeeper "/docker-entrypoin..." 23 minutes ago Up 23 minutes 2888/tcp, 3888/tcp, 0.0.0.0:32792->2181/tcp zookeeper1 $ docker exec -t zookeeper1 zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
$ docker exec -t zookeeper2 zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
$ docker exec -t zookeeper3 zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader

这里我们看到三个zookeeper节点,zookeeper3是leader,zookeeper1和zookeeper2是follower。

其他状态检查命令:

$ nc localhost 32794 <<< ruok
imok $ echo srvr | nc localhost 32794
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
Latency min/avg/max: 0/7/116
Received: 40
Sent: 39
Connections: 1
Outstanding: 0
Zxid: 0x10000000e
Mode: follower
Node count: 5
  1. 集群的使用

4.1 基本操作

[zk: localhost:2181(CONNECTED) 4] create /foo "Hello foo"
Created /foo [zk: localhost:2181(CONNECTED) 5] get /foo
Hello foo
cZxid = 0x100000013
ctime = Fri Jan 04 02:29:47 GMT 2019
mZxid = 0x100000013
mtime = Fri Jan 04 02:29:47 GMT 2019
pZxid = 0x100000013
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0 [zk: localhost:2181(CONNECTED) 6] ls /foo
[]

4.2 创建路径create

[zk: localhost:2181(CONNECTED) 7] create /foo1/foo1 "Hello foo1"
Node does not exist: /foo1/foo1

创建失败,因为zookeeper不支持递归创建,必须先一级一级的创建父目录节点。
创建父目录时,让值为空就可以。(其实目录也可以带值,两者并不冲突。)

[zk: localhost:2181(CONNECTED) 14] create /foo1 ""     # 或者:create /foo1 ""
Created /foo1 [zk: localhost:2181(CONNECTED) 15] create /foo1/foo1 "Hello foo1"
Created /foo1/foo1

4.3 查看节点的元素ls

[zk: localhost:2181(CONNECTED) 21] ls /foo1
[foo1]

因为/foo1是一个目录,他下面有一个子节点/foo1/foo1

[zk: localhost:2181(CONNECTED) 21] ls /foo1/foo1
[]

因为/foo1/foo1是一个元节点,他下面没有子节点了。

注意,ls命令只能列出一级目录,不能递归列出所有的子目录。

4.4 获取值get

get /foo1/foo1

4.5 修改值set

set /foo1/foo1 'newvalue'

4.6 删除节点delete

delete /foo1/foo1

注意只能删除子节点为空的节点;所以如果要删除一个节点,必须先把所有的子节点都删除。
如果要删除非空目录,还可以使用rmr命令。

作者:CodingCode
链接:https://www.jianshu.com/p/8d31ede99206
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

docker-compose搭建zookeeper集群环境 CodingCode的更多相关文章

  1. Docker中搭建zookeeper集群

    1.获取官方镜像 从dockerhub获取官方的zookeeper镜像: docker pull zookeeper 2.了解镜像内容 拉取完镜像后,通过 docker inspect zookeep ...

  2. 05.kafka提前准备工作:搭建zookeeper集群环境

    总体参考:http://www.cnblogs.com/zhangs1986/p/6564839.html 搭建之间同步下spark01.02.03的环境 复制/opt/flume这个文件夹到 spa ...

  3. 在本地模拟搭建zookeeper集群环境实例

    先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html Get ...

  4. docker 搭建zookeeper集群和kafka集群

    docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之 ...

  5. docker容器中搭建kafka集群环境

    Kafka集群管理.状态保存是通过zookeeper实现,所以先要搭建zookeeper集群 zookeeper集群搭建 一.软件环境: zookeeper集群需要超过半数的的node存活才能对外服务 ...

  6. [转]ZooKeeper 集群环境搭建 (本机3个节点)

    ZooKeeper 集群环境搭建 (本机3个节点) 是一个简单的分布式同步数据库(或者是小文件系统) ------------------------------------------------- ...

  7. zookeeper集群环境搭建详细图文教程

    zookeeper集群环境搭建详细图文教程 zhoubang @ 2018-01-02 [文档大纲] 友情介绍 软件环境 注意点 环境安装 1. 新建用于存储安装包以及软件安装的目录 2. 下载安装z ...

  8. Linux环境下ZooKeeper集群环境搭建关键步骤

    ZooKeeper版本:zookeeper-3.4.9 ZooKeeper节点:3个节点 以下为Linux环境下ZooKeeper集群环境搭建关键步骤: 前提条件:已完成在Linux环境中安装JDK并 ...

  9. 如何搭建Zookeeper集群

     ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的 ...

随机推荐

  1. 2019 蓝鲸人java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.蓝鲸人等公司offer,岗位是Java后端开发,因为发展原因最终选择去了蓝鲸人,入职一年时间了,也成为了面试官 ...

  2. 通过Nginx获取用户真实IP

    nginx配置 location / { proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set ...

  3. 在React中写一个Animation组件,为组件进入和离开加上动画/过度

    问题 在单页面应用中,我们经常需要给路由的切换或者元素的挂载和卸载加上过渡效果,为这么一个小功能引入第三方框架,实在有点小纠结.不如自己封装. 思路 原理 以进入时opacity: 0 --> ...

  4. Cocos Creator 返回字符串长度(字符),汉字计数为2

    function strLength(str) { var a = 0; for (var i = 0; i < str.length; i++) { if (str.charCodeAt(i) ...

  5. 面试官:优化代码中大量的if/else,你有什么方案?

    一个快速迭代的项目,时间久了之后,代码中可能会充斥着大量的if/else,嵌套6.7层,一个函数几百行,简!直!看!死!人! 这个无限循环嵌套,只是总循环的一部分...我已经绕晕在黄桷湾立交 仔细数了 ...

  6. python_机器学习(一)、基本概念

    机器学习基础知识: (一).什么是机器学习? 对于某给定的任务T, 在合理的性能调度方案P的前提下, 某计算机程序可以自主学习任务T的经验E, 随着提供合适.优质.大量的经验E, 该程序任务T的性能逐 ...

  7. Natas25-writeup

    前言 题目链接: http://natas25.natas.labs.overthewire.org 做这一题花了一些时间,也是由于自己知识点掌握不足,所以分享下解题过程. 题目分析 首先,登录后看到 ...

  8. 【JavaScript】图片加载由模糊变清晰 —— 图片优化

    开发过程中,一些图片的展示时,加载很慢很久,后来把图片缩放压成缩略图吧,速度是快了但是模糊不清,如何处理这样问题,下面就和大家分享一下自己的处理方法. 先让客户端加载像素小的缩略图: <img ...

  9. POJ 3155Hard Life(最大密度子图)

    论文出处:最小割模型在信息学竞赛终的应用 #include <iostream> #include <cstdio> #include <cstring> #inc ...

  10. 11-cmake语法-函数和宏的定义

    cmake语法不仅仅可以适用于 CMakeLists.txt,也适用于 xxx.cmake 文档. 在 OpenCV 的 CMakeLists.txt 中,很多 ocv_XXX() 的函数,都是定义在 ...