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. asp.net core 在centeros 7.x下创建服务

    Netcore服务生成说明 如有个项目/opt/wwwroot/dpms.1633.com 启动为/usr/bin/dotnet /opt/wwwroot/dpms.1633.com/DPMS.Web ...

  2. vue中路由在新的标签页打开

    如下 let routeData = this.$router.resolve({ name: 'commercialPreview', query: {cylType: this.$route.qu ...

  3. 浅析负载均衡的6种算法,Ngnix的5种算法

    常见的几种负载均衡算法 1.轮询法 将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载. 2.随机法 通过系统的随机算法,根据后端服务器的 ...

  4. EurekaClient自动装配及启动流程解析

    在上篇文章中,我们简单介绍了EurekaServer自动装配及启动流程解析,本篇文章则继续研究EurekaClient的相关代码 老规矩,先看spring.factories文件,其中引入了一个配置类 ...

  5. sklearn聚类评价指标

    sklearn中的指标都在sklearn.metric包下,与聚类相关的指标都在sklearn.metric.cluster包下,聚类相关的指标分为两类:有监督指标和无监督指标,这两类指标分别在skl ...

  6. Mybatis一对一,一对多,多对多代码

    一对一 <!-- 关系映射 --> <!-- 1-1:自动映射 --> <select id="oneToOne" resultType=" ...

  7. JDBC注册驱动程序3种方式

    以MySQL的驱动为例,介绍注册驱动程序的3种方式 1:Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动 package c ...

  8. CSS 总结 [目录]

    一.CSS 基础 1.CSS 初识 2.CSS 用法和特性 二.CSS 选择器 1.基本选择器 2.组合选择器 3.属性选择器 4.伪类选择器 5.伪元素选择器 三.CSS 字体样式 四.CSS 文本 ...

  9. make CMake 来龙去脉

    理论上说,任意一个C++程序都可以用g++来编译. 大家都知道,写程序大体步骤如下: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执 ...

  10. idea svn 文件还原到指定版本

    使用svn经常会遇见,由于自己或者其他同事的提交(或者误操作),把原本正确代码或文件覆盖掉了,现在就得需要恢复到之前指定的某个版本. 先打开指定的文件,然后右上角点击时间的按钮: 这比会出现以前的许多 ...