
Zookeeper 是一个开源的分布式协调服务,主要用于管理大规模分布式系统中的配置、命名、同步和提供组服务。它由 Apache 软件基金会维护,常用于大数据和云计算环境中。
主要功能:
配置管理:Zookeeper 可以集中管理和协调多个应用程序的配置参数,确保一致性。
命名服务:为分布式应用提供命名功能,允许客户端以统一的方式访问资源。
分布式同步:提供原子广播、锁、队列等机制,使得多个进程之间能够实现协调和同步。
集群管理:管理集群中的节点状态,监控节点的存活情况。
工作原理:
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