一、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
因为网络问题下载慢的话,直接下载再上传
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" # 创建顺序节点
###有待补充。。。。