【星海随笔】分布式管理Zookeeper

高可用集群

地址:https://archive.apache.org/dist/zookeeper
TPS既每秒系统吞吐量

QPS即每秒查询率

Zookeeper的选举机制

确保所有节点对外表现为一个统一的服务。

选举机制分为两个阶段:Leader选举和投票确认

Zookeeper 的选举机制确保集群中的所有节点对外表现为一个统一的服务。选举机制分为两个阶段:Leader 选举和投票确认。

  1. 服务器1启动,发起一次选举。服务器1投自己一票。此时服务器1票数一票,不够半数以上票),选举无法完成,服务器1状态保持为LOOKING;
  2. 服务器2启动,再发起一次选举。服务器1和2分别投自己一票并交换选票信息:此时服务器1发现服务器2的myid比自己目前投票推举的(服务器1)大,更改选票为推举服务器2。此时服务器1票数0 票,服务器2票数2票,没有半数以上结果,选举无法完成,服务器1,2状态保持LOOKING
  3. 服务器3启动,发起一次选举。此时服务器1和2都会更改选票为服务器3。此次投票结果:服务器1为0票,服务器2为0票,服务器3为3票。此时服务器3的票数已经超过半数,服务器3当选Leader。 服务器1,2更改状态为FOLLOWING,服务器3更改状态为LEADING;
  4. 服务器4启动,发起一次选举。此时服务器1,2,3已经不是LOOKING状态,不会更改选票信息。交换选票信息结果:服务器3为3票,服务器4为1票。此时服务器4服从多数,更改选票信息为服务器3,并更改状态FOLLOWING;
  5. 服务器5启动,同4一样当小弟。但是如果sever3没有选举的时候(不是leader的时候),server4就进来选举,那结果就不一样了(突发状态)

安装篇

bash 复制代码
tar  -xzvf  apache-zookeeper-x.x.x-bin.tar.gz  -C  /export/servers/
cd  /export/servers/ 切换到/export/servers/ 目录

配置
mv  ./apache-zookeeper-x.x.x-bin/  /usr/zookeeper

配置环境变量: vim /etc/profile
export ZK_HOME=/usr/zookeeper
export JAVA_HOME=/path_to_your/java/jdkx.x.x_xxx/
export PATH=$JAVA_HOME/bin:$ZK_HOME/bin:$PATH

cp  /export/servers/conf/zoo_sample.cfg  /export/servers/conf/zoo.cfg
tickTime=2000  ##Client-Server通信心跳时间,单位是毫秒
initLimit=10   ##集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数
syncLimit=5    ##集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数
clientPort=2181   ## 监听端口
maxClientCnxns=100  ## 最大连接数
dataDir=/export/servers/zookeeper-x.x.x/data ## 数据目录
dataLogDir=/export/servers/zookeeper-x.x.x/log  ## 日志目录
# 添加如下内容
server.1=<IP1>:2881:3881  ## zk节点1
server.2=<IP1>:2881:3881  ## zk节点2
server.3=<IP3>:2881:3881  ## zk节点3
bash 复制代码
在/export/servers/zookeeper-x.x.x 下创建两个文件夹,分别是data和log
bash 复制代码
然后分别在zk节点,/export/servers/zookeeper-x.x.x/data目录下,创建文本myid,内容分别是1、2、3序号
bash 复制代码
IP1  写入1
IP2  写入2
IP3  写入3
bash 复制代码
对分节点去分发
scp -r /export/servers/zookper-x.x.x  hadoop02:$PWD
scp -r /export/servers/zookper-x.x.x  hadoop03:$PWD
bash 复制代码
启动之前,jdk7以上的版本一定要安装合适,然后在环境变量里配置ZK_HOME
zookeeper bin目录下的脚本

执行 zkServer.sh  start  启动
执行 zkServer.sh  status 查看各个zk节点的状态

jps #查看是否启动了zk
zkServer.sh stop 是停掉zk节点服务
启动zk之后,在任意一台服务上,运行:zkCli.sh进入zk的命令行模式

zk创建的节点叫znode,znode四种节点类型:持久节点、持久序列节点、暂时节点、暂时序列节点。

bash 复制代码
create   -e /app   111  创建一个暂时的znode节点
create   -s /app/test1  222  创建一个持久的,带有序列号的znode节点
get  /app/test  得到创建的节点中的数据
执行ls  /可以看到根节点下面所有子节点
ls /app/test watch  监听这个节点下的变化,我在另一个服务器下也打开了zk的命令行,
相关推荐
Henry-SAP1 小时前
SAP PP 从停工待料到精准排产
人工智能·云原生·sap·erp
报错小能手2 小时前
Kubernetes入门实战课 4
云原生·容器·kubernetes
天天喝旺仔2 小时前
Docker 镜像瘦身实战:多阶段构建把体积缩小 90%
运维·后端·ci/cd·docker·云原生·容器·性能优化
Henry-SAP2 小时前
AI标准落地加速 安全与应用双突破
人工智能·云原生·sap·erp
Lost of 程序猿2 小时前
ASP.NET Core Saga 分布式事务深度实战:备件采购跨服务长流程,如何保证“要么全成,要么全回“
分布式·后端·asp.net
NJCloud3 小时前
Docker 私有仓库部署:Registry、加密传输与认证鉴权
运维·网络·docker·云原生·容器
w200512243 小时前
K8S控制器管理
linux·云原生·容器·kubernetes
XiYang-DING3 小时前
地图城市缓存优化:ApplicationReadyEvent + Caffeine + Redis + Redisson 分布式锁
redis·分布式·缓存
harmony&4 小时前
Docker 镜像完全指南:从最小镜像到企业级私有仓库 Harbor
云原生·eureka
DolitD4 小时前
云流技术深度剖析:单服务器下如何实现3D应用的多实例并发?
java·服务器·前端·3d·云原生·云计算