Zookeeper 的简洁集群配置

本文详细介绍了如何配置ZooKeeper集群,包括在多台服务器上安装ZooKeeper、修改配置文件、设置myid文件、启动服务及检查集群状态等步骤。同时,阐述了ZooKeeper集群的工作原理,如半数机制、数据一致性、更新请求顺序执行等关键特性。

1,配置zookeeper的集群,一般服务器的个数为奇数,最少3台。

2,首先在每台服务器上安装zookeeper,集群的配置需要修改conf中的zoo.cfg文件,在文件末尾添加如下内容:   

server.161=192.168.1.161:2888:3888 
server.162=192.168.1.162:2888:3888 
server.163=192.168.1.163:2888:3888

3,进入每个服务器的data目录,执行:echo  161 > myid,echo  162 > myid,echo  163 > myid,必须与server后面的编号对应,编号值任意。

4,然后启动zookeeper,查看zookeeper状态,如果是一个leader,多个follower,则集群配置成功。

5,如果虚拟机是Centos,要关闭一下防火墙。

集群配置用到的命令如下:

#将编号写入myid
cd data
echo 161 > myid
#zookeeper启动、查看、停止、重启
cd bin
./zkServer.sh start | status | stop | restart
#Centos防火墙的查看、关闭
systemctl status firewalld.service
systemctl stop firewalld.service
#设置永久关闭防火墙,防止防火墙开机自启
systemctl disable firewalld.service

zookeeper集群特性:

  • 一个ZooKeeper集群中,有一个领导者Leader和多个跟随者Follower

  • Leader负责进行投票的发起和决议,更新系统状态

  • Follower用于接收客户端的请求并向客户端返回结果,在选举Leader过程中参与投票

  • 半数机制:集群中只要有半数以上节点存活,集群就能够正常工作,所以一般集群中的服务器个数都为奇数

  • 全局数据一致:集群中每台服务器保存一份相同的数据副本,不论客户端连接到哪个服务器,数据都是一致的

  • 更新请求顺序执行:来自同一个客户端的更新请求,按其发送顺序依次执行

  • 数据更新的原子性:一次数据更新,要么成功,要么失败

  • 实时性:在一定的时间范围内,客户端能读取到最新数据

 

### CentOS 7 上配置 ZooKeeper 集群 在 CentOS 7 上配置 ZooKeeper 集群是一项常见的分布式系统操作,以下是详细的说明。 #### 准备工作 首先需要准备三台服务器或者虚拟机来模拟集群环境。每台机器都需要安装 Java 环境并设置 JAVA_HOME 变量[^1]。 #### 安装与解压 下载适合版本的 ZooKeeper 并将其解压缩至指定路径。例如,在 `/export/server` 或者 `/usr/local/` 下完成解压动作: ```bash tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server/ ``` 随后可以复制该文件夹三次分别代表三个不同的节点实例[^2]: ```bash cp -R /export/server/apache-zookeeper-3.5.9-bin /export/server/zookeeper-1 cp -R /export/server/apache-zookeeper-3.5.9-bin /export/server/zookeeper-2 cp -R /export/server/apache-zookeeper-3.5.9-bin /export/server/zookeeper-3 ``` #### 移动与命名 将解压后的目录移至目标位置,并重命名为更简洁的名字以便管理: ```bash mv /usr/local/apache-zookeeper-3.7.1-bin /usr/local/zk-3.7.1 ``` 此命令会把原始名称改为 `zk-3.7.1` 方便后续识别[^3]。 #### 配置文件调整 进入每个节点对应的配置目录,找到默认样例配置文件进行修改: ```bash cd /usr/local/zk-3.7.1/conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg ``` 编辑后的典型内容可能如下所示(假设 IP 地址分别为 192.168.x.y): ```properties tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/lib/zookeeper/data clientPort=2181 server.1=192.168.x.a:2888:3888 server.2=192.168.x.b:2888:3888 server.3=192.168.x.c:2888:3888 ``` 其中 server.X 表示第 X 个服务端地址及其通信端口设定. #### 数据标识符创建 对于每一个节点还需要在其 dataDir 路径下建立 myid 文件用来区分身份编号: ```bash echo "1" > /var/lib/zookeeper/data/myid # 对应于第一个节点 echo "2" > /var/lib/zookeeper/data/myid # 第二个节点以此类推... echo "3" > /var/lib/zookeeper/data/myid ``` 上述指令需针对各个独立节点执行一次以定义其唯一 ID 编号[^4]. #### 同步配置到其余节点 利用 scp 工具或者其他方式同步所有必要的更改项比如配置文档、数据存储区域以及任何额外定制化脚本等材料给另外两处成员设备之前应当先确认 SSH 密钥认证已妥善安排完毕并且 hosts 映射表里包含了全部参与者的域名解析记录: 最后启动各组件验证功能正常运作即可形成完整的 Zookeeper Cluster 构架!
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值