Plusar集群搭建-Ubuntu20.04-Winterm

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": "username@test.org"}'

然后访问看效果

复制代码
http://192.168.98.146:7750/ui/index.html

到此就完成了集群和管理应用的搭建。

相关推荐
腾讯云中间件5 天前
TDMQ RocketMQ 版秒级定时消息原理解析
消息队列·rocketmq·腾讯
老友@6 天前
Spring Boot 集成 RabbitMQ:普通队列、延迟队列与死信队列全解析
spring boot·消息队列·rabbitmq·java-rabbitmq·死信队列·延时队列
阿里云云原生7 天前
百万 TPS 服务发布无感知!详解轻量消息队列无损发布实践
云原生·消息队列
Apache RocketMQ9 天前
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
阿里云·云原生·消息队列·rocketmq·prometheus·devops
荔枝爱编程10 天前
高性能企业级消息中心架构实现与分享(二)
后端·消息队列·rocketmq
荔枝爱编程10 天前
高性能企业级消息中心架构实现与分享(一)
java·消息队列·rocketmq
腾讯云中间件12 天前
深度剖析 TDMQ RabbitMQ 版经典队列底层存储机制
消息队列·rabbitmq·腾讯
鼠鼠我捏,要死了捏13 天前
基于Redis Streams的实时消息处理实战经验分享
redis·消息队列·redis streams
钩子波比17 天前
🚀 Asynq 学习文档
redis·消息队列·go