openEuler JDK21 部署 Zookeeper 集群

zookeeper-jdk21

操作系統:openEuler
JDK:21

主機名IP地址
spark01192.168.171.101
spark02192.168.171.102
spark03192.168.171.103

安裝

1. 升級內核和軟件

yum -y update

2. 安裝常用軟件

yum -y install gcc gcc-c++ autoconf automake cmake make \zlib zlib-devel openssl openssl-devel pcre-devel \rsync openssh-server vim man zip unzip net-tools tcpdump lrzsz tar wget

3. 關閉防火墻

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

4. 修改主機名

hostnamectl set-hostname spark01
hostnamectl set-hostname spark02
hostnamectl set-hostname spark03

5. 修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens160

參考如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
UUID=22d234d4-df21-45ca-a078-bb280978fbce
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.171.101
PREFIX=24
GATEWAY=192.168.171.2
DNS1=192.168.171.2

6. 修改hosts配置文件

vim /etc/hosts

修改內容如下:

192.168.171.101	spark01
192.168.171.102	spark02
192.168.171.103	spark03

7. 重啟系統

reboot

8. 下載安裝JDK和Zookeeper并配置環境變量

在所有主機節點創建軟件目錄

mkdir -p /opt/soft 

以下操作在 spark01 主機上完成

進入軟件目錄

cd /opt/soft

下載JDK

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz

下載 Zookeeper

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz

解壓 JDK 修改名稱

解壓 zookeeper 修改名稱

tar -zxvf jdk-21_linux-x64_bin.tar.gz
mv jdk-21.0.1 jdk-21
tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz
mv apache-zookeeper-3.9.1-bin zookeeper-3

配置環境變量

vim /etc/profile.d/my_env.sh

編寫以下內容:

export JAVA_HOME=/opt/soft/jdk-21
export set JAVA_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"export ZOOKEEPER_HOME=/opt/soft/zookeeper-3export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

在各服務器上使環境變量生效

source /etc/profile

10. 編輯配置文件

cd $ZOOKEEPER_HOME/conf
vim zoo.cfg
# 心跳單位,2s
tickTime=2000
# zookeeper-3初始化的同步超時時間,10個心跳單位,也即20s
initLimit=10
# 普通同步:發送一個請求并得到響應的超時時間,5個心跳單位也即10s
syncLimit=5
# 內存快照數據的存儲位置
dataDir=/home/zookeeper-3/data
# 事務日志的存儲位置
dataLogDir=/home/zookeeper-3/datalog
# 當前zookeeper-3節點的端口 
clientPort=2181
# 單個客戶端到集群中單個節點的并發連接數,通過ip判斷是否同一個客戶端,默認60
maxClientCnxns=1000
# 保留7個內存快照文件在dataDir中,默認保留3個
autopurge.snapRetainCount=7
# 清除快照的定時任務,默認1小時,如果設置為0,標識關閉清除任務
autopurge.purgeInterval=1
#允許客戶端連接設置的最小超時時間,默認2個心跳單位
minSessionTimeout=4000
#允許客戶端連接設置的最大超時時間,默認是20個心跳單位,也即40s,
maxSessionTimeout=300000
#zookeeper-3 3.5.5啟動默認會把AdminService服務啟動,這個服務默認是8080端口
admin.serverPort=9001
#集群地址配置
server.1=spark01:2888:3888
server.2=spark02:2888:3888
server.3=spark03:2888:3888
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper-3/data
dataLogDir=/home/zookeeper-3/datalog 
clientPort=2181
maxClientCnxns=1000
autopurge.snapRetainCount=7
autopurge.purgeInterval=1
minSessionTimeout=4000
maxSessionTimeout=300000
admin.serverPort=9001
server.1=spark01:2888:3888
server.2=spark02:2888:3888
server.3=spark03:2888:3888

11. 保存后根據配置文件創建目錄

在每臺服務器上執行

mkdir -p /home/zookeeper-3/data
mkdir -p /home/zookeeper-3/datalog

12. 編寫zookeeper-3開機啟動腳本

在/etc/systemd/system/文件夾下創建一個啟動腳本zookeeper-3.service

注意:在每臺服務器上編寫

cd /etc/systemd/system
vim zookeeper.service

內容如下:

