ZooKeeper分布式协调服务

一、ZooKeeper 基本介绍

ZooKeeper 是一个 分布式协调服务,常用于:

  • 配置管理(多个服务共享配置)

  • 命名服务(类似 DNS)

  • 分布式锁(保证分布式系统一致性)

  • 服务注册与发现(Kafka、Hadoop、HBase 等依赖 ZooKeeper)

ZooKeeper 的核心概念:

  • 节点(ZNode):存储数据的基本单元,类似文件系统目录。

  • 临时节点:会话断开后自动删除(常用于服务注册)。

  • 有序节点:节点名后会自动加序号(常用于分布式锁、选主)。

  • Watcher:客户端可监听节点变化(事件通知机制)。

二、单机部署

以centos7为例

1、安装 JDK

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

2、下载并解压 ZooKeeper

cd /usr/local   ##随意选择
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin zookeeper
cd zookeeper

因为网络问题下载慢的话,直接下载再上传

Index of /zookeeper/zookeeper-3.8.4

3、修改配置文件

cd conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

修改:

##ZooKeeper 内部的基本时间单元
tickTime=2000

##ZooKeeper 存放数据的目录。这个目录必须存在,ZooKeeper 才能正常启动。
dataDir=/usr/local/zookeeper/data

##对外提供服务的端口
clientPort=2181

创建数据目录:

mkdir -p /usr/local/zookeeper/data

4、启动 ZooKeeper

cd /usr/local/zookeeper/bin
./zkServer.sh start
./zkServer.sh status

5、客户端连接

./zkCli.sh -server 127.0.0.1:2181

6、使用systemd启动(可选)

[root@localhost bin]# cat /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache ZooKeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target

[Service]
Type=forking
User=zookeeper
Group=zookeeper
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart
Restart=on-failure

[Install]
WantedBy=multi-user.target
useradd -r -s /sbin/nologin zookeeper

chown -R zookeeper:zookeeper /usr/local/zookeeper


sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
sudo systemctl status zookeeper

三、集群部署(3 节点)

三台服务器:

  • zk1: 192.168.200.106

  • zk2: 192.168.200.107

  • zk3: 192.168.200.108

1、配置 zoo.cfg

三台都配置

tickTime=2000
dataDir=/usr/local/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.200.106:2888:3888
server.2=192.168.200.107:2888:3888
server.3=192.168.200.108:2888:3888

2、在每台机器 dataDir 下创建 myid 文件:

echo 1 > /usr/local/zookeeper/data/myid   # zk1
echo 2 > /usr/local/zookeeper/data/myid   # zk2
echo 3 > /usr/local/zookeeper/data/myid   # zk3

3、启动:

./zkServer.sh start
./zkServer.sh status

集群会选出一个 Leader,其余为 Follower

四、ZooKeeper 常用操作

1、进入客户端:

./zkCli.sh -server 127.0.0.1:2181

2、常用命令:

ls /                                   # 查看根目录
create /myapp "hello"      # 创建节点
get /myapp                      # 获取节点内容
set /myapp "world"          # 修改节点内容
delete /myapp                 # 删除节点
create -e /temp "123"      # 创建临时节点
create -s /seq "val"         # 创建顺序节点
 

###有待补充。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值