日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zookeeper 集群 + kafka 集群 : 安装部署(附单机部署)

發布時間:2023/12/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zookeeper 集群 + kafka 集群 : 安装部署(附单机部署) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、集群規劃

2、集群部署 (!!!前提是要有 JDK 環境 !!!)

3、zookeeper 集群安裝部署

4、kafka 集群安裝部署

5、Centos7 單節點部署 kafka


環境:

Centos7 (CentOS-7-x86_64-DVD-2009.iso) [ *3 虛擬機]

JDK1.8 (jdk-8u131-linux-x64.tar.gz)

Zookeeper-3.5.7 (apache-zookeeper-3.5.7-bin.tar.gz)

Kafka3.0.0 (kafka_2.12-3.0.0.tgz)

1、集群規劃

node1-130node2-131node3-132
192.168.220.130192.168.220.131192.168.220.132
zkzkzk
kafkakafkakafka

first of all? 在 node1-130/ node2-131/ node3-132 三個節點上都上配置 hosts:

vim /etc/hosts

在末尾添加:

192.168.220.130 node1-130 192.168.220.131 node2-131 192.168.220.132 node3-132

secondly? 關閉三個節點的防火墻

#查看狀態: systemctl status firewalld.service #關閉防火墻 systemctl stop firewalld.service #永久關閉防火墻 systemctl disable firewalld.service

2、集群部署 (!!!前提是要有 JDK 環境 !!!)

官方下載地址:kafka:Apache Kafka

? ????????????????????????zookeeper:Apache ZooKeeper

3、zookeeper 集群安裝部署

1)解壓安裝包(下載帶 bin 的包!!!apache-zookeeper-3.5.7-bin.tar.gz,否則會報錯 [狗頭])

# cd /software [root@node1-130 software]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module [root@node2-131 software]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module [root@node3-132 software]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module

2)修改解壓后的文件名稱

# cd /opt/module [root@node1-130 module]# mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7 [root@node2-131 module]# mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7 [root@node3-132 module]# mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7

3)配置 服務器編號

????????? 1. 在 /opt/module/zookeeper-3.5.7/ 目錄下創建 zkData

[root@node1-130 zookeeper-3.5.7]# mkdir zkData [root@node2-131 zookeeper-3.5.7]# mkdir zkData [root@node3-132 zookeeper-3.5.7]# mkdir zkData

????????? 2. 在 opt/module/zookeeper-3.5.7/zkData 目錄下創建一個 myid 的文件

# cd /opt/module/zookeeper-3.5.7/zkData [root@node1-130 zkData]# vi myid 內容為: ? ? ? ? ? ? ? 1 ? [root@node2-131 zkData]# vi myid 內容為: ? ? ? ? ? ? ? 2 ? [root@node3-132 zkData]# vi myid 內容為: ? ? ? ? ? ? ? 3

(注意:上下不要有空行,左右不要有空格,且 數字一定要從1開始,否則報錯!!!

4)配置zoo.cfg文件

????????? 1. 重命名 /opt/module/zookeeper-3.5.7/conf 這個目錄下的 zoo_sample.cfg 為 zoo.cfg

cd /opt/module/zookeeper-3.5.7/conf [root@node1-130 conf]# mv zoo_sample.cfg zoo.cfg

? ????????2. 編輯 zoo.cfg 文件

[root@node1-130 conf]# vim zoo.cfg ? #修改數據存儲路徑配置 dataDir=/opt/module/zookeeper-3.5.7/zkData ? #增加如下配置: #######################cluster########################## server.1=node1-130:2888:3888 server.2=node2-131:2888:3888 server.3=node3-132:2888:3888

? ????????參數解讀:

server.1=node1-130:2888:3888 server.A=B:C:DA 是一個數字,表示這個是第幾號服務器;集群模式下配置一個文件 myid,這個文件在 dataDir 目錄下,這個文件里面有一個數據 A 值,Zookeeper 啟動時讀取此文件,拿到里面的數據與 zoo.cfg 里面的配置信息比較從而判斷到底是哪個 server。B 是這個服務器的地址;C 是這個服務器 Follower 與集群中的 Leader 服務器交換信息的端口;D 是萬一集群中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。

? ????????3. 同步 zoo.cfg 配置文件

[root@node1-130 conf]# xsync zoo.cfg

如果出現:-bash: xsync: 未找到命令

執行以下步驟,編寫 xsync 腳本:

① 安裝 rsync

