简介
搭建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
)文章来源:https://www.toymoban.com/news/detail-767722.html
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 <ID> 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登录远程服务器,执行操作命令
文章来源地址https://www.toymoban.com/news/detail-767722.html
# 登录zk3新增/app节点,并设置值
zkCli.cmd -server zk3:2181
create /app
set /app 11
# 登录zk1节点,查看/app值
zkCli.cmd -server zk1:2181
get /app
到了这里,关于Zookeeper之基于Docker搭建集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!