[Unit]
Description=zookeeper
After=syslog.target network.target[Service]
Type=forking
# 指定zookeeper-3 日志文件路徑,也可以在zkServer.sh 中定義
Environment=ZOO_LOG_DIR=/home/zookeeper-3/datalog
# 指定JDK路徑,也可以在zkServer.sh 中定義
Environment=JAVA_HOME=/opt/soft/jdk-21
ExecStart=/opt/soft/zookeeper-3/bin/zkServer.sh start
ExecStop=/opt/soft/zookeeper-3/bin/zkServer.sh stop
Restart=always
User=root
Group=root[Install]
WantedBy=multi-user.target
[Unit]
Description=zookeeper
After=syslog.target network.target[Service]
Type=forking
Environment=ZOO_LOG_DIR=/home/zookeeper-3/datalog
Environment=JAVA_HOME=/opt/soft/jdk-21
ExecStart=/opt/soft/zookeeper-3/bin/zkServer.sh start
ExecStop=/opt/soft/zookeeper-3/bin/zkServer.sh stop
Restart=always
User=root
Group=root[Install]
WantedBy=multi-user.target
systemctl daemon-reload
# 等所有主機配置好后再執行以下命令
systemctl start zookeeper
systemctl enable zookeeper
systemctl status zookeeper

13. 配置ssh免密鑰登錄

創建本地秘鑰并將公共秘鑰寫入認證文件

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id root@spark01
ssh-copy-id root@spark02
ssh-copy-id root@spark03

14. 分發軟件和配置文件

分發 ssh 免密鑰

scp -r ~/.ssh root@spark02:~/
scp -r ~/.ssh root@spark03:~/

分發 hosts 文件

scp -r /etc/hosts root@spark02:/etc/
scp -r /etc/hosts root@spark03:/etc/

分發軟件

scp -r /opt/soft/jdk-21 root@spark02:/opt/soft
scp -r /opt/soft/zookeeper-3 root@spark02:/opt/soft
scp -r /opt/soft/jdk-21 root@spark03:/opt/soft
scp -r /opt/soft/zookeeper-3 root@spark03:/opt/soft

分發環境變量

scp /etc/profile.d/my_env.sh root@spark02:/etc/profile.d/
scp /etc/profile.d/my_env.sh root@spark03:/etc/profile.d/

在所有主機節點 使新的環境變量生效

source /etc/profile

15. myid

spark01

echo 1 > /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid

spark02

echo 2 > /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid

spark03

echo 3 > /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid

16. 啟動服務

在各節點執行以下命令

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

17. 驗證

jps
zkServer.sh status

18. 瀏覽器訪問 AdminServer

瀏覽器訪問:http://spark03:9001/commands

zookeeper AdminServer

zookeeper shell

zookeeper 存儲結構類似于Linux文件系統 使用根結構

node 不是文件也不是目錄

客戶端命令行

# 連接本地服務
zkCli.sh
# 連接其他節點
zkCli.sh -server spark02:2181
# 這里并不是連接了三個節點,而是按照順序連接一個,當第一個連接無法獲取時,就連接第二個
zkCli.sh -server spark01:2181,spark02:2181,spark03:2181

查看幫助

help
ZooKeeper -server host:port -client-configuration properties-file cmd argsaddWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVEaddauth scheme authclose config [-c] [-w] [-s]connect host:portcreate [-s] [-e] [-c] [-t ttl] path [data] [acl]delete [-v version] pathdeleteall path [-b batch size]delquota [-n|-b|-N|-B] pathget [-s] [-w] pathgetAcl [-s] pathgetAllChildrenNumber pathgetEphemerals pathhistory listquota pathls [-s] [-w] [-R] pathprintwatches on|offquit reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]redo cmdnoremovewatches path [-c|-d|-a] [-l]set [-s] [-v version] path datasetAcl [-s] [-v version] [-R] path aclsetquota -n|-b|-N|-B val pathstat [-w] pathsync pathversion whoami

連接其他節點

# 在某節點連接其他節點
connect spark01:2181

退出

quit

查看節點

ls /
ls -s /
cZxid = 0x0	# 節點創建的時候的zxid 
ctime = Thu Jan 01 08:00:00 CST 1970  # 節點創建的時候的zxid
mZxid = 0x0 #節點修改的時候的zxid,與子節點的修改無關
mtime = Thu Jan 01 08:00:00 CST 1970 # 節點修改的時間
pZxid = 0x0  # 子節點的創建/刪除對應的 zxid,和修改無關,和孫子節點無關
cversion = -1 # 子節點的更新次數
dataVersion = 0 # 節點數據的更新次數
aclVersion = 0 # 節點(ACL)的更新次數
ephemeralOwner = 0x0 # 值表示與該節點綁定的 session id. 如果該節點不是 ephemeral 節點, ephemeralOwner 值為0
dataLength = 0  # 節點數據的字節數
numChildren = 1 # 節點數據的字節數

創建節點

持久

臨時

有序號

無序號

