Apache?Pulsar集群搭建部署詳細(xì)過程
一、集群組成說明
1、搭建Pulsar集群至少需要3個(gè)組件:ZooKeeper集群、BookKeeper集群和Broker集群(Broker是Pulsar的自身實(shí)例)。這三個(gè)集群組件如下:
ZooKeeper集群(3個(gè)ZooKeeper節(jié)點(diǎn)組成)
Bookie集群(也稱為BookKeeper集群,3個(gè)BookKeeper節(jié)點(diǎn)組成)
Broker集群(3個(gè)Pulsar節(jié)點(diǎn)組成)
2、Pulsar的安裝包已經(jīng)包含了搭建集群所需的各個(gè)組件庫(kù),無需單獨(dú)下載ZooKeeper安裝包和BookKeeper安裝包。
二、安裝前置條件
1、準(zhǔn)備3臺(tái)測(cè)試Linux服務(wù)器(Centos 7)。
2、在3臺(tái)Linux裸機(jī)服務(wù)器上安裝JDK(要求版本不低于JDK8)。
3、下載Pulsar安裝包,https://pulsar.apache.org/download/,上傳至3臺(tái)服務(wù)器。
三、ZooKeeper集群搭建
Pulsar安裝包內(nèi)包含了ZooKeeper,也可以自建ZooKeeper,自建ZooKeeper的方式略。安裝Pulsar安裝包內(nèi)的ZooKeeper方法如下:
1、解壓Pulsar安裝包
切換到根目錄:$ cd /? 創(chuàng)建data目錄:$ mkdir data 解壓:$ tar -zxvf apache-pulsar-2.9.1-bin.tar.gz
2、修改zookeeper.conf配置文件(三個(gè)節(jié)點(diǎn)上都需執(zhí)行此操作),新增或修改如下關(guān)鍵配置項(xiàng):
# dataDir是修改,其他都是新增 dataDir=/data/zookeeper/data dataLogDir=/data/zookeeper/log server.1=IP1:2888:3888 server.2=IP2:2888:3888 server.3=IP3:2888:3888
參數(shù)說明:
dataDir:當(dāng)前zookeeper節(jié)點(diǎn)的數(shù)據(jù)存放目錄
dataLogDir:當(dāng)前zookeeper節(jié)點(diǎn)的日志存放目錄
server.1~3:為zookeeper集群的各個(gè)節(jié)點(diǎn)指定編號(hào)
3、在每個(gè)zookeeper節(jié)點(diǎn)的機(jī)器上,新建如下文件目錄:
data:ZooKeeper使用的數(shù)據(jù)存儲(chǔ)目錄 mkdir -pv /data/zookeeper/data log:ZooKeeper使用的日志存儲(chǔ)目錄 mkdir -pv /data/zookeeper/log
4、為每個(gè)zookeeper節(jié)點(diǎn)新建myid,分別在指定的sever上寫入配置文件中指定的編號(hào):
在server.1服務(wù)器上執(zhí)行bash命令: echo 1 > /data/zookeeper/data/myid 在server.2服務(wù)器上執(zhí)行bash命令: echo 2 > /data/zookeeper/data/myid 在server.3服務(wù)器上執(zhí)行bash命令: echo 3 > /data/zookeeper/data/myid
5、執(zhí)行后臺(tái)運(yùn)行命令,這個(gè)命令是啟動(dòng)zookeeper:
bin/pulsar-daemon start zookeeper
6、執(zhí)行zookeeper客戶端連接命令:
bin/pulsar zookeeper-shell 客戶端正常連接,就算zookeeper啟動(dòng)好了
7、在另外兩臺(tái)服務(wù)器上也執(zhí)行bin/pulsar-daemon start zookeeper之后,在其中一個(gè)zookeeper節(jié)點(diǎn)的機(jī)器上,初始化集群元數(shù)據(jù)(總共只需執(zhí)行一次):
例如在IP1上: bin/pulsar initialize-cluster-metadata \ --cluster pulsar-cluster-zk \ --zookeeper IP1:2181 \ --configuration-store IP1:2181 \ --web-service-url http://IP1:8080,IP2:8080,IP3:8080 \ --web-service-url-tls https://IP1:8443,IP2:8443,IP3:8443 \ --broker-service-url pulsar://IP1:6650,IP2:6650,IP3:6650 \ --broker-service-url-tls pulsar+ssl://IP1:6651,IP2:6651,IP3:6651
或使用如下指令: bin/pulsar initialize-cluster-metadata \ --cluster pulsar-cluster-zk \ --zookeeper HOSTNAMEIP:2181 \ --configuration-store HOSTNAMEIP:2181 \ --web-service-url http://HOSTNAMEIP:8080 \ --web-service-url-tls https://HOSTNAMEIP:8443 \ --broker-service-url pulsar://HOSTNAMEIP:6650 \ --broker-service-url-tls pulsar+ssl://HOSTNAMEIP:6651
集群元數(shù)據(jù)說明: cluster 集群名稱 zookeeper ZooKeeper集群連接參數(shù),僅需要包含ZooKeeper集群中的一個(gè)節(jié)點(diǎn)即可 configuration-store Pulsar實(shí)例的配置存儲(chǔ)集群(ZooKeeper),多集群部署時(shí)才會(huì)發(fā)揮作用,需要另外部署ZooKeeper集群,但是單集群部署時(shí)可以和–zookeeper參數(shù)設(shè)置一樣,只需要包含ZooKeeper集群中的一個(gè)節(jié)點(diǎn)即可 web-service-url 集群Web服務(wù)的URL+端口,URL是一個(gè)標(biāo)準(zhǔn)的DNS名稱,默認(rèn)端口8080,不建議修改。 web-service-url-tls 集群Web提供TLS服務(wù)的URL+端口,端口默認(rèn)8443,不建議修改。 broker-service-url 集群brokers服務(wù)URL,URL中DNS的名稱和Web服務(wù)保持一致,URL使用pulsar替代http/http,端口默認(rèn)6650,不建議修改。 broker-service-url-tls 集群brokers提供TLS服務(wù)的URL,默認(rèn)端口6551,不建議修改。
8、驗(yàn)證zookeeper初始化集群是否初始化成功
bin/pulsar zookeeper-shell 進(jìn)入zk控制臺(tái),通過ls /查看所有zk節(jié)點(diǎn)。能看到bookies,ledgers等節(jié)點(diǎn),則說明初始化成功了。 如果需要關(guān)閉zookeeper,可使用命令 bin/pulsar-daemon stop zookeeper
注意:
啟動(dòng)3臺(tái)服務(wù)器的zookeeper節(jié)點(diǎn)之后,發(fā)現(xiàn)zookeeper節(jié)點(diǎn)之后無法相互注冊(cè),需要開放特定的端口或直接關(guān)閉防火墻。下面是firewall防火墻相關(guān)操作指令:
firewall防火墻 1、查看firewall服務(wù)狀態(tài) systemctl status firewalld 出現(xiàn)Active: active (running)切高亮顯示則表示是啟動(dòng)狀態(tài)。 出現(xiàn) Active: inactive (dead)灰色表示停止,看單詞也行。 2、查看firewall的狀態(tài) firewall-cmd --state 3、開啟、重啟、關(guān)閉、firewalld.service服務(wù) # 開啟 service firewalld start # 重啟 service firewalld restart # 關(guān)閉 service firewalld stop 4、查看防火墻規(guī)則 firewall-cmd --list-all 5、查詢、開放、關(guān)閉端口 # 查詢端口是否開放 firewall-cmd --query-port=8080/tcp # 開放80端口 firewall-cmd --permanent --add-port=80/tcp # 移除端口 firewall-cmd --permanent --remove-port=8080/tcp #重啟防火墻(修改配置后要重啟防火墻) firewall-cmd --reload
四、BookKeeper集群搭建
1、修改bookkeeper.conf配置文件(三個(gè)節(jié)點(diǎn)上都需執(zhí)行此操作),修改如下關(guān)鍵配置項(xiàng):
advertisedAddress=IP1 zkServers=IP1:2181,IP2:2181,IP3:2181 journalDirectory=/data/bookkeeper/journal ledgerDirectories=/data/bookkeeper/ledgers prometheusStatsHttpPort=8100
注意:
1、prometheusStatsHttpPort默認(rèn)是8000,但實(shí)際上在bookkeeper.conf中,httpServerPort默認(rèn)也是8000,會(huì)導(dǎo)致端口被占用。
2、上面的advertisedAddress需要設(shè)置為對(duì)應(yīng)機(jī)器的ip,而不是全設(shè)置為同一個(gè)
參數(shù)說明:
advertisedAddress:指定當(dāng)前節(jié)點(diǎn)的主機(jī)名或IP地址。
zkServers:指定zookeeper集群,用來將bookkeeper節(jié)點(diǎn)的元數(shù)據(jù)存放在zookeeper集群。
journalDirectories:當(dāng)前bookkeeper節(jié)點(diǎn)的journal數(shù)據(jù)存放目錄。
如果需要提高磁盤寫入性能,可以指定多個(gè)目錄用來存放journal數(shù)據(jù),關(guān)鍵是每一個(gè)目錄必須在不同的磁盤,不然反而會(huì)影響寫入性能
ledgerDirectories:當(dāng)前bookkeeper節(jié)點(diǎn)的ledger存放目錄
2、在每個(gè)部署bookkeeper的機(jī)器上,創(chuàng)建bookie所需要目錄
mkdir -pv /data/bookkeeper/ mkdir -pv /data/bookkeeper/journal mkdir -pv /data/bookkeeper/ledgers
3、執(zhí)行初始化元數(shù)據(jù)命令,若出現(xiàn)提示,輸入Y繼續(xù)(該步驟只需在一個(gè)bookie節(jié)點(diǎn)執(zhí)行一次,總共只需執(zhí)行一次)
bin/bookkeeper shell metaformat
4、在三臺(tái)機(jī)器上,分別輸入以下命令來以后臺(tái)進(jìn)程啟動(dòng)bookie
bin/pulsar-daemon start bookie
5、驗(yàn)證是否啟動(dòng)成功
bin/bookkeeper shell bookiesanity 出現(xiàn)Bookie sanity test succeeded則代表啟動(dòng)成功。 如果需要關(guān)閉bookkeeper,可使用命令 bin/pulsar-daemon stop bookie
五、Broker集群搭建
1、在每個(gè)部署B(yǎng)roker的機(jī)器上,修改broker.conf配置文件,修改如下關(guān)鍵配置項(xiàng):
zookeeperServers=IP1:2181,IP2:2181,IP3:2181 configurationStoreServers=IP1:2181,IP2:2181,IP3:2181 advertisedAddress=IP1 # clusterName與前面zookeeper初始化的cluster一致 clusterName=pulsar-cluster-zk
注意:
上面的advertisedAddress需要設(shè)置為對(duì)應(yīng)機(jī)器的ip,而不是全設(shè)置為同一個(gè)
參數(shù)說明:
zookeeperServers:指定zookeeper集群,用來將broker節(jié)點(diǎn)的元數(shù)據(jù)存放在zookeeper集群
configurationStoreServers:多集群部署時(shí)管理多個(gè)pulsar集群元數(shù)據(jù)的zookeeper集群地址,單集群部署時(shí)可以和zookeeperServers設(shè)置一樣
advertisedAddress:指定當(dāng)前節(jié)點(diǎn)的主機(jī)名或IP地址
clusterName:指定pulsar集群名稱
2、在每個(gè)部署B(yǎng)roker的機(jī)器上,以后臺(tái)進(jìn)程啟動(dòng)broker
bin/pulsar-daemon start broker 如果需要關(guān)閉broker,可使用命令 bin/pulsar-daemon stop broker
3、查看集群 brokers 節(jié)點(diǎn)情況
bin/pulsar-admin brokers list pulsar-cluster
我們的示例部署正常的話,這一步會(huì)顯示如下結(jié)果:
代表此時(shí)集群內(nèi)有存活的節(jié)點(diǎn): IP1、IP2、IP3,端口號(hào)都是8080。到這一步,Pulsar的部署就完成了。
六、docker安裝pulsar-dashboard
Pulsar自帶 Dashboard,可對(duì)broker、bookie、ZooKeeper 集群和topic等進(jìn)行監(jiān)控和統(tǒng)計(jì)。
1、安裝docker
yum install -y docker systemctl start docker systemctl enable docker
2、安裝pulsar-dashboard
docker run --name pulsar-dashboard -dit -p 80:80 -e SERVICE_URL=http://PULSARSEVERIP:8080 apachepulsar/pulsar-dashboard
通過瀏覽器訪問docker宿主機(jī)IP
到此這篇關(guān)于Apache Pulsar集群搭建的文章就介紹到這了,更多相關(guān)Apache Pulsar集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VIM實(shí)現(xiàn)文件快速跳轉(zhuǎn)插件詳解
這篇文章主要給大家介紹了關(guān)于VIM實(shí)現(xiàn)文件快速跳轉(zhuǎn)插件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vim具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04Linux常用查看硬件設(shè)備信息命令大全(值得收藏)
本文是小編收藏整理的關(guān)于linux查看硬件設(shè)備信息的命名,非常不錯(cuò),值得收藏,需要的朋友參考下吧2016-12-12VMware虛擬機(jī)中Ubuntu18.04無法連接網(wǎng)絡(luò)的解決辦法
這篇文章主要為大家詳細(xì)介紹了VMware虛擬機(jī)中Ubuntu18.04無法連接網(wǎng)絡(luò)的解決辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03詳細(xì)介紹linux動(dòng)態(tài)網(wǎng)絡(luò)和靜態(tài)網(wǎng)絡(luò)和克隆后的網(wǎng)絡(luò)配置
這篇文章主要介紹了詳細(xì)介紹linux動(dòng)態(tài)網(wǎng)絡(luò)和靜態(tài)網(wǎng)絡(luò)和克隆后的網(wǎng)絡(luò)配置,具有一定的學(xué)習(xí)價(jià)值,有需要的可以了解一下。2016-11-11Linux執(zhí)行可執(zhí)行文件提示No such file or directory的解決方法
這篇文章主要介紹了Linux執(zhí)行可執(zhí)行文件提示No such file or directory的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05.htaccess rewrite 規(guī)則詳細(xì)說明
用Apache虛擬主機(jī)的朋友很多,apache提供的.htaccess模塊可以為每個(gè)虛擬主機(jī)設(shè)定rewrite規(guī)則,這對(duì)網(wǎng)站SEO優(yōu)化相當(dāng)有用,同時(shí)也改善了用戶體驗(yàn)2016-04-04詳解Linux下crontab的使用與注意事項(xiàng)
這篇文章主要介紹了詳解Linux下crontab的使用與注意事項(xiàng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01解決Vmware虛擬機(jī)安裝centos8報(bào)錯(cuò)“Section?%Packages?Does?Not?End?W
這篇文章介紹了解決Vmware虛擬機(jī)安裝centos8報(bào)錯(cuò)“Section?%Packages?Does?Not?End?With?%End.?Pane?Is?Dead”的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05