CentOS7安装部署Zookeeper
文章目录
- CentOS7安装部署Zookeeper
- 一、前言
-
- 1.简介
- 2.架构
- 3.集群角色
- 4.特点
- 5.环境
- 二、正文
-
- 1.部署服务器
- 2.基础环境
-
- 1)主机名
- 2)Hosts文件
- 3)关闭防火墙
- 4)JDK 安装部署
- 3.单机部署
-
- 1)下载和解压
- 2)配置文件
- 3)数据目录
- 4)单机启动
- 5)测试
- 6)自启动
- 4.集群部署
-
- 1)下载和解压
- 2)配置文件
- 3)拷贝ZK
- 4)数据目录
- 5)集群启动
- 6)测试
- 7)自启动
- 5.图形化客户端
-
- 1)PrettyZoo
- 2)ZooInspector
- 6.ZK监控平台
-
- 1)修改ZK配置文件
- 2)安装 Prometheus
-
- (1)下载和安装
- (2)修改配置文件
- (3)启动
- (4)自启动
- 3)安装 Grafana
-
- (1)添加YUM仓库
- (2)安装Grafana
- (3)启动
- 4)配置监控面板
-
- (1)配置数据源
- (2)导入监控面板
- 三、其它
- 1.常用命令
CentOS7安装部署Zookeeper
一、前言
1.简介
Apache ZooKeeper 是一个分布式应用程序协调服务;用于维护配置信息、命名、提供分布式同步和组服务。
2.架构
- 客户端-服务器模型:ZooKeeper 遵循客户端-服务器模型,客户端可以向任何服务器节点发起请求。
- 数据模型:采用类似文件系统的树形结构来存储数据,每个节点称为 ZNode。
- 请求处理:所有写请求都通过一个主服务器(Leader)来保证数据的一致性,而读请求可以由任何服务器(Follower 或 Observer)处理。

