我们来学zookeeper -- 集群搭建

zk3.9.2版本集群

说明

  • 本文是基于一台服务器搭建zk集群的记录
  • zk集群是主从架构
  • 分别创建三个目录模拟三个节点
  • 只要有半数以上节点存活,zk 集群就能正常服务,适合安装奇数台

下载

解压&创建目录

  • tar -zxvf zookeeper-3.9.2.tar.gz -C 12181/
  • 创建zkdata/zklogs目录

创建myid

  • 配置节点(服务器)编号

  • 在 /zkData 中,创建文件 myid(必须叫 myid,源码读取的文件是 myid)

    复制代码
    echo 1 > /u01/app/zk392/12181/zkdata/myid
    echo 2 > /u01/app/zk392/12182/zkdata/myid
    echo 3 > /u01/app/zk392/12183/zkdata/myid

配置zoo.cfg

server.A=B:C:D 参数

  • A 是一个数字,表示这个是第几号服务器;就是 myid中的值
  • B:是服务器的主机名或 IP 地址
  • C 当集群启动或 leader 崩溃时,各节点通过此端口进行投票选举新leader
  • D 用于 leader 与 follower 之间的数据同步和复制端口

zk1

复制代码
clientPort=12181
admin.serverPort=18081 # admin.serverPort 默认占8080端口
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
server.2=127.0.0.1:12887:13887
server.3=127.0.0.1:12888:13888
server.4=127.0.0.1:12889:13889

zk2

复制代码
clientPort=12182
admin.serverPort=18082 # admin.serverPort 默认占8080端口
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
server.2=127.0.0.1:12887:13887
server.3=127.0.0.1:12888:13888
server.4=127.0.0.1:12889:13889

zk3

复制代码
clientPort=12183
admin.serverPort=18083 # admin.serverPort 默认占8080端口
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
server.2=127.0.0.1:12887:13887
server.3=127.0.0.1:12888:13888
server.4=127.0.0.1:12889:13889

启停

复制代码
/u01/app/zk392/12181/bin/zkServer.sh stop; /u01/app/zk392/12182/bin/zkServer.sh stop;/u01/app/zk392/12183/bin/zkServer.sh stop;
/u01/app/zk392/12181/bin/zkServer.sh start; /u01/app/zk392/12182/bin/zkServer.sh start;/u01/app/zk392/12183/bin/zkServer.sh start;
/u01/app/zk392/12181/bin/zkServer.sh status; /u01/app/zk392/12182/bin/zkServer.sh status;/u01/app/zk392/12183/bin/zkServer.sh status;

从读写步骤看主从

  • zk集群是主从架构
  • 但此主从,能做到从节点转为主的恢复
  • 主节点的写入,也需要得到半数从节点成功写入的反馈

  • 所有写操作必须通过 Leader 处理
  • client向zookeeper的server1发送一个写数据请求
  • server1不是leader,server1把接收到的请求转发给leader
  • leader将写数据请求广播给各个server,如server1和server2,各个server会将写数据请求加入待写队列,并回复leader
  • 当leader收到半数以上server的成功信息,说明该写操作可以执行
  • leader会向各个server发送提交信息
  • 各个server收到信息后会落实队列里的写数据请求,写数据成功
  • server1会进一步通知client写数据成功,这时认为整个写操作成功
相关推荐
云和数据.ChenGuang7 小时前
OpenEuler系统下RabbitMQ安装与基础配置教程
服务器·分布式·rabbitmq·ruby·数据库运维工程师·运维教程
大千AI助手11 小时前
程序合约:形式化验证中的规范与实现框架
分布式·区块链·软件开发·形式化验证·大千ai助手·程序合约·contracts
云和数据.ChenGuang12 小时前
Deepseek适配场景:OpenEuler系统下RabbitMQ安装与基础配置教程
分布式·rabbitmq·ruby
时光追逐者12 小时前
一个基于 .NET 开源、功能强大的分布式微服务开发框架
分布式·微服务·开源·c#·.net·.net core
2501_9401986913 小时前
【前瞻创想】Kurator·云原生实战派:打造下一代分布式云原生基础设施
分布式·云原生
太阳伞下的阿呆13 小时前
kafka高吞吐持久化方案(2)
分布式·kafka·高并发·重入锁
永亮同学15 小时前
【探索实战】告别繁琐,一栈统一:Kurator 从0到1落地分布式云原生应用管理平台!
分布式·云原生
十五年专注C++开发15 小时前
ZeroMQ: 一款高性能、异步、轻量级的消息传输库
网络·c++·分布式·zeroqm
仪***沿15 小时前
基于MATLAB GUI的图像随机加密策略与实现:探索傅里叶、Arnold变换及图像分割技术在...
zookeeper
张人玉16 小时前
LiveCharts WPF MVVM 图表开发笔记
大数据·分布式·wpf·livecharts