yum -y install rsync# 啟動服務與開機自啟動 systemctl start rsyncd.service systemctl enable rsyncd.service

② 在 /root/bin 目錄下創建 xsync 文件

cd /root/bin vim xsync

粘貼以下內容:

#!/bin/bash #1. 獲取輸入參數個數,如果沒有參數,直接退出 pcount=$# if [ $pcount -lt 1 ] thenecho Not Enough Arguement!exit; fi ? #2. 遍歷集群所有機器 for host in node1-130 node2-131 node3-132 ? ? ? ##更改自己的服務器域名 doecho ==================== $host ==================== ?#3. 遍歷所有目錄,挨個發送for file in $@do ?#4 判斷文件是否存在if [ -e $file ]then ?#5. 獲取父目錄pdir=$(cd -P $(dirname $file); pwd)echo pdir=$pdir ?#6. 獲取當前文件的名稱fname=$(basename $file)echo fname=$fname ?#7. 通過ssh執行命令:在$host主機上遞歸創建文件夾(如果存在該文件夾)ssh $host "mkdir -p $pdir" ?#8. 遠程同步文件至$host主機的$USER用戶的$pdir文件夾下rsync -av $pdir/$fname $USER@$host:$pdirelseecho $file does not exists!fidone done

③ 給 xsync 添加權限:

? chmod 777 xsync

④ 添加全局變量

vim /etc/profile ? # 在末尾添加: PATH=$PATH:/root/bin export PATH ? # 退出,執行以下命令使其生效 source /etc/profile

參考:

https://www.csdn.net/tags/MtTaEg2sMjA2MDA2LWJsb2cO0O0O.html

集群服務器的同步xsync命令使用 - 灰信網(軟件開發博客聚合)

如果想執行 xsync 腳本時不用輸入密碼,需要配置 root 用戶免密登錄。這里必須要配置,不然起集群的時候會超時,然后某些節點就會啟動失敗。

root 用戶免密登錄配置:

① 在 ~./ssh 目錄下生成一對密鑰(3個節點都要生成)

cd ~/.ssh ssh-keygen -t rsa # 輸入該命令后會有提示,一直回車即可 # 如果提示 【-bash: cd: .ssh: 沒有那個文件或目錄】 直接 ssh-keygen -t rsa 生成密鑰就行

② node1-130 節點中將公匙保存到 authorized_keys 文件中

[root@node1-130 .ssh]# cat id_rsa.pub >> authorized_keys

③ 登錄 node2-131 和 node3-132 節點,將其公鑰文件內容拷貝到 node1-130 節點的 authorized_keys 文件中

# node2-131 節點的公鑰拷貝 [root@node2-131 .ssh]# ssh-copy-id -i node1-130 ? ? # node3-132 節點的公鑰拷貝 [root@node3-132 .ssh]# ssh-copy-id -i node1-130

④ 在 node1-130 節點中修改權限(~/.ssh 目錄 和 authorized_keys 文件)

[root@node1-130 .ssh]# chmod 700 ~/.ssh [root@node1-130 .ssh]# chmod 644 ~/.ssh/authorized_keys

⑤ 將授權文件分發到其他節點上

# 拷貝到 node2-131 節點上 [root@node1-130 .ssh]# scp /root/.ssh/authorized_keys node2-131:/root/.ssh/ ? # 拷貝到 node3-132 節點上 [root@node1-130 .ssh]# scp /root/.ssh/authorized_keys node3-132:/root/.ssh/

至此,免密碼登錄已經設定完成,注意第一次ssh登錄時需要輸入密碼,再次訪問時即可免密碼登錄

[root@node1-130 .ssh]# ssh node2-131 [root@node1-130 .ssh]# ssh node3-132

參考:

Centos7下實現免密登錄_李東要努力的博客-CSDN博客

Centos 7.7 免密登錄 - 走看看

5)集群操作

執行以下步驟,編寫 zk.sh 腳本:

? ? ? ? 1. 創建 zk.sh 文件:

cd /root/bin vim zk.sh

? ? ? ? 2. 粘貼以下內容:

#!/bin/bashcase $1 in "start"){for i in node1-130 node2-131 node3-132doecho ------------- zookeeper $i 啟動 ------------ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"done } ;; "stop"){for i in node1-130 node2-131 node3-132doecho ------------- zookeeper $i 停止 ------------ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"done } ;; "status"){for i in node1-130 node2-131 node3-132doecho ------------- zookeeper $i 狀態 ------------ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"done } ;; esac

