目錄
- 一、集群組成說明
- 二、安裝前置條件
- 三、ZooKeeper集群搭建
- 四、BookKeeper集群搭建
- 五、Broker集群搭建
- 六、docker安裝pulsar-dashboard
一、集群組成說明
1、搭建Pulsar集群至少需要3個組件:ZooKeeper集群、BookKeeper集群和Broker集群(Broker是Pulsar的自身實例)。這三個集群組件如下:
ZooKeeper集群(3個ZooKeeper節點組成)
Bookie集群(也稱為BookKeeper集群,3個BookKeeper節點組成)
Broker集群(3個Pulsar節點組成)
2、Pulsar的安裝包已經包含了搭建集群所需的各個組件庫,無需單獨下載ZooKeeper安裝包和BookKeeper安裝包。
二、安裝前置條件
1、準備3臺測試Linux服務器(Centos 7)。
2、在3臺Linux裸機服務器上安裝JDK(要求版本不低于JDK8)。
3、下載Pulsar安裝包,https://pulsar.apache.org/download/,上傳至3臺服務器。
三、ZooKeeper集群搭建
Pulsar安裝包內包含了ZooKeeper,也可以自建ZooKeeper,自建ZooKeeper的方式略。安裝Pulsar安裝包內的ZooKeeper方法如下:
1、解壓Pulsar安裝包
切換到根目錄:$ cd /? 創建data目錄:$ mkdir data 解壓:$ tar -zxvf apache-pulsar-2.9.1-bin.tar.gz
2、修改zookeeper.conf配置文件(三個節點上都需執行此操作),新增或修改如下關鍵配置項:
# dataDir是修改,其他都是新增 dataDir=/data/zookeeper/data dataLogDir=/data/zookeeper/log server.1=IP1:2888:3888 server.2=IP2:2888:3888 server.3=IP3:2888:3888
參數說明:
dataDir:當前zookeeper節點的數據存放目錄
dataLogDir:當前zookeeper節點的日志存放目錄
server.1~3:為zookeeper集群的各個節點指定編號
3、在每個zookeeper節點的機器上,新建如下文件目錄:
data:ZooKeeper使用的數據存儲目錄 mkdir -pv /data/zookeeper/data log:ZooKeeper使用的日志存儲目錄 mkdir -pv /data/zookeeper/log
4、為每個zookeeper節點新建myid,分別在指定的sever上寫入配置文件中指定的編號:
在server.1服務器上執行bash命令: echo 1 > /data/zookeeper/data/myid 在server.2服務器上執行bash命令: echo 2 > /data/zookeeper/data/myid 在server.3服務器上執行bash命令: echo 3 > /data/zookeeper/data/myid
5、執行后臺運行命令,這個命令是啟動zookeeper:
bin/pulsar-daemon start zookeeper
6、執行zookeeper客戶端連接命令:
bin/pulsar zookeeper-shell 客戶端正常連接,就算zookeeper啟動好了
7、在另外兩臺服務器上也執行bin/pulsar-daemon start zookeeper之后,在其中一個zookeeper節點的機器上,初始化集群元數據(總共只需執行一次):
例如在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
集群元數據說明: cluster 集群名稱 zookeeper ZooKeeper集群連接參數,僅需要包含ZooKeeper集群中的一個節點即可 configuration-store Pulsar實例的配置存儲集群(ZooKeeper),多集群部署時才會發揮作用,需要另外部署ZooKeeper集群,但是單集群部署時可以和–zookeeper參數設置一樣,只需要包含ZooKeeper集群中的一個節點即可 web-service-url 集群Web服務的URL+端口,URL是一個標準的DNS名稱,默認端口8080,不建議修改。 web-service-url-tls 集群Web提供TLS服務的URL+端口,端口默認8443,不建議修改。 broker-service-url 集群brokers服務URL,URL中DNS的名稱和Web服務保持一致,URL使用pulsar替代http/http,端口默認6650,不建議修改。 broker-service-url-tls 集群brokers提供TLS服務的URL,默認端口6551,不建議修改。
8、驗證zookeeper初始化集群是否初始化成功
bin/pulsar zookeeper-shell 進入zk控制臺,通過ls /查看所有zk節點。能看到bookies,ledgers等節點,則說明初始化成功了。 如果需要關閉zookeeper,可使用命令 bin/pulsar-daemon stop zookeeper
注意:
啟動3臺服務器的zookeeper節點之后,發現zookeeper節點之后無法相互注冊,需要開放特定的端口或直接關閉防火墻。下面是firewall防火墻相關操作指令:
firewall防火墻 1、查看firewall服務狀態 systemctl status firewalld 出現Active: active (running)切高亮顯示則表示是啟動狀態。 出現 Active: inactive (dead)灰色表示停止,看單詞也行。 2、查看firewall的狀態 firewall-cmd --state 3、開啟、重啟、關閉、firewalld.service服務 # 開啟 service firewalld start # 重啟 service firewalld restart # 關閉 service firewalld stop 4、查看防火墻規則 firewall-cmd --list-all 5、查詢、開放、關閉端口 # 查詢端口是否開放 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配置文件(三個節點上都需執行此操作),修改如下關鍵配置項:
advertisedAddress=IP1 zkServers=IP1:2181,IP2:2181,IP3:2181 journalDirectory=/data/bookkeeper/journal ledgerDirectories=/data/bookkeeper/ledgers prometheusStatsHttpPort=8100
注意:
1、prometheusStatsHttpPort默認是8000,但實際上在bookkeeper.conf中,httpServerPort默認也是8000,會導致端口被占用。
2、上面的advertisedAddress需要設置為對應機器的ip,而不是全設置為同一個
參數說明:
advertisedAddress:指定當前節點的主機名或IP地址。
zkServers:指定zookeeper集群,用來將bookkeeper節點的元數據存放在zookeeper集群。
journalDirectories:當前bookkeeper節點的journal數據存放目錄。
如果需要提高磁盤寫入性能,可以指定多個目錄用來存放journal數據,關鍵是每一個目錄必須在不同的磁盤,不然反而會影響寫入性能
ledgerDirectories:當前bookkeeper節點的ledger存放目錄
2、在每個部署bookkeeper的機器上,創建bookie所需要目錄
mkdir -pv /data/bookkeeper/ mkdir -pv /data/bookkeeper/journal mkdir -pv /data/bookkeeper/ledgers
3、執行初始化元數據命令,若出現提示,輸入Y繼續(該步驟只需在一個bookie節點執行一次,總共只需執行一次)
bin/bookkeeper shell metaformat
4、在三臺機器上,分別輸入以下命令來以后臺進程啟動bookie
bin/pulsar-daemon start bookie
5、驗證是否啟動成功
bin/bookkeeper shell bookiesanity 出現Bookie sanity test succeeded則代表啟動成功。 如果需要關閉bookkeeper,可使用命令 bin/pulsar-daemon stop bookie
五、Broker集群搭建
1、在每個部署Broker的機器上,修改broker.conf配置文件,修改如下關鍵配置項:
zookeeperServers=IP1:2181,IP2:2181,IP3:2181 configurationStoreServers=IP1:2181,IP2:2181,IP3:2181 advertisedAddress=IP1 # clusterName與前面zookeeper初始化的cluster一致 clusterName=pulsar-cluster-zk
注意:
上面的advertisedAddress需要設置為對應機器的ip,而不是全設置為同一個
參數說明:
zookeeperServers:指定zookeeper集群,用來將broker節點的元數據存放在zookeeper集群
configurationStoreServers:多集群部署時管理多個pulsar集群元數據的zookeeper集群地址,單集群部署時可以和zookeeperServers設置一樣
advertisedAddress:指定當前節點的主機名或IP地址
clusterName:指定pulsar集群名稱
2、在每個部署Broker的機器上,以后臺進程啟動broker
bin/pulsar-daemon start broker 如果需要關閉broker,可使用命令 bin/pulsar-daemon stop broker
3、查看集群 brokers 節點情況
bin/pulsar-admin brokers list pulsar-cluster
我們的示例部署正常的話,這一步會顯示如下結果:
代表此時集群內有存活的節點: IP1、IP2、IP3,端口號都是8080。到這一步,Pulsar的部署就完成了。
六、docker安裝pulsar-dashboard
Pulsar自帶 Dashboard,可對broker、bookie、ZooKeeper 集群和topic等進行監控和統計。
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宿主機IP