docker-zookeeper集群搭建(伪集群)

[TOC]

说明

docker安装问题

各个版本的docker安装需要自行百度, 基本上都是采用yum install docker 或者 apt-get install docker 等方式安装

docker命令问题

这里不对docker所有命令进行介绍, 相关命令会在使用时简要提及


我的docker版本17.05.0-ce

➜  ~ docker version
Client:
 Version:      17.05.0-ce
 API version:  1.29
 Go version:   go1.7.5
 Git commit:   89658be
 Built:        Thu May  4 22:10:54 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.05.0-ce
 API version:  1.29 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   89658be
 Built:        Thu May  4 22:10:54 2017
 OS/Arch:      linux/amd64
 Experimental: false

zookeeper镜像获取

docker pull zookeeper

这个命令会默认拉取最新的zookeeper镜像
镜像下载好了之后, 使用docker images命令可以查看到当前主机中存在的镜像

➜  ~ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
zookeeper           latest              5291027d4199        7 weeks ago         143MB

zookeeper单节点

zookeeper单节点启动

➜  ~ docker run --name zk1 -d zookeeper:latest
0543d3008a7dd666a72b514aaf922114d4d6ff87b06e1e3b0b8d3b07e4268a70
  • docker run: 该命令是从镜像启动一个容器, 使其运行起来
  • --name: 该参数是指定容器的名称, 如果不指定该参数, 则默认为这个容器的唯一ID, 也就是上面一串字符串的前面几位, 类似于git的版本记录
  • -d: 是让该容器以守护进程运行
  • zookeeper:latest: 指定zookeeper镜像及其版本, :是镜像与版本的分隔符

查看镜像中zookeeper的配置情况

docker exec -it zk1 /bin/bash

这个命令是建立与zk1之间的一个连接, 这个连接通过bash命令进行交互(我是这么理解的, 如有不对, 请指正)

  • -i: 建立标准输入通道进行交互
  • -t: 分配一个tty (我理解为linux登录之后分配的一个会话)

我将两个参数合并在一起, 所以直接用-it就好了

vi /conf/zoo.cfg
clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2

zookeeper的标准配置就在/conf
当我们启动容器的时候, zookeeper会自动启动, 并加载这个配置文件, 这个文件稍后我们还会用到, 留意一下

zookeeper单节点运行情况查看

➜  ~ docker logs zk1
...
-> 中间省略很多内容没有贴出来  
...binding to port 0.0.0.0/0.0.0.0:2181

查看zookeeper镜像启动日志(具体这个日志是怎么输出到这里的, 我还没去弄明白)

zookeeper运行状态

docker inspect zk1

查看docker 容器的一些构建信息, 这里我主要是查询该容器的ip地址

"IPAddress": "172.17.0.2"

接下在宿主机中执行命令, 查看zookeeper运行状态

➜  ~ echo stat | nc 172.17.0.2 2181
Zookeeper version: 3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
Clients:
 /172.17.0.1:35160[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 4

由此可知, 我们当前的zookeeper是单节点运行的, 接下来搭建集群版, 很简单哦, 正常配置zookeeper集群是一样的

zookeeper的docker容器集群搭建

说明

由于是宿主机只有一个, 所以所有docker容器在本机中都存在与一个网段中, 相互之间是可以进行通信的, 不需要使用--link命令也可以通信, 如果对docker有更进一步配置, 就需要要参照其它文档进行设置了

启动两个节点

重新按照如上命令启动两个节点, 加上zk1就3个节点了
通过docker inspect {container_name}命令我们可以获取到所有zookeeper单节点的ip地址

  • zk1: 172.17.0.2
  • zk2: 172.17.0.3
  • zk3: 172.17.0.4

配置

进入zk1, 编辑配置文件

docker exec -it zk1 /bin/bash

加上server的配置信息, 我直接贴出最终结果

clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
server.1=172.17.0.2:2888:3888
server.2=172.17.0.3:2888:3888
server.3=172.17.0.4:2888:3888

可以看出我把后面启动的两个zk的ip地址信息都添加进来了
2888, 是zk之间通信的端口
3888, 是zk之间投票选举的端口

保存退出

echo 1 > /data/myid

这条命令的意思是, 将1输出到/data/myid文件中, 这个是什么作用呢?
从我们的配置中可以看出, zk1的服务名是server.1, 这个1就是指定的服务名称

zk2, 和 zk3, 在配置文件上进行相同操作, 但是在echo 命令上分别输出2, 3,到对应的myid文件中

说一下为什么要放在/data目录下
因为从配置文件中我们知道, zookeeper配置了数据目录在/data, 所以我们要将myid文件放在/data目录下

全部保存退出, 重启容器

docker restart zk1
docker restart zk2
docker restart zk3

查看集群是否部署成功

➜  ~ echo stat | nc 172.17.0.2 2181
Zookeeper version: 3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
Clients:
 /172.17.0.1:35192[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: follower
Node count: 4

可以明显看到之前查询的mode从standlone变成了follower, 说明集群部署成功, 好了~~

结尾

这是一个学习阶段的探索, 有不足的地方请见谅, 欢迎指出毛病, 有错就改, 大家一起进步, 如果按照本方法不能成功搭建伪集群, 可留言与我联系, 微信: byhand90

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容