? ? ? ? 3.?給 zk.sh 腳本添加權限

[root@node1-130 bin]# chmod 777 zk.sh

啟動 zookeeper 集群:

[root@node1-130 module]# zk.sh start

查看 zookeeper 集群狀態:

[root@node1-130 module]# zk.sh status

停止 zookeeper集群:

[root@node1-130 module]# zk.sh stop

報錯:Error: JAVA_HOME is not set and java could not be found in PATH

參考:Error: JAVA_HOME is not set and java could not be found in PATH._Knight_AL的博客-CSDN博客

本教程操作: 通過 vim /etc/profile 查看 jdk 的安裝路徑:JAVA_HOME=/usr/local/java/jdk1.8.0_131 ? cd /opt/module/zookeeper-3.5.7/bin [root@node1-130 bin]# vim zkEnv.sh # 在上圖位置插入以下內容: JAVA_HOME=/usr/local/java/jdk1.8.0_131 ? # 分發到其它節點 [root@node1-130 bin]# xsync zkEnv.sh

集群啟動出現問題的參考:【已解決】zookeeper顯示Error contacting service. It is probably not running等問題_暴走的Mine的博客-CSDN博客

4、kafka 集群安裝部署

1)解壓安裝包

# cd /software [root@node1-130 software]# tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/ [root@node2-131 software]# tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/ [root@node3-132 software]# tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/

2)修改解壓后的文件名稱

# cd /opt/module [root@node1-130 module]# mv kafka_2.12-3.0.0/ kafka [root@node2-131 module]# mv kafka_2.12-3.0.0/ kafka [root@node3-132 module]# mv kafka_2.12-3.0.0/ kafka

3)進入到 /opt/module/kafka 目錄,修改配置文件

# cd /opt/module/kafka/config [root@node1-130 config]# vim server.properties

修改以下內容:

#broker 的全局唯一編號,不能重復,只能是數字。 broker.id=0 ? #kafka 運行日志(數據)存放的路徑 log.dirs=/opt/module/kafka/datas ? #配置連接 Zookeeper 集群地址(在 zk 根目錄下創建/kafka,方便管理 zk 文件) zookeeper.connect=node1-130:2181,node2-131:2181,node3-132:2181/kafka

4)分發安裝包

[root@node1-130 module]# xsync kafka/

5)分別在 node2-131 和 node2-132 上修改配置文件 /opt/module/kafka/config/server.properties 中的 broker.id=1、broker.id=2

注:broker.id 不得重復,整個集群中唯一

[root@node2-131 module]# vim kafka/config/server.properties 修改: # The id of the broker. This must be set to a unique integer for each broker. broker.id=1 ? [root@node3-132 module]# vim kafka/config/server.properties 修改: # The id of the broker. This must be set to a unique integer for each broker. broker.id=2

6)配置環境變量

????????? ① 在 /etc/profile.d/my_env.sh 文件中增加 kafka 環境變量配置

[root@node1-130 ~]# vim /etc/profile.d/my_env.sh

? ????????添加如下內容:

#KAFKA_HOME export KAFKA_HOME=/opt/module/kafka export PATH=$PATH:$KAFKA_HOME/bin

? ????????② 刷新一下環境變量

[root@node1-130 ~]# source /etc/profile

????????? ③ 分發環境變量文件到其他節點,并 source

[root@node1-130 ~]# xsync /etc/profile.d/my_env.sh ? # 在另外兩個節點生效環境變量: [root@node2-131 ~]# source /etc/profile [root@node3-132 ~]# source /etc/profile

7)啟動集群

????????? ① 啟動 zookeeper 集群

[root@node1-130 module]# zk.sh start

? ????????② 啟動 kafka 集群

[root@node1-130 module]# kf.sh start

