CentOS7安裝部署Zookeeper
一、前言
1.簡介
Apache ZooKeeper 是一個分布式應用程序協(xié)調服務;用于維護配置信息、命名、提供分布式同步和組服務。
2.架構
- 客戶端-服務器模型:ZooKeeper 遵循客戶端-服務器模型,客戶端可以向任何服務器節(jié)點發(fā)起請求。
- 數(shù)據(jù)模型:采用類似文件系統(tǒng)的樹形結構來存儲數(shù)據(jù),每個節(jié)點稱為 ZNode。
- 請求處理:所有寫請求都通過一個主服務器(Leader)來保證數(shù)據(jù)的一致性,而讀請求可以由任何服務器(Follower 或 Observer)處理。
3.集群角色
- Leader:負責處理所有更新請求,保證集群數(shù)據(jù)的一致性。在任何給定時間,一個 ZooKeeper 集群只有一個 Leader。
- Follower:處理客戶端的非寫入請求,并參與 Leader 選舉和數(shù)據(jù)同步過程。
- Observer(可選):與 Follower 類似,但不參與 Leader 選舉和寫操作的投票過程。Observer 可以提升讀取性能,因為它們不會增加寫請求的投票負擔。
4.特點
- 一致性:保證集群中所有服務器的數(shù)據(jù)狀態(tài)一致。
- 可靠性:通過復制數(shù)據(jù)到所有服務器來確保高可用性。
- 順序一致性:所有更新都是全局有序的。
5.環(huán)境
- Linux 發(fā)行版:CentOS-7-x86_64-DVD-1804.iso
- JDK 版本:Java SE Development Kit 11.0.19
- Zookeeper 版本:3.8.3
Zookeeper 官網(wǎng):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 官網(wǎng):https://prometheus.io/
Prometheus 文檔:https://prometheus.io/docs/introduction/overview/
Grafana 官網(wǎng):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 | 用于集群內(nèi)部服務器之間的 Leader 選舉 |
3888 | 用于集群內(nèi)部服務器之間的復制(數(shù)據(jù)同步) |
- 服務器
機器名 | IP | 節(jié)點部署 |
---|---|---|
zk-cluster-01 | 192.168.249.141 | zk 節(jié)點 |
zk-cluster-02 | 192.168.249.142 | zk 節(jié)點 |
zk-cluster-03 | 192.168.249.143 | zk 節(jié)點 |
zk-cluster-04 | 192.168.249.144 | 監(jiān)控節(jié)點(Prometheus + Grafana) |
2.基礎環(huán)境
1)主機名
- 修改 4 臺服務器的主機名
# 141 執(zhí)行
hostnamectl set-hostname zk-cluster-01 --static
hostnamectl set-hostname zk-cluster-01 --transient
# 142 執(zhí)行
hostnamectl set-hostname zk-cluster-02 --static
hostnamectl set-hostname zk-cluster-02 --transient
# 143 執(zhí)行
hostnamectl set-hostname zk-cluster-03 --static
hostnamectl set-hostname zk-cluster-03 --transient
# 144 執(zhí)行
hostnamectl set-hostname zk-cluster-04 --static
hostnamectl set-hostname zk-cluster-04 --transient
# 查詢狀態(tài)
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 臺服務器上執(zhí)行
- 可禁用防火墻,或配置開放的端口,后者比較安全
#--關閉防火墻
systemctl stop firewalld.service
#--開機禁用防火墻
systemctl disable firewalld.service
#--防火墻狀態(tài)
systemctl status firewalld.service
4)JDK 安裝部署
在 4 臺服務器上安裝JDK
- 安裝參考:《CentOS7安裝部署Java11》
- 安裝目錄:
/opt/java/jdk-11.0.19
3.單機部署
在 141 服務器上執(zhí)行
1)下載和解壓
- 創(chuàng)建安裝目錄,并下載
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)配置文件
- 創(chuàng)建 zoo.cfg 配置文件
cat > /opt/zookeeper/apache-zookeeper-3.8.3/conf/zoo.cfg <<EOF
# ZooKeeper 基本時間單位,單位毫秒
tickTime=2000
# Follower 啟動和連接到 Leader 的最長時間(數(shù)值乘以tickTime)
initLimit=10
# Follower 與 Leader 同步的最長時間(數(shù)值乘以tickTime)
syncLimit=5
# 存儲快照和事務日志的路徑
dataDir=/data/zookeeper
# 客戶端連接端口
clientPort=2181
# 單個客戶端與單個服務器之間的最大并發(fā)連接數(shù)
maxClientCnxns=1200
# 自動清理時保留的快照數(shù)量
autopurge.snapRetainCount=10
# 自動清理任務的執(zhí)行間隔時間,單位小時
autopurge.purgeInterval=24
EOF
3)數(shù)據(jù)目錄
- 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
- 測試數(shù)據(jù)
# 創(chuàng)建數(shù)據(jù)
create /test mydata
# 獲取數(shù)據(jù)
get /test
# 列出全部節(jié)點
ls /
# 更新數(shù)據(jù)
set /test newdata
# 刪除數(shù)據(jù)
delete /test
# 退出客戶端
quit
6)自啟動
- 創(chuàng)建 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
- 查詢進程狀態(tài)
systemctl status zookeeper.service
4.集群部署
1)下載和解壓
在 141 服務器上執(zhí)行
- 創(chuàng)建安裝目錄,并下載
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 服務器上執(zhí)行
- 創(chuàng)建 zoo.cfg 配置文件
cat > /opt/zookeeper/apache-zookeeper-3.8.3/conf/zoo.cfg <<EOF
# ZooKeeper 基本時間單位,單位毫秒
tickTime=2000
# Follower 啟動和連接到 Leader 的最長時間(數(shù)值乘以tickTime)
initLimit=10
# Follower 與 Leader 同步的最長時間(數(shù)值乘以tickTime)
syncLimit=5
# 存儲快照和事務日志的路徑
dataDir=/data/zookeeper
# 客戶端連接端口
clientPort=2181
# 單個客戶端與單個服務器之間的最大并發(fā)連接數(shù)
maxClientCnxns=1200
# 自動清理時保留的快照數(shù)量
autopurge.snapRetainCount=10
# 自動清理任務的執(zhí)行間隔時間,單位小時
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 服務器上執(zhí)行
- 142 和 143 服務器創(chuàng)建目錄
mkdir /opt/zookeeper
在 141 服務器上執(zhí)行
- 拷貝 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)數(shù)據(jù)目錄
在 141、142、143 服務器上執(zhí)行
- whoami 表示當前登錄用戶
mkdir -p /data/zookeeper
chown -R `whoami` /data/zookeeper
- 創(chuàng)建 myid 文件
# 141 服務器
echo "1" > /data/zookeeper/myid
# 142 服務器
echo "2" > /data/zookeeper/myid
# 143 服務器
echo "3" > /data/zookeeper/myid
5)集群啟動
在 141、142、143 服務器上執(zhí)行
- 啟動
cd /opt/zookeeper/apache-zookeeper-3.8.3
# 啟動
bin/zkServer.sh start
# 停止
bin/zkServer.sh stop
- 查看運行情況
bin/zkServer.sh status
6)測試
在 141 服務器上執(zhí)行
- 進入安裝目錄
cd /opt/zookeeper/apache-zookeeper-3.8.3
- 連接 zk 客戶端
bin/zkCli.sh -server 192.168.249.141:2181
- 測試數(shù)據(jù)
# 創(chuàng)建數(shù)據(jù)
create /test mydata
# 獲取數(shù)據(jù)
get /test
# 列出全部節(jié)點
ls /
# 更新數(shù)據(jù)
set /test newdata
# 刪除數(shù)據(jù)
delete /test
# 退出客戶端
quit
7)自啟動
在 141、142、143 服務器上執(zhí)行
- 創(chuàng)建 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
- 查詢進程狀態(tài)
systemctl status zookeeper.service
5.圖形化客戶端
1)PrettyZoo
PrettyZoo-GitHub:https://github.com/vran-dev/PrettyZoo
PrettyZoo 是一個基于 Apache Curator 和 JavaFX 實現(xiàn)的 Zookeeper 圖形化管理客戶端。
2)ZooInspector
ZooInspector:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
Apache ZooKeeper 官方提供的一個簡單的 GUI 工具,用于瀏覽和編輯存儲在 ZooKeeper 中的數(shù)據(jù)。
6.ZK監(jiān)控平臺
Prometheus 官網(wǎng):https://prometheus.io/
Prometheus 文檔:https://prometheus.io/docs/introduction/overview/
Grafana 官網(wǎng):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 進行監(jiān)控。
-
Prometheus 是一個開源系統(tǒng)監(jiān)控和警報工具包。
-
Grafana 是一款多平臺開源分析和交互式可視化網(wǎng)絡應用程序。
1)修改ZK配置文件
在 141、142、143 服務器上執(zhí)行
- 修改 conf/zoo.cfg 配置文件
cat > /opt/zookeeper/apache-zookeeper-3.8.3/conf/zoo.cfg <<EOF
# ZooKeeper 基本時間單位,單位毫秒
tickTime=2000
# Follower 啟動和連接到 Leader 的最長時間(數(shù)值乘以tickTime)
initLimit=10
# Follower 與 Leader 同步的最長時間(數(shù)值乘以tickTime)
syncLimit=5
# 存儲快照和事務日志的路徑
dataDir=/data/zookeeper
# 客戶端連接端口
clientPort=2181
# 單個客戶端與單個服務器之間的最大并發(fā)連接數(shù)
maxClientCnxns=1200
# 自動清理時保留的快照數(shù)量
autopurge.snapRetainCount=10
# 自動清理任務的執(zhí)行間隔時間,單位小時
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 服務器上執(zhí)行
(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
- 內(nèi)容(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)自啟動
- 創(chuàng)建 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
- 查詢進程狀態(tài)
systemctl status prometheus.service
3)安裝 Grafana
在 144 服務器上執(zhí)行
(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
- 查詢進程狀態(tài)
systemctl status grafana-server
- 瀏覽器訪問:
http://192.168.249.144:3000
- 首次登錄:admin / admin
4)配置監(jiān)控面板
(1)配置數(shù)據(jù)源
- 左側菜單 - Data Source
- Add Data Source
- 選擇 Prometheus
- 填寫 Connection
- 最下方點擊【Save & test】按鈕
(2)導入監(jiān)控面板
- 下載監(jiān)控面板的 json 文件(也可以使用面板ID:10465)
zookeeper-by-prometheus:https://grafana.com/grafana/dashboards/10465-zookeeper-by-prometheus/
- 導入面板
- 選擇文件,或者輸入面板ID
- 點擊【Import】按鈕
文章來源:http://www.zghlxwxcb.cn/news/detail-767698.html
- 導入完成
文章來源地址http://www.zghlxwxcb.cn/news/detail-767698.html
三、其它
1.常用命令
命令 | 說明 |
---|---|
systemctl daemon-reload | 重新加載服務配置 |
systemctl start zookeeper.service | 啟動服務 |
systemctl enable zookeeper.service | 開機自啟動服務 |
systemctl status zookeeper.service | 查詢服務狀態(tài) |
systemctl stop zookeeper.service | 停止服務 |
systemctl restart zookeeper.service | 重啟服務 |
systemctl disable zookeeper.service | 禁用開機自啟動服務 |
到了這里,關于CentOS7安裝部署Zookeeper的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!