Zookeeper 集群部署的那些事儿(2)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Zookeeper 集群部署的那些事儿

tickTime: 客户端与服务端或者服务端和服务端之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳,通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制follower和Leader的通信时间,默认情况下FL(Follower和Leader)的会话通常是心跳间隔的两倍,单位为毫秒。


initLimit: 集群中的follower服务器与Leader服务器之间的初始连接时能容忍的最多心跳数量


syncLimit: 急群众的follower服务器与leader服务器之间的请求和回答最多能容忍的心跳数量


dataDir: 目录地址,用来存放myid信息和一些版本、日志、服务器唯一ID等信息


clientPort: 监听客户端连接的端口


server.n=127.0.0.1:2888:3888


n:代表的是一个数字,表示这个服务器的标号

127.0.0.1:IP服务器地址

2888:ZooKeeper服务器之间的通信端口

3888:Leader选举的端口

两个需要修改的点:


修改的是目录结构(dataDir),不要用它默认的

添加server.1 集群服务器配置信息

官方参考文档:https://zookeeper.apache.org/doc/r3.5.8/zookeeperStarted.html


创建服务器ID


在这里我们需要创建一个 myid 的文件,我们需要在 dataDir指定的目录下,手动创建这个目录。


创建命令:mkdir -p /tmp/zookeeper


然后在myid 文件里面添加对应的server.1中的 “1” 这个数字,如下所示


[root@VM-0-7-centos zookeeper]# more myid

1

后面的机器,依次在 dataDir指定的目录下(/tmp/zookeeper),创建 myid 文件,写上相应配置的数字,比如我们在zoo.cfg后面写的是server.1,那么当前myid的文件就写一个数字1就可以了


server.1=192.168.5.129:2888:3888

server.2=192.168.5.130:2888:3888

server.3=192.168.5.131:2888:3888

配置环境变量


为了方便我们可以在全局使用ZooKeeper命令,我们需要配置ZooKeeper的环境变量。


通过命令:vi /etc/profile


添加ZooKeeper的环境变量。


export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export ZK_HOME=/usr/local/java/apache-zookeeper-3.7.0-bin/
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin

变量生效:source /etc/profile


关闭防火墙


在这里大家记得,如果是生产或者正式的,需要开放对应的端口进行通信。


如果是我们测试用的服务器,需要关闭防火墙,不然会有拦截,无法进行服务之间的通信,在这里我们是测试,关闭防火墙即可。

这里我使用的服务是CentOS 7.0,默认使用的是firewall作为防火墙。


防火墙设置


查看防火墙状态:firewall-cmd --state


立即关闭防火墙,重启失效:systemctl stop firewalld.service


禁止开机启动防火墙:systemctl disable firewalld.service


端口设置


开放2888端口:firewall-cmd --zone=public --add-port=2888/tcp --permanent


关闭2888端口:firewall-cmd --zone=public --remove-port=2888/tcp --permanent


启动服务


查看日志启动命令:zkServer.sh start-foreground


后台启动命令:zkServer.sh start


停止命令:zkServer.sh stop


查看状态命令:zkServer.sh status


我们分别用 zkServer.sh status命令查看节点状态,三台机器中,有两台成为了 follower,一台成为了Leader节点。



屏幕快照 2022-05-11 上午11.33.16.png



使用命名查看ZooKeeper端口情况:netstat -natp | egrep '(2888|3888)'



屏幕快照 2022-05-11 上午11.33.30.png



端口说明


3888:是选举用的

2888:是leader接受write请求


因此我们可以看到130这一台机器出了有 130:2888以外还有130:3888 端口对自身进行监听,这个是保证leader可以进行write操作的命令,具体通信如下所示:


屏幕快照 2022-05-11 上午11.33.44.png


注意事项


如果搭建中出现问题,首先我们需要排查的问题,包含以下几点


防火墙有没有关闭

zoo.cfg 下的文件路径 dataDir 的目录有没有创建,不是自动创建的,需要我们进行手动创建,创建命令mkdir -p /tmp/zookeeper

我们可以通过 zkServer.sh start-foreground启动过程的报错信息

总结


到这里,关于ZooKeeper的集群就讲解完毕了,主要介绍了ZooKeepe集群的作用和安装部署,以及原理,今天的ZooKeeper集群到这里就讲完了,下期精彩持续更新中。


码字不易,感兴趣的小伙伴记得点赞关注~



相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
6月前
|
算法 Java Linux
zookeeper单机伪集群集群部署
zookeeper单机伪集群集群部署
125 0
|
存储 分布式计算 Hadoop
ZooKeeper的集群部署和启动与关闭
ZooKeeper的集群部署和启动与关闭
|
存储 消息中间件 负载均衡
zookeeper集群 +kafka 集群部署(上)
Zookeeper 定义 zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目 Zookeeper 工作机制 Zookeeper是–个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册, 一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些客户端做出相应的反应。 也就是说Zookeeper =文件系统+通知机制
zookeeper集群 +kafka 集群部署(上)
|
分布式计算 监控 Hadoop
zookeeper 集群部署模式
zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。
254 0
|
大数据 Linux
大数据组件-Zookeeper集群部署
大数据组件-Zookeeper集群部署
大数据组件-Zookeeper集群部署
|
存储 负载均衡 监控
Zookeeper 集群部署的那些事儿(1)
Zookeeper 集群部署的那些事儿
183 0
Zookeeper 集群部署的那些事儿(1)
|
消息中间件 存储 分布式计算
zookeeper集群 +kafka 集群部署(下)
为什么需要消息列队(MQ)   主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的请求并发访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection 错误,引发雪崩效应。 我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队列常应用于异步处理,流量削峰,应用解耦,消息通讯等场景。 当前比较常见的 MQ 中间件有 ActiveMQ、RabbitMQ、RocketMQ、Kafka 等
zookeeper集群 +kafka 集群部署(下)
|
存储
Zookeeper集群部署与配置(三)
Zookeeper集群部署与配置(三)
195 0
|
消息中间件 存储 Java
消息中间件kafka+zookeeper集群部署、测试与应用
业务系统中,通常会遇到这些场景:A系统向B系统主动推送一个处理请求;A系统向B系统发送一个业务处理请求,因为某些原因(断电、宕机。。),B业务系统挂机了,A系统发起的请求处理失败;前端应用并发量过大,部分请求丢失或后端业务系统卡死。
2209 6