執行以下步驟,編寫 kf.sh 腳本:

  • 創建 kf.sh 文件:

  • cd /root/bin vim kf.sh

    ? ? ? ? 2. 粘貼以下內容:

    #!/bin/bash ? case $1 in "start"){for i in node1-130 node2-131 node3-132doecho ------------- zookeeper $i 啟動 ------------ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"done } ;; "stop"){for i in node1-130 node2-131 node3-132doecho ------------- zookeeper $i 停止 ------------ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh"done } ;; esac

    ? ? ? ? 3. 給 kf.sh 腳本添加權限

    [root@node1-130 bin]# chmod 777 kf.sh

    kafka 集群啟動遇到了問題:可以去 cat kafka/logs 看看報什么錯

    我遇到的問題是:執行 kf.sh start ,node1-130 節點 kafka 節點能啟動,但是另外兩個節點起不來,去另外兩個節點看日志 cat /opt/module/kafka/logs/kafkaServer.out 顯示:

    nohup: 無法運行命令"java": 沒有那個文件或目錄

    解決方法:上面的 kf.sh 腳本中,啟動和停止語句加上:source /etc/profile && 即:

    ssh $i "source /etc/profile && /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"

    ssh $i "source /etc/profile && /opt/module/kafka/bin/kafka-server-stop.sh"

    此問題參考:nohup: 無法運行命令 ‘/bin/java‘: 沒有那個文件或目錄 - 曉楓的春天 - 博客園

    ③ 驗證 kafka 集群是否安裝啟動成功

    # 創建一個 topic 分 3 個區 [root@node1-130 kafka]# /opt/module/kafka/bin/kafka-topics.sh --bootstrap-server node1-130:9092 --create --partitions 3 --replication-factor 3 --topic first ? # 然后 3 個節點都看看有沒有 first 這個 topic,有則恭喜你,排除萬難集群安裝部署成功了 [root@node1-130 kafka]# /opt/module/kafka/bin/kafka-topics.sh --bootstrap-server node1-130:9092 --list [root@node1-131 kafka]# /opt/module/kafka/bin/kafka-topics.sh --bootstrap-server node2-131:9092 --list [root@node1-132 kafka]# /opt/module/kafka/bin/kafka-topics.sh --bootstrap-server node2-132:9092 --list

    ④ 停止 kafka 集群

    [root@node1-130 module]# kf.sh stop

    ⑤ 停止 Zookeeper 集群

    [root@node1-130 module]# zk.sh stop

    注意:停止 Kafka 集群時,一定要等 Kafka 所有節點進程全部停止后再停止 Zookeeper 集群。因為 Zookeeper 集群當中記錄著 Kafka 集群相關信息,Zookeeper 集群一旦先停止,Kafka 集群就沒有辦法再獲取停止進程的信息,只能手動殺死 Kafka 進程了。

    5、Centos7 單節點部署 kafka

    ① 配置 JDK

    # 下載 jkd8 wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz ? # 創建安裝目錄 mkdir /usr/local/java ? # 解壓至安裝目錄 tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/local/java/ ? # 設置環境變量 vim /etc/profile # 在末尾添加 export JAVA_HOME=/usr/local/java/jdk1.8.0_131 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH ? # 使環境變量生效 source /etc/profile ? # 檢查 java -version

    參考:Centos7配置JAVA環境_一卷良辰的博客-CSDN博客_centos7配置java

    ② 安裝配置 kafka

    # 解壓安裝包 cd /software [root@centos70 software]# tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/ ? # 修改解壓后的名稱 cd /opt/module [root@centos7 module]# mv kafka_2.12-3.0.0/ kafka ? # 修改 kafka 配置文件 /opt/module/kafka/config/server.properties cd /opt/module/kafka/config vim server.properties # 配置: # 1.刪除此行注釋,并加上本機 ip 地址 listeners=PLAINTEXT://192.168.220.129:9092 # 2.zookeeper 添加本機 ip 地址 zookeeper.connect=192.168.220.129:2181 ? # 啟動 zookeeper (kafka 自身包含了 zookeeper ,所以在 bin 目錄下有 zookeeper 的啟動腳本) cd /opt/module/kafka [root@centos7 kafka]# bin/zookeeper-server-start.sh -daemon config/zookeeper.properties ? # 啟動 kafka cd /opt/module/kafka [root@centos7 kafka]# bin/kafka-server-start.sh -daemon config/server.properties ? # 可以使用 jps 查看 zookeeper 和 kafka 是否正常運行 [root@centos7 kafka]# jps 1924 QuorumPeerMain ? ? ? ? ? ? ? ? ? ? # 說明 zookeeper 正常運行 2265 Kafka ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 說明 kafka 正常運行 2377 Jps ? # 添加一個 topic [root@centos7 kafka]# /opt/module/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.220.129:9092 --create --partitions 1 --replication-factor 3 --topic test ? # 查看 topic 列表 [root@centos7 kafka]# /opt/module/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.220.129:9092 --list

    參考:Centos7 部署kafka_峰frank的博客-CSDN博客_centos7部署kafka

    ?

    總結

    以上是生活随笔為你收集整理的zookeeper 集群 + kafka 集群 : 安装部署(附单机部署)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。