1 背景
已经部署了Pulsar集群在生产上,新项目需要用到Pulsar。对Pulsar不熟,故搭建练手
。
环境:Windows10+vmware+Ubuntu20.04,ssh工具使用的Winterm。
使用的是root账户,ubuntu防火墙都ufw disable
了。
2 参考文档
集群搭建参考了这位大佬的方式2
https://developer.aliyun.com/article/1323937
监控搭建参考了这位大佬的内容
https://blog.csdn.net/weixin_46048207/article/details/136496809
官方文档
https://pulsar.apache.org/docs/next/getting-started-standalone/
3 资源
pulser-manager
https://mirrors.aliyun.com/apache/pulsar/pulsar-manager/pulsar-manager-0.4.0/
4 版本
java 用到了两个版本,分别是
- jdk-17.0.14 (pulsar使用)
- jdk1.8.0_441 (pulsar manager使用)
pulsar 2.11.3
zookeeper使用的内置的
5 配置服务器
首先是固定IP,不希望虚拟机重启IP就变了,修改/etc/netplan
shell
network:
ethernets:
ens33:
dhcp4: false
addresses: [192.168.98.146/24]
gateway4: 192.168.98.2
nameservers:
addresses: [8.8.8.8]
version: 2
修改完之后记得使用如下命令生效一下
shell
netplan apply
我这里使用了三台虚拟机,分别固定了IP,根据以下内容修改/etc/hostname
shell
192.168.98.146 pulsar1
192.168.98.147 pulsar2
192.168.98.148 pulsar3
根据上边的配置,我们修改hostname
shell
vi /etc/hostname
之后是允许root用户远程登录,需要修改下/etc/ssh/sshd_config
,记得service ssh restart
shell
PermitRootLogin yes
然后是建一下目标目录
shell
mkdir -p /usr/local/package/
mkdir -p /usr/local/java/
mkdir -p /usr/local/pulsar/
mkdir -p /usr/local/pulsar-manager/
因为要使用的几个tar.gz包都比较大,为了避免每个虚拟机都要下一遍tar.gz,所以我启用了Windows的iis服务,把压缩包都放在了对应的文件夹里了。这样就可减少下载时间。
使用wget命令,当然也可以使用winterm的sftp功能。
shell
wget http://192.168.98.1/tars/jdk-17.0.14_linux-x64_bin.tar.gz -P /usr/local/package/
tar -zxvf /usr/local/package/jdk-17.0.14_linux-x64_bin.tar.gz -C /usr/local/java/
后边都比较类似,不再赘述。
修改环境变量vim /etc/profile
,添加内容后source /etc/profile
让配置生效
shell
export JAVA_HOME=/usr/local/java/jdk-17.0.14
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
6 配置zookeeper
执行vim /usr/local/pulsar/apache-pulsar-2.11.3/conf/zookeeper.conf
修改对应内容
shell
tickTime=10000
dataDir=/var/zhou/zookeeper/data
dataLogDir=/var/zhou/zookeeper/log
server.1=pulsar1:2888:3888
server.2=pulsar2:2888:3888
server.3=pulsar3:2888:3888
执行以下命令,新建对应的文件夹,注意echo
后边的数字,虚拟机递增
shell
mkdir -p /var/zhou/zookeeper/data
mkdir -p /var/zhou/zookeeper/log
echo 1 > /var/zhou/zookeeper/data/myid
启动
shell
/usr/local/pulsar/apache-pulsar-2.11.3/bin/pulsar-daemon start zookeeper
三台虚拟机都启动后,验证下
shell
/usr/local/pulsar/apache-pulsar-2.11.3/bin/pulsar zookeeper-shell
初始化配置数据
shell
/usr/local/pulsar/apache-pulsar-2.11.3/bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper pulsar1:2181 \
--configuration-store pulsar1:2181 \
--web-service-url http://pulsar1:8080,pulsar2:8080,pulsar3:8080 \
--web-service-url-tls https://pulsar1:8443,pulsar2:8443,pulsar3:8443 \
--broker-service-url pulsar://pulsar1:6650,pulsar2:6650,pulsar3:6650 \
--broker-service-url-tls pulsar+ssl://pulsar1:6651,pulsar2:6651,pulsar3:6651
7 配置bookkeeper
先建文件夹
shell
mkdir -p /var/zhou/pulsar/data/journal
mkdir -p /var/zhou/pulsar/data/ledgers
编辑配置vim /usr/local/pulsar/apache-pulsar-2.11.3/conf/bookkeeper.conf
,并修改为对应内容
shell
# 修改其第56行,修改本地ip地址。
advertisedAddress=pulsar1
# 修改其第39行
journalDirectory=/var/zhou/pulsar/data/journal
# 修改其第400行
ledgerDirectories=/var/zhou/pulsar/data/ledgers
# 修改其第628行
zkServers=pulsar1:2181,pulsar2:2181,pulsar3:2181
# 修改其第570行
prometheusStatsHttpPort=8100
然后启动并测试
shell
/usr/local/pulsar/apache-pulsar-2.11.3/bin/bookkeeper shell metaformat
/usr/local/pulsar/apache-pulsar-2.11.3/bin/pulsar-daemon start bookie
/usr/local/pulsar/apache-pulsar-2.11.3/bin/bookkeeper shell bookiesanity
8 配置broker
直接修改vim /usr/local/pulsar/apache-pulsar-2.11.3/conf/broker.conf
,改为如下内容,注意主机名
要配自己的hostname
shell
# 修改其第101行,修改集群的名称。
# clusterName与前面zookeeper初始化的cluster一致
clusterName=pulsar-cluster
# 修改其第23行,配置zk集群的地址。
zookeeperServers=pulsar1:2181,pulsar2:2181,pulsar3:2181
# 修改其第26行,配置zk集群的地址。
configurationStoreServers=pulsar1:2181,pulsar2:2181,pulsar3:2181
# 修改其第47行,更改为本地主机名。
advertisedAddress=pulsar1
启动和验证集群
shell
/usr/local/pulsar/apache-pulsar-2.11.3/bin/pulsar-daemon start broker
/usr/local/pulsar/apache-pulsar-2.11.3/bin/pulsar-admin brokers list pulsar-cluster
9 配置pulsar-manager
首先是下载和解压,注意这里IP是我本地地址
wget http://192.168.98.1/tars/apache-pulsar-manager-0.4.0-bin.tar.gz -P /usr/local/package/
tar -zxvf /usr/local/package/apache-pulsar-manager-0.4.0-bin.tar.gz -C /usr/local/pulsar-manager/
cd /usr/local/pulsar-manager/apache-pulsar-manager-0.4.0-bin
tar -xvf pulsar-manager.tar
cp -r dist ./pulsar-manager/ui
然后是修改pulsar-manager的启动文件,在"# Increase the maximum file descriptors if we can." 上边加上JAVACMD
的重新赋值
shell
JAVACMD=/usr/local/java/jdk1.8.0_441/bin/java
# Increase the maximum file descriptors if we can.
启动
nohup /usr/local/pulsar-manager/apache-pulsar-manager-0.4.0-bin/pulsar-manager/bin/pulsar-manager &
初始化管理员账户
shell
CSRF_TOKEN=$(curl http://192.168.98.146:7750/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://192.168.98.146:7750/pulsar-manager/users/superuser \
-d '{"name": "pulsar", "password": "pulsar", "description": "test", "email": "[email protected]"}'
然后访问看效果
http://192.168.98.146:7750/ui/index.html
到此就完成了集群和管理应用的搭建。