在一台低配机器上部署一个单节点集群极其注意事项。
目录:
(1).准备工作
(2).部署zookeeper
(3).初始化集群元数据
(4).部署bookeeper单节点
(5).部署broker单节点
(6).pulsar-cient连接集群
(7).docker部署pulsar-manager
1.部署pulsar-manager
2.增加超级管理员用户
(1).准备工作
yum install -y java
java版本:11
yum 安装java的默认目录是/usr/lib/jvm/java
export JAVA_HOME=/usr/lib/jvm/jre-11-openjdk/
wget https://archive.apache.org/dist/pulsar/pulsar-2.8.0/apache-pulsar-2.8.0-bin.tar.gz
tar -xzvf apache-pulsar-2.8.0-bin.tar.gz
mv apache-pulsar-2.8.0 /app/3rd/
(2).部署zookeeper
cd apache-pulsar-2.8.0
vim conf/zookeeper.conf
增加配置:
server.1=ip:2888:3888
修改zk metric port:因为bookie也用原值8000,在同一台部署bookie会失败。
metricsProvider.httpPort=8001
mkdir -p data/zookeeper
echo 1 > data/zookeeper/myid
bin/pulsar-daemon start zookeeper
(3).初始化集群元数据
bin/pulsar initialize-cluster-metadata --cluster pulsar-cluster --zookeeper ip:2181 --configuration-store ip:2181 --web-service-url http://ip:8080 --web-service-url-tls https://ip:8443 --broker-service-url pulsar://ip:6650 --broker-service-url-tls pulsar ssl://ip:6651
对应的删除元数据命令是:
bin/pulsar delete-cluster-metadata --cluster pulsar-cluster --zookeeper ip:2181
(4).部署bookeeper单节点
vim conf/bookkeeper.conf:
修改
zkServers=ip:2181
关闭autorecovry:
autoRecoveryDaemonEnabled=false
否则包错:BKNotEnoughBookiesException: Not enough non-faulty bookies available
后台启动bookie:
bin/pulsar-daemon start bookie
你可以通过运行BookKeeper shell上的bookiesanity命令验证 bookie 是否正常工作:
$ bin/bookkeeper shell bookiesanity
这个命令会在本地的 bookie 创建一个临时的 BookKeeper ledger,往里面写一些条目,然后读取它,最后删除这个 ledger。
(5).部署broker单节点
Broker 配置中有一些非常重要的参数,这些参数可以确保每个Broker 连接到已部署的 ZooKeeper 集群。需要确认 zookeeperServers 和 configurationStoreServers 配置项的值是正确的。在当前情况下,由于只有一个集群,没有单独用来存储配置的 Zookeeper 集群,那么配置项configurationStoreServers和zookeeperServers 是一样的值。
vim conf/broker.conf
zookeeperServers=ip:2181
configurationStoreServers=ip:2181
你必须配置集群的名字( 初始化集群元数据 提供的集群名字必须和这个配置项匹配):
clusterName=pulsar-cluster
如果你部署的是单节点的 Pulsar 集群,你需要把配置文件conf/broker.conf的副本数量配置为1.
managedLedgerDefaultEnsembleSize=1
managedLedgerDefaultWriteQuorum=1
managedLedgerDefaultAckQuorum=1
启用 Pulsar Function(可选)
If you want to enable Pulsar Functions, you can follow the instructions as below:
将conf/broker.conf文件的配置项functionsWorkerEnabled设置为true,启用函数 worker,
functionsWorkerEnabled=true
修改conf/functions_worker.yml的配置项pulsarFunctionsCluster 为集群的名称,该名称和初始化集群元数据使用的集群名字是同一个。
pulsarFunctionsCluster: pulsar-cluster
后台启动broker:
bin/pulsar-daemon start broker
(6).pulsar-cient连接集群
vim conf/client.conf
如果你没有 DNS 服务器,你能够使用多个域名组成的格式的服务的 URL:
webServiceUrl=http://ip:8080
brokerServiceUrl=pulsar://ip:6650
启动consumer监听:
bin/pulsar-client consume persistent://public/default/test -n 100 -s "consumer-test" -t "Exclusive"
启动producer发送消息:
bin/pulsar-client produce persistent://public/default/test -n 1 -m "Hello Pulsar"
可以在consumer上看到打印:
(7).docker部署pulsar-manager
1.部署pulsar-manager
mkdir -p /root/docker-local/docker-local-pulsar-manager/conf
下载bkvm.conf文件到制定目录:
cp https://github.com/apache/pulsar-manager/blob/master/src/main/resources/bkvm.conf /root/docker-local/docker-local-pulsar-manager/conf
下载application.properties文件到制定目录:
cp https://github.com/apache/pulsar-manager/blob/master/src/main/resources/application.properties /root/docker-local/docker-local-pulsar-manager/conf
修改bkvm.conf:
Enable bookkeeper visual manager(Optional):
bkvm.enabled=true
# BookKeeper Connection
# Default value zk null://127.0.0.1:2181/ledgers works for Pulsar Standalone
metadataServiceUri=zk null://bookie所在机器的ip:2181/ledgers
修改application.properties:
support peek message, default false:
pulsar.peek.message=true
#开启swagger
swagger.enabled=true
启动pulsar-manager:
docker run -it -d -p 9527:9527 -p 7750:7750 -e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/application.properties -v /root/docker-local/docker-local-pulsar-manager/conf/bkvm.conf:/pulsar-manager/pulsar-manager/bkvm.conf -v /root/docker-local/docker-local-pulsar-manager/conf/application.properties:/pulsar-manager/pulsar-manager/application.properties --name pulsar-manager apachepulsar/pulsar-manager
登陆pulsar-manager:
http:/ip:9527/
2.增加超级管理员用户
增加超级管理员用户和密码:
CSRF_TOKEN=$(curl http://127.0.0.1:7750/pulsar-manager/csrf-token)
curl -H "X-XSRF-TOKEN:
超级管理员新增参考官方文档:特别注意字符问题:
https://github.com/apache/pulsar-manager#access-pulsar-manager
有两个web后台:
pulsar-manager后台:
http://ipx:9527/#/environments
bkvm后台:需要在application.properties配置文件中开启
http://ipy:7750/bkvm