Zookeeper介绍与部署(Linux)
一、Zookeeper 是什么
1 、Zookeeper 是一个 分布式协调服务。
它本身是一个 分布式中间件 ,主要用来解决分布式系统中节点之间的协调、数据一致性和服务发现问题。
2 、常见用法包括:
注册中心(Dubbo、Kafka、Hadoop 等都会用)
分布式锁
配置管理
Leader 选举
3 、中间件
它是一个独立的软件,提供协调和注册的能力。
不直接承载业务逻辑,但为分布式应用提供关键能力(注册、发现、同步、协调)。
可以理解为分布式系统的 "大脑 + 电话簿"。
4 、在 Dubbo 里的作用
在 Dubbo 架构中,Zookeeper 主要用作 注册中心:
- 服务注册
- Provider 启动后,把自己的信息(服务名、地址、端口、版本号)注册到 Zookeeper。
- 服务发现
- Consumer 启动时,去 Zookeeper 查找 Provider 的信息。
- 如果有多个 Provider,Zookeeper 会把所有可用地址都返回,Dubbo 框架做负载均衡。
- 动态感知
- Provider 下线或挂掉 → Zookeeper 立刻通知 Consumer,让 Consumer 自动切换到别的 Provider。
- 保证服务的 高可用性。
- 数据一致性
- Zookeeper 内部用 ZAB 协议 保证数据一致性,所有服务的注册信息在整个集群里是一致的。
二、zookeeper 的部署
官网下载地址:Apache ZooKeeper

下载安装包到本地:

利用终端工具将其上传到虚拟机
解压到当前文件夹:(作者将求其放到了opt文件夹下)
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz

进入到
cd apache-zookeeper-3.6.3-bin/conf
将zoo_sample.cfg 改名为zoo.cfg
mv zoo_sample.cfg zoo.cfg
添加配置:
clientPortAddress=0.0.0.0
添加环境
vi /etc/profile
#这里写刚刚下载的路径
export ZOOKEEPER_HOME=/opt/apache-zookeeper-3.6.3-bin
export PATH=PATH:ZOOKEEPER_HOME/bin
保存并退出,刷新环境变量
source /etc/profile
启动zookeeper
zkServer.sh start
查看状态,如图启动成功

三、集群部署
准备三台虚拟机:
master:192.168.81.131
slave1:192.168.81.132
slave2:192.168.81.133
在master虚拟机上
cd apache-zookeeper-3.6.3-bin/conf
添加配置:
dataDir=/opt/apache-zookeeper-3.6.3-bin/data
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
(注意:要把之前默认的dataDir=/var/lib/zookeeper注释掉。)
如果要像我一样写主机名,要在/etc/hosts配置里要添加映射:如:
192.168.81.131 master
192.168.81.132 slave1
192.168.81.133 slave2
将部署的zookeeper分发到slave1和slave2
scp -r /opt/apache-zookeeper-3.6.3-bin @slave1:/opt/
scp -r /opt/apache-zookeeper-3.6.3-bin @slave2:/opt/
将环境变量分发到其他:
scp /etc/profile @slave1:/etc
scp /etc/profile @slave2:/etc
到其他两台机器上
source /etc/profile
在master上
echo 1 > /opt/apache-zookeeper-3.6.3-bin/data/myid
echo 2 > /opt/apache-zookeeper-3.6.3-bin/data/myid
echo 3 > /opt/apache-zookeeper-3.6.3-bin/data/myid
在三台虚拟机上分别启动zookeeper
zkServer.sh start
如果已启动,则重启:
zkServer.sh restart
查看状态(注意一定要是都关闭防火墙的状态!!)
zkServer.sh status'
会有两台台follower 和 一台leader
如图:



就此,zookeeper部署完毕。。。。。。