目录
1. 准备环境
3台Linux裸机服务器(CentOS7为例)
ip分别为:
ip地址 | 192.168.1.96 |
ip地址 | 192.168.1.97 |
ip地址 | 192.168.1.98 |
2. 部署JDK环境(要求版本不低于JDK8)
安装JDK参考:
3. 下载Pulsar最新安装包
下载地址:
4. Zookeeper集群部署
4.1 搭建pulsar集群至少需要三个组件
pulsar安装包包含以下组件,无需单独下载组件安装包
- zookeeper集群
- bookkeeper集群
- broker集群
4.2 创建文件夹
在工作目录下创建三个文件夹
mkdir -p /home/pulsar/zookeeper
mkdir -p /home/pulsar/bookies
mkdir -p /home/pulsar/broker
4.3 pulsar安装包
把下载的pulsar安装包上传至linux服务器,并解压安装,这里我下载的2.9.1版本
tar xf apache-pulsar-2.9.1-bin.tar.gz
把解压后的文件分别复制至所创建的3个文件夹
cp -ir /opt/apache-pulsar-2.9.1/* /home/pulsar/zookeeper/
cp -ir /opt/apache-pulsar-2.9.1/* /home/pulsar/broker/
cp -ir /opt/apache-pulsar-2.9.1/* /home/pulsar/bookie/
4.4 部署zookeeper集群
4.4.1 三台服务器创建目录
mkdir -p /home/pulsar/data/zookeeper
执行:
echo 1 > /home/pulsar/data/zookeeper/myid
echo 2 > /home/pulsar/data/zookeeper/myid
echo 3 > /home/pulsar/data/zookeeper/myid
4.4.2 修改zookeeper配置文件
vim /home/pulsar/zookeeper/conf/zookeeper.conf
dataDir= /home/pulsar/data/zookeeper/
server.1=192.168.1.96:2888:3888
server.2=192.168.1.97:2888:3888
server.3=192.168.1.98:2888:3888
4.4.3 启动zookeeper
分别启动三台Linux服务器zookeeper
cd /home/pulsar/zookeeper/
#执行启动命令
/bin/pulsar-daemon start zookeeper
#停止命令
/bin/pulsar-daemon stop zookeeper
#查看进程
ps aux|grep zookeeper
#查看端口情况
ss -ntlp
netstat -tpnl|grep 2181
4.4.4 初始化zookeeper
#初始化
pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper 192.168.1.96:2181 \
--configuration-store 192.168.1.96:2181 \
--web-service-url http://192.168.1.96:8080,http://192.168.1.97:8080,http://192.168.1.98:8080 \
--web-service-url-tls https://192.168.1.96:8443,192.168.1.97:8443,192.168.1.98:8443 \
--broker-service-url pulsar://192.168.1.96:6650,192.168.1.97:6650,192.168.1.98:6650 \
--broker-service-url-tls pulsar+ssl://192.168.1.96:6651,192.168.1.97:6651,192.168.1.98:6651
4.4.5 执行zookeeper客户端连接命令
#执行zookeeper客户端命令,如果是默认端口情况下,执行如下命令连接
bin/pulsar zookeeper-shell
#指定ip和端口的情况下,执行如下命令连接
/bin/pulsar zookeeper-shell -server 192.168.1.96:2181
/bin/pulsar zookeeper-shell -server 192.168.1.97:2181
/bin/pulsar zookeeper-shell -server 192.168.1.98:2181
#查看所有zookeeper节点数据,命令如下
ls /
#显示,表示成功
[admin, bookies, ledgers, managed-ledgers, namespace, pulsar, stream, zookeeper]
4.4.6 重新初始化或者删除数据时
建议:先停掉zookeeper,然后直接删除单台zookeeper数据目录,然后再重新启动
重新初始化,删除zookeeper的数据,日志也删除
5. 部署配置bookkeeper集群
5.1 分别在各节点执行
创建bookies所需目录
mkdir -p /home/pulsar/bookies/tmp/journal
mkdir -p /home/pulsar/bookies/tmp/ledgers
5.2 修改配置文件
vim /home/pulsar/bookies/conf/bookkeeper.conf
journalDirectory=/home/admin/bookies/tmp/journal
ledgerDirectories=/home/admin/bookies/tmp/ledgers
#advertisedAddress修改为服务器对应的ip
advertisedAddress=192.168.1.96
#修改端口号8000为8100,zookeeper占用了8000端口
prometheusStatsHttpPort=8100
#修改zookeeper地址和端口信息
zkServers=192.168.1.96:2181,192.168.1.97:2181,192.168.1.98:2181
5.3 先初始化,再启动
#查看8000端口是否占用, 如果占用,修改为8100
netstat -tpnl |grep 8000
#httpServerPort默认也是8000,建议修改,我这里修改为:8100
prometheusStatsHttpPort=8100
# 初始化元数据,并启动 bookie 集群
# 执行初始化元数据命令;若出现提示,输入 Y,继续(只需在任意一个bookie节点执行一次)
bin/bookkeeper shell metaformat
#bookie关闭命令
bin/pulsar-daemon stop bookie
#启动bookie命令,以后台进程启动bookie
bin/pulsar-daemon start bookie
#日志查看
tail f /home/pulsar/bookies/logs/pulsar-bookie-localhost.localdomain.log
#验证是否启动成功
bin/bookkeeper shell bookiesanity
#出现如下显示,表示启动成功Bookie
Bookie sanity test succeeded
6. 部署配置Broker集群
6.1 修改配置文件
#修改配置文件
vim /home/pulsar/broker/conf/broker.conf
zookeeperServers=192.168.1.96:2181,192.168.1.97:2181,192.168.1.98:2181
configurationStoreServers=192.168.1.96:2181,192.168.1.97:2181,192.168.1.98:2181
#修改服务器对应的ip
advertisedAddress=192.168.1.96
#修改zookeeper集群名称,初始化时候所用的集群名称(--cluster pulsar-cluster)
clusterName=pulsar-cluster
#查看端口是否被占用,如果占用修改为其他端口
webServicePort=8080
6.2 启动各个节点
#启动命令
bin/pulsar-daemon start broker
#停止命令
bin/pulsar-daemon stop broker
# 查看集群 brokers 节点情况
bin/pulsar-admin brokers list pulsar-cluster
bin/pulsar-admin --admin-url http://192.168.1.97:8080 brokers list pulsar-cluster
#显示如下:表示集群搭建成功
192.168.1.96:8080
192.168.1.97:8080
192.168.1.98:8080
7. 测试
#订阅
bin/pulsar-client consume \
persistent://public/default/test \
-n 100 \
-s "consumer-test" \
-t "Exclusive"
#发送
bin/pulsar-client produce \
persistent://public/default/test \
-n 1 \
-m "Hello Pulsar"
----- 收到消息 -----
Hello Pulsar
8. docker部署pulsar-manager搭建
docker run -d -p 9527:9527 -p 7750:7750 \
-e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/application.properties \
--name pulsar-manager \
-e pulsar.peek.message=true \
apachepulsar/pulsar-manager:v0.2.0
CSRF_TOKEN=$(curl http://localhost:17750/pulsar-manager/csrf-token)
curl \
-H 'X-XSRF-TOKEN: $CSRF_TOKEN' \
-H 'Cookie: XSRF-TOKEN=$CSRF_TOKEN;' \
-H "Content-Type: application/json" \
-X PUT http://localhost:7750/pulsar-manager/users/superuser \
-d '{"name": "admin", "password": "apachepulsar", "description": "test", "email": "***@qq.com"}'
登录访问:
我部署在192.168.1.96服务器上面
http://192.168.1.96:9527
用户名:admin
密码:apachepulsar
以上基本部署完成!!!