Zookeeper集群

本文介绍了Zookeeper作为一个开源的分布式协调服务框架,其基于观察者模式的工作机制,特点如数据一致性、选举机制以及集群部署步骤,涵盖了统一命名服务、配置管理和集群管理等应用场景。
摘要由CSDN通过智能技术生成

Zookeeper集群

Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。

工作机制:Zookeeper基于观察者模式设计,负责存储和管理关键数据,同时接受观察者注册,一旦数据状态发生变化,将通知已注册的观察者做出相应反应。因此,Zookeeper可以理解为文件系统加通知机制的组合。

特点

  • 集群由一个领导者(Leader)和多个跟随者(Follower)组成。
  • 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务,适合安装奇数台服务器。
  • 全局数据一致,每个Server保存相同的数据副本。
  • 更新请求顺序执行,来自同一客户端的更新请求按发送顺序依次执行。
  • 数据更新原子性,一次数据更新要么成功,要么失败。
  • 实时性,在一定时间范围内,Client能读到最新数据。

数据结构

类似Linux文件系统,整体是一棵树,每个节点称做一个ZNode,每个ZNode默认能够存储1MB的数据。

应用场景

包括统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。

选举机制

Zookeeper选举机制包括第一次启动选举机制和非第一次启动选举机制,确保在Leader故障时能够重新选举产生新的Leader,保证系统高可用性。
以上是Zookeeper的概述,其工作原理和应用场景都在文档中有详细介绍。

Zookeeper应用场景

  1. 统一命名服务:Zookeeper提供统一的命名服务,有助于分布式环境下识别应用/服务。举例来说,IP地址不易记忆,而域名则容易记住。
  2. 统一配置管理:Zookeeper可统一管理分布式环境下的配置信息,确保所有节点的配置信息一致。通过将配置信息写入Zookeeper的ZNode,其他客户端服务器可以监听该ZNode,一旦数据更新,Zookeeper将通知其他服务器,实现快速同步配置。
  3. 统一集群管理:Zookeeper可以实时监控节点状态变化,提供统一管理服务。节点信息可以写入Zookeeper的ZNode,监听该ZNode可以获取节点实时状态变化。
  4. 服务器节点动态上下线:Zookeeper支持客户端实时感知服务器上下线的变化,为系统提供更好的动态管理能力。
  5. 软负载均衡:Zookeeper记录每台服务器的访问数,并通过Zookeeper的数据管理来实现负载均衡。
    以上是Zookeeper的应用场景,其协调服务为分布式系统提供了重要的管理功能。

Zookeeper 选举机制

根据文档内容,Zookeeper的选举机制主要包括以下几个方面:

  1. 第一次启动选举机制
    • 服务器1启动,发起一次选举,此时服务器1获得一票,不足半数以上(3票),选举无法完成,服务器1状态保持LOOKING。
    • 服务器2启动,再次发起选举。服务器1和2分别投自己一票并交换选票信息。服务器1发现服务器2的myid比自己大,因此更改选票为推举服务器2。此时服务器1和2的状态保持LOOKING。
    • 服务器3启动,发起一次选举。此时服务器1和2会更改选票为服务器3。此次投票结果:服务器1和2为0票,服务器3为3票,超过半数,因此服务器3当选为Leader。服务器1和2的状态更改为FOLLOWING,服务器3的状态更改为LEADING。
    • 服务器4和5启动后,成为小弟,状态为FOLLOWING。
  2. 非第一次启动选举机制
    • 服务器启动或无法与Leader保持连接时,会进入选举流程。
    • 如果集群已存在Leader,新加入的服务器只需与Leader建立连接并进行状态同步即可。
    • 如果集群不存在Leader,则根据服务器ID、事务ID等参数进行选举。
  3. 选举规则
    • EPOCH大的直接胜出。
    • EPOCH相同,事务ID大的胜出。
    • 事务ID相同,服务器ID大的胜出。
      综上所述,Zookeeper的选举机制通过保证系统的高可用性,使得Zookeeper集群在发生故障时能够快速选举出新的Leader,从而确保集群能够正常提供服务。

Zookeeper的部署

1.准备三台服务器
server.1:192.168.20.10
server.2:192.168.20.20
server.3:192.168.20.30

2.安装JDK环境

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
java -version

在这里插入图片描述

3.下载安装包

cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
mv apache-zookeeper-3.5.7-bin /usr/local/zookeeper-3.5.7

4.修改配置文件

cd /usr/local/zookeeper-3.5.7/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

在这里插入图片描述

添加服务器节点,设置日志存放目录和数据存放目录
每个节点都要添加
在这里插入图片描述
创建两个目录文件夹

mkdir -p /tmp/zookeeper/log
mkdir -p /tmp/zookeeper/data

每个节点的dataDir指定的目录下创建一个 myid 的文件

echo 1 > /tmp/zookeeper/data/myid
echo 2 > /tmp/zookeeper/data/myid
echo 3 > /tmp/zookeeper/data/myid

在这里插入图片描述
5.配置 Zookeeper 启动脚本

vim /etc/init.d/zookeeper
#!/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
ZK_HOME='/usr/local/zookeeper-3.5.7'
case $1 in
start)
	echo "---------- zookeeper 启动 ------------"
	$ZK_HOME/bin/zkServer.sh start
;;
stop)
	echo "---------- zookeeper 停止 ------------"
	$ZK_HOME/bin/zkServer.sh stop
;;
restart)
	echo "---------- zookeeper 重启 ------------"
	$ZK_HOME/bin/zkServer.sh restart
;;
status)
	echo "---------- zookeeper 状态 ------------"
	$ZK_HOME/bin/zkServer.sh status
;;
*)
    echo "Usage: $0 {start|stop|restart|status}"
esac

6.设置开机自启

chmod +x /etc/init.d/zookeeper
chkconfig --add zookeeper

分别启动Zookeeper并且查看状态

service zookeeper start
service zookeeper status

在这里插入图片描述
启动成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值