通过Docker搭建zookeeper简单的集群

简介

ZooKeeper是一个开源的分布式协调服务,由雅虎创建开发,是Google的Chubby一个开源的实现,后来托管到Apache。
Zookeeper的数据结构,跟Unix文件系统非常类似,可以看做是一颗树,每个节点叫做znode。
Znode有两种类型:

  • 临时节点: 当客户端和服务端链接断开,创建的节点会被自动删除。
  • 持久节点: 当客户端和服务端链接断开,节点不会被删除。

ZooKeeper实现数据发布/订阅,负载均衡,命名服务,分布式协调,集群管理,配置维护,名字服务,分布式同步,分布式锁等功能。

集群角色

与Mysql的主从模式Master/Slave模式不太一样。
ZooKeeper有三个角色:Leader、Follower、Observer。

  • Leader:是集群中的主节点,事物请求的唯一调度和处理者,同时负责投票的发起和决议。
  • Follower:负责处理客户端的非事务请求,事务请求会转发给Leader服务器,会参与Leader选举投票。
  • Observer:负责观察Zookeeper集群的最新状态的变化,客户端非事务请求会处理,事务请求也会转发给Leader服务器,它不会参与任何形式的投票。
镜像下载

建议使用官方镜像

docker pull zookeeper
单机部署
docker run --name zk1 -d zookeeper

集群部署

配置文件准备
# 心跳时间,用于配置服务器最小时间的单位。
tickTime=2000
# 用于配置leader服务器等待Follewer服务器启动,并完成数据同步的时间
initLimit=10
# 用于配置leader服务器和Follewer服务器之间进行心跳检测的最大延时时间
syncLimit=5

# 配置zookeeper服务器存储快照文件目录
dataDir=/data

# 用于配置当前服务器对客户端暴露的端口,一般配置为2181。
clientPort=2181

# 将所有命令添加到白名单中
4lw.commands.whitelist=*

# 集群机器 2888是zookeeper之间通信的端口,3888是zookeeper之间投票选举的端口
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
├── zk1
│   ├── conf
│       └── zoo.cfg # 上面的配置文件  
│   └── data
│       └── myid   # myid的内容是:1,对应的是上面配置的集群机器编码
├── zk2
│   ├── conf
│       └── zoo.cfg # 上面的配置文件  
│   └── data
│       └── myid   # myid的内容是:2,对应的是上面配置的集群机器编码
├── zk3
│   ├── conf
│       └── zoo.cfg # 上面的配置文件  
│   └── data
│       └── myid   # myid的内容是:3,对应的是上面配置的集群机器编码
└── 
启动容器
    docker run --name zk1 -p 2181:2181 -v /zk/zk1/conf/zoo.cfg:/conf/zoo.cfg -v /zk/zk1/data:/data  -d zookeeper
    docker run --name zk2 -p 2182:2181 -v /zk/zk2/conf/zoo.cfg:/conf/zoo.cfg -v /zk/zk2/data:/data  -d zookeeper
    docker run --name zk3 -p 2183:2181 -v /zk/zk3/conf/zoo.cfg:/conf/zoo.cfg -v /zk/zk3/data:/data  -d zookeeper

查看集群是否部署成功
echo stat | nc 172.17.0.2 2181
echo stat | nc 172.17.0.3 2181
echo stat | nc 172.17.0.4 2181

结果如下就证明成功了

Zookeeper version: 3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC
Clients:
 /172.17.0.1:34016[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 2/3.5/10
Received: 10
Sent: 9
Connections: 1
Outstanding: 0
Zxid: 0x300000008
Mode: follower
Node count: 7
总结

值得注意的是docker的网段,关于docker相关的知识可以去看官网观看文档。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值