3.集群角色
- Leader:负责处理所有更新请求,保证集群数据的一致性。在任何给定时间,一个 ZooKeeper 集群只有一个 Leader。
- Follower:处理客户端的非写入请求,并参与 Leader 选举和数据同步过程。
- Observer(可选):与 Follower 类似,但不参与 Leader 选举和写操作的投票过程。Observer 可以提升读取性能,因为它们不会增加写请求的投票负担。
4.特点
- 一致性:保证集群中所有服务器的数据状态一致。
- 可靠性:通过复制数据到所有服务器来确保高可用性。
- 顺序一致性:所有更新都是全局有序的。
5.环境
- Linux 发行版:CentOS-7-x86_64-DVD-1804.iso
- JDK 版本:Java SE Development Kit 11.0.19
- Zookeeper 版本:3.8.3
Zookeeper 官网:https://zookeeper.apache.org/
Zookeeper 3.8.3:https://zookeeper.apache.org/doc/r3.8.3/index.html
Zookeeper Getting Started:https://zookeeper.apache.org/doc/r3.8.3/zookeeperStarted.html
Prometheus 官网:https://prometheus.io/
Prometheus 文档:https://prometheus.io/docs/introduction/overview/
Grafana 官网:https://grafana.com/oss/grafana/
Grafana 文档:https://grafana.com/docs/grafana/latest/?pg=oss-graf&plcmt=hero-btn-2
ZooKeeper Monitor:https://zookeeper.apache.org/doc/r3.6.4/zookeeperMonitor.html
CentOS7安装部署Java11:https://blog.csdn.net/u011424614/article/details/132418561
CentOS基础操作命令:https://blog.csdn.net/u011424614/article/details/94555916
二、正文
1.部署服务器
- Zookeeper 默认端口
| 端口 | 作用 |
|---|---|
| 2181 | 客户端连接端口,用于客户端与 ZooKeeper 集群通信 |
| 2888 | 用于集群内部服务器之间的 Leader 选举 |
| 3888 | 用于集群内部服务器之间的复制(数据同步) |
- 服务器
| 机器名 | IP | 节点部署 |
|---|---|---|
| zk-cluster-01 | 192.168.249.141 | zk 节点 |
| zk-cluster-02 | 192.168.249.142 | zk 节点 |
| zk-cluster-03 | 192.168.249.143 | zk 节点 |
| zk-cluster-04 | 192.168.249.144 | 监控节点(Prometheus + Grafana) |
2.基础环境
1)主机名
- 修改 4 台服务器的主机名
# 141 执行 hostnamectl set-hostname zk-cluster-01 --static hostnamectl set-hostname zk-cluster-01 --transient # 142 执行 hostnamectl set-hostname zk-cluster-02 --static hostnamectl set-hostname zk-cluster-02 --transient # 143 执行 hostnamectl set-hostname zk-cluster-03 --static hostnamectl set-hostname zk-cluster-03 --transient # 144 执行 hostnamectl set-hostname zk-cluster-04 --static hostnamectl set-hostname zk-cluster-04 --transient # 查询状态 hostnamectl status
2)Hosts文件
- 修改 4 台服务器的 hosts 文件
cat > /etc/hosts <<EOF 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.249.141 zk-cluster-01 192.168.249.142 zk-cluster-02 192.168.249.143 zk-cluster-03 192.168.249.144 zk-cluster-04 EOF
3)关闭防火墙
在 4 台服务器上执行
- 可禁用防火墙,或配置开放的端口,后者比较安全
#--关闭防火墙 systemctl stop firewalld.service #--开机禁用防火墙 systemctl disable firewalld.service #--防火墙状态 systemctl status firewalld.service
4)JDK 安装部署
在 4 台服务器上安装JDK
- 安装参考:《CentOS7安装部署Java11》
- 安装目录:/opt/java/jdk-11.0.19
3.单机部署
在 141 服务器上执行
1)下载和解压
- 创建安装目录,并下载
mkdir /opt/zookeeper cd /opt/zookeeper # 下载 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz --no-check-certificate # 解压 tar -xzf apache-zookeeper-3.8.3-bin.tar.gz # 修改文件夹名称 mv /opt/zookeeper/apache-zookeeper-3.8.3-bin /opt/zookeeper/apache-zookeeper-3.8.3 # 进入安装目录 cd /opt/zookeeper/apache-zookeeper-3.8.3
2)配置文件
- 创建 zoo.cfg 配置文件
cat > /opt/zookeeper/apache-zookeeper-3.8.3/conf/zoo.cfg <<EOF # ZooKeeper 基本时间单位,单位毫秒 tickTime=2000 # Follower 启动和连接到 Leader 的最长时间(数值乘以tickTime) initLimit=10 # Follower 与 Leader 同步的最长时间(数值乘以tickTime) syncLimit=5 # 存储快照和事务日志的路径 dataDir=/data/zookeeper # 客户端连接端口 clientPort=2181 # 单个客户端与单个服务器之间的最大并发连接数 maxClientCnxns=1200 # 自动清理时保留的快照数量 autopurge.snapRetainCount=10 # 自动清理任务的执行间隔时间,单位小时 autopurge.purgeInterval=24 EOF
3)数据目录
- whoami 表示当前登录用户
mkdir -p /data/zookeeper chown -R `whoami` /data/zookeeper
4)单机启动
- 启动
cd /opt/zookeeper/apache-zookeeper-3.8.3 # 启动 bin/zkServer.sh start # 停止 bin/zkServer.sh stop
- 查看运行情况
bin/zkServer.sh status
5)测试
- 进入安装目录
cd /opt/zookeeper/apache-zookeeper-3.8.3
- 连接 zk 客户端
bin/zkCli.sh -server 192.168.249.141:2181
- 测试数据
# 创建数据 create /test mydata # 获取数据 get /test # 列出全部节点 ls / # 更新数据 set /test newdata # 删除数据 delete /test # 退出客户端 quit
6)自启动
- 创建 zookeeper.service
cat > /etc/systemd/system/zookeeper.service <<EOF [Unit] Description=Apache ZooKeeper Server Requires=network.target After=network.target [Service] Environment="JAVA_HOME=/opt/java/jdk-11.0.19" Type=forking WorkingDirectory=/opt/zookeeper/apache-zookeeper-3.8.3 ExecStart=/opt/zookeeper/apache-zookeeper-3.8.3/bin/zkServer.sh start ExecStop=/opt/zookeeper/apache-zookeeper-3.8.3/bin/zkServer.sh stop ExecReload=/opt/zookeeper/apache-zookeeper-3.8.3/bin/zkServer.sh restart User=root [Install] WantedBy=multi-user.target EOF
- 启动服务,并设置开机自启动
systemctl daemon-reload systemctl start zookeeper.service systemctl enable zookeeper.service
- 查询进程状态
systemctl status zookeeper.service
4.集群部署
1)下载和解压
在 141 服务器上执行
- 创建安装目录,并下载
mkdir /opt/zookeeper cd /opt/zookeeper # 下载 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz --no-check-certificate # 解压 tar -xzf apache-zookeeper-3.8.3-bin.tar.gz # 修改文件夹名称 mv /opt/zookeeper/apache-zookeeper-3.8.3-bin /opt/zookeeper/apache-zookeeper-3.8.3 # 进入安装目录 cd /opt/zookeeper/apache-zookeeper-3.8.3
2)配置文件
在 141 服务器上执行
- 创建 zoo.cfg 配置文件
cat > /opt/zookeeper/apache-zookeeper-3.8.3/conf/zoo.cfg <<EOF # ZooKeeper 基本时间单位,单位毫秒 tickTime=2000 # Follower 启动和连接到 Leader 的最长时间(数值乘以tickTime) initLimit=10 # Follower 与 Leader 同步的最长时间(数值乘以tickTime) syncLimit=5 # 存储快照和事务日志的路径 dataDir=/data/zookeeper # 客户端连接端口 clientPort=2181 # 单个客户端与单个服务器之间的最大并发连接数 maxClientCnxns=1200 # 自动清理时保留的快照数量 autopurge.snapRetainCount=10 # 自动清理任务的执行间隔时间,单位小时 autopurge.purgeInterval=24 # 集群配置 server.1=zk-cluster-01:2888:3888 server.2=zk-cluster-02:2888:3888 server.3=zk-cluster-03:2888:3888 EOF
3)拷贝ZK
在 142、143 服务器上执行
- 142 和 143 服务器创建目录
mkdir /opt/zookeeper
在 141 服务器上执行
- 拷贝 Zookeeper 到其它服务器
scp -r /opt/zookeeper/apache-zookeeper-3.8.3 root@192.168.249.142:/opt/zookeeper scp -r /opt/zookeeper/apache-zookeeper-3.8.3 root@192.168.249.143:/opt/zookeeper
4)数据目录
在 141、142、143 服务器上执行
- whoami 表示当前登录用户
mkdir -p /data/zookeeper chown -R `whoami` /data/zookeeper
- 创建 myid 文件
# 141 服务器 echo "1" > /data/zookeeper/myid # 142 服务器 echo "2" > /data/zookeeper/myid # 143 服务器 echo "3" > /data/zookeeper/myid
5)集群启动
在 141、142、143 服务器上执行
- 启动
cd /opt/zookeeper/apache-zookeeper-3.8.3 # 启动 bin/zkServer.sh start # 停止 bin/zkServer.sh stop
- 查看运行情况
bin/zkServer.sh status
6)测试
在 141 服务器上执行
- 进入安装目录
cd /opt/zookeeper/apache-zookeeper-3.8.3
- 连接 zk 客户端
bin/zkCli.sh -server 192.168.249.141:2181
- 测试数据
# 创建数据 create /test mydata # 获取数据 get /test # 列出全部节点 ls / # 更新数据 set /test newdata # 删除数据 delete /test # 退出客户端 quit
7)自启动
在 141、142、143 服务器上执行
- 创建 zookeeper.service
cat > /etc/systemd/system/zookeeper.service <<EOF [Unit] Description=Apache ZooKeeper Server Requires=network.target After=network.target [Service] Environment="JAVA_HOME=/opt/java/jdk-11.0.19" Type=forking WorkingDirectory=/opt/zookeeper/apache-zookeeper-3.8.3 ExecStart=/opt/zookeeper/apache-zookeeper-3.8.3/bin/zkServer.sh start ExecStop=/opt/zookeeper/apache-zookeeper-3.8.3/bin/zkServer.sh stop ExecReload=/opt/zookeeper/apache-zookeeper-3.8.3/bin/zkServer.sh restart User=root [Install] WantedBy=multi-user.target EOF
- 启动服务,并设置开机自启动
systemctl daemon-reload systemctl start zookeeper.service systemctl enable zookeeper.service
- 查询进程状态
systemctl status zookeeper.service
5.图形化客户端
1)PrettyZoo
PrettyZoo-GitHub:https://github.com/vran-dev/PrettyZoo
PrettyZoo 是一个基于 Apache Curator 和 JavaFX 实现的 Zookeeper 图形化管理客户端。
2)ZooInspector
ZooInspector:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
Apache ZooKeeper 官方提供的一个简单的 GUI 工具,用于浏览和编辑存储在 ZooKeeper 中的数据。
6.ZK监控平台
Prometheus 官网:https://prometheus.io/
Prometheus 文档:https://prometheus.io/docs/introduction/overview/
Grafana 官网:https://grafana.com/oss/grafana/
Grafana 文档:https://grafana.com/docs/grafana/latest/?pg=oss-graf&plcmt=hero-btn-2
ZooKeeper Monitor:https://zookeeper.apache.org/doc/r3.6.4/zookeeperMonitor.html
-
Zookeeper 从 3.6.0 开始支持 Prometheus 和 Grafana 进行监控。
-
Prometheus 是一个开源系统监控和警报工具包。
-
Grafana 是一款多平台开源分析和交互式可视化网络应用程序。
1)修改ZK配置文件
在 141、142、143 服务器上执行
- 修改 conf/zoo.cfg 配置文件
cat > /opt/zookeeper/apache-zookeeper-3.8.3/conf/zoo.cfg <<EOF # ZooKeeper 基本时间单位,单位毫秒 tickTime=2000 # Follower 启动和连接到 Leader 的最长时间(数值乘以tickTime) initLimit=10 # Follower 与 Leader 同步的最长时间(数值乘以tickTime) syncLimit=5 # 存储快照和事务日志的路径 dataDir=/data/zookeeper # 客户端连接端口 clientPort=2181 # 单个客户端与单个服务器之间的最大并发连接数 maxClientCnxns=1200 # 自动清理时保留的快照数量 autopurge.snapRetainCount=10 # 自动清理任务的执行间隔时间,单位小时 autopurge.purgeInterval=24 # 集群配置 server.1=zk-cluster-01:2888:3888 server.2=zk-cluster-02:2888:3888 server.3=zk-cluster-03:2888:3888 # 指标 metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpHost=0.0.0.0 metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true EOF
- 重启 ZK 集群
systemctl stop zookeeper.service systemctl daemon-reload systemctl start zookeeper.service
2)安装 Prometheus
在 144 服务器上执行
(1)下载和安装
# 安装目录 mkdir /opt/prometheus cd /opt/prometheus # 下载 wget https://github.com/prometheus/prometheus/releases/download/v2.48.1/prometheus-2.48.1.linux-amd64.tar.gz --no-check-certificate # 解压 tar xvfz prometheus-*.tar.gz # 修改文件夹名称 mv /opt/prometheus/prometheus-2.48.1.linux-amd64 /opt/prometheus/prometheus-2.48.1 # 进入安装目录 cd /opt/prometheus/prometheus-2.48.1
(2)修改配置文件
vim prometheus.yml
- 内容(scrape_configs: 下添加配置)
- job_name: "Zookeeper-QuarumPeermain"
static_configs:
- targets: ['zk-cluster-01:7000','zk-cluster-02:7000','zk-cluster-03:7000']
(3)启动
./prometheus --config.file=prometheus.yml
- 浏览器访问:
-
http://192.168.249.144:9090/status
-
http://192.168.249.144:9090/targets
(4)自启动
- 创建 prometheus.service
cat > /etc/systemd/system/prometheus.service <<EOF [Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=root ExecStart=/opt/prometheus/prometheus-2.48.1/prometheus \ --config.file=/opt/prometheus/prometheus-2.48.1/prometheus.yml \ --storage.tsdb.path=/opt/prometheus/prometheus-2.48.1/data [Install] WantedBy=default.target EOF
- 启动服务,并设置开机自启动
systemctl daemon-reload systemctl start prometheus.service systemctl enable prometheus.service
- 查询进程状态
systemctl status prometheus.service
3)安装 Grafana
在 144 服务器上执行
(1)添加YUM仓库
tee /etc/yum.repos.d/grafana.repo <<EOF [grafana] name=Grafana baseurl=https://packages.grafana.com/oss/rpm repo_gpgcheck=1 enabled=1 gpgcheck=1 gpgkey=https://packages.grafana.com/gpg.key sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt EOF
(2)安装Grafana
yum install grafana
(3)启动
- 启动服务,并设置开机自启动
systemctl start grafana-server systemctl enable grafana-server.service
- 查询进程状态
systemctl status grafana-server
- 浏览器访问:http://192.168.249.144:3000
- 首次登录:admin / admin
4)配置监控面板
(1)配置数据源
- 左侧菜单 – Data Source

- Add Data Source

- 选择 Prometheus

- 填写 Connection
- 最下方点击【Save & test】按钮

(2)导入监控面板
- 下载监控面板的 json 文件(也可以使用面板ID:10465)
zookeeper-by-prometheus:https://grafana.com/grafana/dashboards/10465-zookeeper-by-prometheus/

- 导入面板

- 选择文件,或者输入面板ID

- 点击【Import】按钮

- 导入完成

三、其它
1.常用命令
| 命令 | 说明 |
|---|---|
| systemctl daemon-reload | 重新加载服务配置 |
| systemctl start zookeeper.service | 启动服务 |
| systemctl enable zookeeper.service | 开机自启动服务 |
| systemctl status zookeeper.service | 查询服务状态 |
| systemctl stop zookeeper.service | 停止服务 |
| systemctl restart zookeeper.service | 重启服务 |
| systemctl disable zookeeper.service | 禁用开机自启动服务 |
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/e8cab3c1d1.html
