资源准备
主机1:192.168.56.111
主机2:192.168.56.112
主机3:192.168.56.113
操作系统:CentOS 7.8 64bit
(注意:以下操作命令除了特别指定某台主机之外,默认都在所有主机上执行相同的命令)
下载:
wget https://archive.apache.org/dist/pulsar/pulsar-2.10.0/apache-pulsar-2.10.0-bin.tar.gz
解压
tar xvzf apache-pulsar-2.10.0-bin.tar.gz
cd apache-pulsar-2.10.0
安装java
yum install java -y
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
如无DNS,则使用本机hosts文件,添加如下主机解析对应记录(也可直接用IP地址)
192.168.56.111 zk1
192.168.56.112 zk2
192.168.56.113 zk3
部署zookeeper
编辑zookeeper配置文件
添加:
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
在主机1执行
mkdir -p data/zookeeper
echo 1 > data/zookeeper/myid
在主机2执行
mkdir -p data/zookeeper
echo 2 > data/zookeeper/myid
在主机3执行
mkdir -p data/zookeeper
echo 3 > data/zookeeper/myid
启动zookeeper
bin/pulsar-daemon start zookeeper
zookeeper数据初始化(非常重要不能出错)
在任意1台节点执行:
bin/pulsar initialize-cluster-metadata --cluster pulsar-cluster-1 --metadata-store zk:zk1:2181/ --configuration-metadata-store zk:zk1:2181/ --web-service-url http://192.168.56.111:8080,192.168.56.112:8080,192.168.56.113:8080 --web-service-url-tls https://192.168.56.111:8443,192.168.56.112:8443,192.168.56.113:8443 --broker-service-url pulsar://192.168.56.111:6650,192.168.56.112:6650,192.168.56.113:6650 --broker-service-url-tls pulsar+ssl://192.168.56.111:6651,192.168.56.112:6651,192.168.56.113:6651
部署bookkeeper
编辑bookkeeper配置文件 conf/bookkeeper.conf
添加:
zkServers=zk1:2181,zk2:2181,zk3:2181
由于bookkeeper和zookeeper部署在同一机器上,因此还需修改数据监控端口与zookeeper区分,zookeeper使用8000,bookkeeper则使用9000
prometheusStatsHttpPort=9000
httpServerPort=9000
启动bookie
bin/pulsar-daemon start bookie
测试单个bookie
bin/bookkeeper shell bookiesanity
测试bookie集群
bin/bookkeeper shell simpletest --ensemble 3 --writeQuorum 3 --ackQuorum 3 --numEntries 10
部署pulsar broker
编辑broker配置文件conf/broker.conf
metadataStoreUrl=zk1:2181,zk2:2181,zk3:2181
clusterName=pulsar-cluster-1
brokerServicePort=6650
brokerServicePortTls=6651
webServicePort=8080
webServicePortTls=8443
启动broker
bin/pulsar-daemon start broker
测试pulsar
在主机1执行消息订阅:
bin/pulsar-client consume persistent://public/default/test -n 100 -s "consumer-test" -t "Exclusive"
在主机2执行消息发布:
bin/pulsar-client produce persistent://public/default/test -n 1 -m "Hello Pulsar"
当主机1收到消息:
----- got message -----
key:[null], properties:[], content:Hello Pulsar
部署完成。