Zookeeper之基于Docker搭建集群
•
大数据
简介
搭建ZK分布式模式,由2n+1台服务器组成。
搭建集群有两种方式:
- 单机多服务:
- 不同服务使用不同的配置文件,配置不同的端口号等。
- 使用同一个配置不同的server.id,即IP相同,但是端口不同。
- 多机多服务:各自配置zoo.cfg文件,互相加入各自的服务器列表。
节点概念
- Loader 主节点:事务请求的唯一调度者和写操作的处理者(从节点的写操作需要转发给主节点,主节点决定编号、是否执行操作)。
- Follower 从节点:处理非事务(读)请求;参与Loader选举的投票,比如Loader 节点挂了之后选举新的。
- Observer 观察者节点:访问量大的时候,可以增减观察者角色,处理部分请求。观察者同步集群最新状态变化,处理非事务请求, 对于事务请求,则会转发给 Leader服务器进行处理。 观察者不参与任何形式的投票,只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群非事务处理能力。
搭建集群
准备
环境说明:
使用虚拟机启动三台ubunut18的主机,IP分别为192.168.204.175/176/177
修改host文件(一般位于C:\Windows\System32\drivers\etc)
192.168.204.175 zk1 192.168.204.176 zk2 192.168.204.177 zk3
配置&启动
- 拉取镜像docker pull zookeeper:3.8.1
- 创建存储数据的目录data(自己命名)目录和myid文件,myid文件存储集群中此节点的唯一值。
mkdir zk_home cd zk_home/ mkdir data cd data touch myid # 集群内唯一ID echo 1 >> myid # zk2 # echo 2 >> myid # zk3 # echo 3 >> myid
- 创建一个存放配置文件的目录,然后再创建zoo.cfg文件
# 创建存放配置文件的目录 cd zk_home/ mkdir conf cd zk_conf touch zoo.cfg
- 将配置写入zoo.cfg文件
# 启动成功的配置 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data clientPort=2181 # server后面的数字是集群节点的唯一ID server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
- 启动zookeeper容器。注意,不同的服务器–hostname不同。
docker run --name zookeeper --restart always -d \ -p 2888:2888 \ -p 3888:3888 \ -p 2181:2181 \ -v /home/liangshijie/zk_home/conf/zoo.cfg:/conf/zoo.cfg \ -v /home/liangshijie/zk_home/data:/data \ --hostname="zk1" \ zookeeper:3.8.1
- 检查zk状态
# 分别进入zk1、zk2、zk3服务器,查看zk状态: # 1.进入容器 docker exec -it bash # 2.进入bin目录 cd /apache-zookeeper-3.8.1-bin/bin # 3.运行命令查看状态 zkServer.sh status # 4.命令执行结果 ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: leader
- 测试,使用zkCli登录远程服务器,执行操作命令

# 登录zk3新增/app节点,并设置值 zkCli.cmd -server zk3:2181 create /app set /app 11 # 登录zk1节点,查看/app值 zkCli.cmd -server zk1:2181 get /app
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/84a772fc5c.html