# 持久無序號
# 節點lihaozhe存儲的數據是 李昊哲
create /lihaozhe "李昊哲"
# 節點lihaozhe存儲的數據是 空
create /lihaozhe ""# 查看該節點中的文件或目錄,[]代表其中沒有文件或子目錄
[zk: localhost:2181(CONNECTED) 7] ls /lihaozhe
[]# 創建持久無序號子節點
create /lihaozhe/zk01
# 創建持久有序號子節點
create -s /lihaozhe/zk01# 創建臨時無序號節點
create -e /lihaozhe/zk10
# 創建臨時有序號節點
create -e -s /lihaozhe/zk10

刪除節點

delete /lihaozhe/zk04
delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
deleteall /lihaozhe

獲取節點數據

get /lihaozhe

設置節點數據

set /lihaozhe "李大寶"

關閉當前session

close

監聽

# NodeChildrenChanged
ls -w /lihaozhe
# NodeDataChanged
stat -w /lihaozhe
# 

haozhe
[]

創建持久無序號子節點

create /lihaozhe/zk01

創建持久有序號子節點

create -s /lihaozhe/zk01

創建臨時無序號節點

create -e /lihaozhe/zk10

創建臨時有序號節點

create -e -s /lihaozhe/zk10


### 刪除節點```bash
delete /lihaozhe/zk04
delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
deleteall /lihaozhe

獲取節點數據

get /lihaozhe

設置節點數據

set /lihaozhe "李大寶"

關閉當前session

close

監聽

# NodeChildrenChanged
ls -w /lihaozhe
# NodeDataChanged
stat -w /lihaozhe
# 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/206997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206997.shtml
英文地址,請注明出處:http://en.pswp.cn/news/206997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

E: 無法獲得鎖 /var/lib/dpkg/lock-frontend。鎖正由進程 6253(apt-get)持有

問題 解決方案 sudo rm /var/lib/dpkg/lock-frontend接著,繼續安裝。

el-from表單實現lable字體大小改變

<el-form-item label"活動名稱" class"my-form"> <el-input v-model"form.name" style"width: 80%;" ></el-input> </el-form-item> <style scoped lang"less"> //給當前頁面所以的lable都字…

Fiddler抓包測試

模擬弱網測試 操作&#xff1a;一、Rules - Customize Rules &#xff08;快捷鍵CtrlR&#xff09;彈出編輯器 二、接著CtrlF查找m_SimulateModem標志位 三、默認上傳300ms&#xff0c;下載150ms 四、更改后&#xff0c;繼續Rules - Performances - Simulate Modem Speeds勾上 …

【復雜網絡建模】——基于Graph Convolutional Networks (GCN)進行鏈接預測

目錄 一、復雜網絡建模 二、圖嵌入方法&#xff08;Graph Convolutional Networks (GCN) &#xff09; 1. 圖表示&#xff1a; 2. 鄰接矩陣&#xff08;Adjacency Matrix&#xff09;&#xff1a; 3. 圖卷積層&#xff08;Graph Convolutional Layer&#xff09;&#xff…

【C語言】7-32 刮刮彩票 分數 20

7-32 刮刮彩票 分數 20 全屏瀏覽題目 切換布局 作者 DAI, Longao 單位 杭州百騰教育科技有限公司 “刮刮彩票”是一款網絡游戲里面的一個小游戲。如圖所示&#xff1a; 每次游戲玩家會拿到一張彩票&#xff0c;上面會有 9 個數字&#xff0c;分別為數字 1 到數字 9&#xf…

Python 中 Thread 線程的用法

使用thread一直沒記錄過&#xff0c;最近又忘記具體用法了&#xff0c;記錄下 Thread()是Python標準庫中threading模塊的一個類&#xff0c;它可以用來創建和管理線程。線程是一種并發執行的方式&#xff0c;可以讓你的程序在等待某些事件的同時&#xff0c;執行其他的任務。例…

排序-插入排序與希爾排序

文章目錄 一、插入排序二、希爾排序 一、插入排序 思路&#xff1a; 當插入第i(i>1)個元素時&#xff0c;前面的array[0],array[1],…,array[i-1]已經排好序&#xff0c;此時用array[i]的排序碼與array[i-1],array[i-2],…的排序碼順序進行比較&#xff0c;找到插入位置即將…

Qt Rsa 加解密方法使用(pkcs1, pkcs8, 以及文件存儲和內存存儲密鑰)

Qt RSA 加解密 完整使用 密鑰格式&#xff1a; pkcs#1pkcs#8 如何區分密鑰對是PKCS1還是PKCS8&#xff1f; 通常PKCS1密鑰對的開始部分為&#xff1a;-----BEGIN RSA PRIVATE KEY-----或 -----BEGIN RSA PUBLIC KEY-----。而PKCS8密鑰對的開始部分為&#xff1a;-----BEGIN…

基于Springboot+mybatis+mysql+jsp招聘網站

