Zookeeper 是一个开源的分布式协调服务,主要用于管理大规模分布式系统中的配置、命名、同步和提供组服务。它由 Apache 软件基金会维护,常用于大数据和云计算环境中。

主要功能:

  1. 配置管理:Zookeeper 可以集中管理和协调多个应用程序的配置参数,确保一致性。

  2. 命名服务:为分布式应用提供命名功能,允许客户端以统一的方式访问资源。

  3. 分布式同步:提供原子广播、锁、队列等机制,使得多个进程之间能够实现协调和同步。

  4. 集群管理:管理集群中的节点状态,监控节点的存活情况。

工作原理:

  • Zookeeper 使用类似树形结构的数据模型,数据被称为“znode”,每个 znode 可以存储数据和元数据。

  • Zookeeper 集群由一个主节点(Leader)和多个从节点(Follower)组成,主节点负责处理写请求,而从节点负责处理读请求。

  • 数据在 Zookeeper 中是以版本号进行管理的,每次更新都会生成一个新的版本,从而确保数据一致性。

应用场景:

  • 微服务架构中的配置管理和服务发现。

  • 分布式锁和协调任务调度。

  • 消息队列和流处理系统中的状态管理。

具体操作

1.将zookeeper和jdk上传至三台服务器根目录中,在根目录执行解压

tar -zxvf jdk-8u202-linux-x64.tar.gz
tar -zxvf zookeeper-3.4.14.tar.gz

2.配置Java环境变量

vim /etc/profile

在打开的文件末尾添加如下代码

export JAVA_HOME=/root/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib

使环境变量生效

source /etc/profile

使用以下命令验证环境变量是否生效

java -version

如果正确出现java版本信息,则配置正确

3.修改zookeeper配置文件

进入zookeeper目录下

cd zookeeper-3.4.14/conf

将zoo_sample.cfg重命名为zoo.cfg(如有需要可自行备份配置文件)

mv zoo_sample.cfg zoo.cfg

修改配置文件的内容

vim zoo.cfg

将dataDir修改为如下目录

dataDir=/opt/zookeeper/zkdata

并在这行之后添加如下代码

datalogDir=/opt/zookeeper/zkdata
server.1=192.168.20.30:2888:3888 #修改为自己的实际IP
server.2=192.168.20.40:2888:3888
server.3=192.168.20.50:2888:3888

创建dataDir目录

mkdir /opt/zookeeper/zkdata -p

在该目录下创建myid文件

cd /opt/zookeeper/zkdata ; touch myid

在三台服务器都完成上述操作后,在myid文件中添加配置文件对应服务器的id

三台服务器都添加完成myid之后,启动服务,在三天服务器中都执行以下操作

/root/zookeeper-3.4.14/bin/zkServer.sh start

启动完成之后,执行以下命令查看状态

/root/zookeeper-3.4.14/bin/zkServer.sh status

可以看到,第二台启动的服务器即为leader,其余两台服务器为follower