基于Springbootmybatismysqljsp招聘網站 一、系統介紹二、功能展示四、其他系統實現五、獲取源碼 一、系統介紹 項目類型&#xff1a;Java EE項目 項目名稱&#xff1a;基于SPringBoot的照片網站 項目架構&#xff1a;B/S架構 開發語言&#xff1a;Java語言 前端技術&…

Swagger Array 逐步解密:帶你簡化開發工作

Swagger 允許開發者定義 API 的路徑、請求參數、響應和其他相關信息&#xff0c;以便生成可讀性較高的文檔和自動生成客戶端代碼。而 Array &#xff08;數組&#xff09;是一種常見的數據結構&#xff0c;用于存儲和組織多個相同類型的數據元素。數組可以有不同的維度和大小&a…

C++初學教程三

目錄 一、運算符 一、自增自減運算符 二、位運算符 三、關系運算符

情緒管理法則

感受情緒&#xff0c;聆聽情緒&#xff0c;接納情緒&#xff0c;管理情緒&#xff0c;將自己從黑暗中拯救出來 感受情緒的價值&#xff0c;了解情緒產生的原因 其實情緒沒有好壞之分&#xff0c;負面情緒是人體自我保護的產物 改變認知方式&#xff0c;做情緒的主人 典型案例…

軌道電流檢測IC——FP355,助力蓄電池充電器、SPS(適配器)、電池管理系統、多口快充充電器的優雅升級

目錄 一、FP355概述 二、FP355特點 三、FP355應用 隨著移動設備的普及和人們對電力需求的不斷增長&#xff0c;充電器的安全性和充電效率成為了重要的關注點。 作為一種能夠精確檢測電流的集成電路&#xff0c;軌道電流檢測IC——FP355是個不錯的選擇。它不僅廣泛應用于蓄電…

SpringBoot集成Spring Security+jwt+kaptcha驗證(簡單實現,可根據實際修改邏輯)

參考文章 【全網最細致】SpringBoot整合Spring Security JWT實現用戶認證 需求 結合jwt實現登錄功能&#xff0c;采用自帶/login接口實現權限控制 熟悉下SpringSecurity SpringSecurity 采用的是責任鏈的設計模式&#xff0c;是一堆過濾器鏈的組合&#xff0c;它有一條很…

P5743 【深基7.習8】猴子吃桃

題目描述 一只小猴買了若干個桃子。第一天他剛好吃了這些桃子的一半&#xff0c;又貪嘴多吃了一個&#xff1b;接下來的每一天它都會吃剩余的桃子的一半外加一個。第 n n n 天早上起來一看&#xff0c;只剩下 1 1 1 個桃子了。請問小猴買了幾個桃子&#xff1f; 輸入格式 …

鴻蒙(HarmonyOS)應用開發——http的使用

在使用app的時候&#xff0c;不可能將所有信息都存儲在app中&#xff0c;是需要鏈接互聯網&#xff0c;從服務端獲取數據。 #mermaid-svg-nP3gq7NrsyR2Df4i {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-nP3gq7Nrs…

03_W5500TCP_Client

上一節我們完成了W5500網絡的初始化過程&#xff0c;這節我們進行TCP通信&#xff0c;w5500作為TCP客戶端與電腦端的TCP_Server進行通信。 目錄 1.TCP通信流程圖&#xff1a; tcp的三次握手&#xff1a; tcp四次揮手&#xff1a; 2.代碼分析&#xff1a; 3.測試&#xff1a…

Python游戲測試工具自動化遍歷游戲中所有關卡

場景 游戲里有很多關卡&#xff08;可能有幾百個了&#xff09;&#xff0c;理論上每次發布到外網前都要遍歷各關卡看看會不會有異常&#xff0c;上次就有玩家在打某個關卡時卡住不動了&#xff0c;如果每個關卡要人工遍歷這樣做會非常的耗時&#xff0c;所以考慮用自動化的方…

C語言第十六集(后續)(結構體)

1.匿名結構體(即不寫結構體名)只能用一次, 而且匿名結構體寫法特別危險 兩個匿名結構體盡管內容完全相同,但編譯器仍然認為二位是不相同的類型 結構的特殊聲明搜 2.結構體自己給自己里面包含一個結構體變量((此結構體就是當前所處的這個結構體))指針是沒有問題的,但是 結構…

AI專題報告:2022年中國人工智能產業研究報告

今天分享的AI系列深度研究報告&#xff1a;《AI專題報告&#xff1a;2022年中國人工智能產業研究報告》。 &#xff08;報告出品方&#xff1a;艾瑞咨詢&#xff09; 報告共計&#xff1a;112頁 人工智能參與社會建設的千行百業 價值性、通用性、效率化為產業發展戰略方向 …