1. 首页 > 软件安装教程 > 正文

Pulsar安装配置-Pulsar消息队列安装配置_升级迁移详细过程

1. Pulsar概述与环境规划

Apache
Pulsar是一个开源的分布式消息流平台,由Yahoo开发并贡献给Apache基金会。Pulsar具有多租户、持久化存储、地理复制等特性,支持消息队列和流处理两种模式。更多学习教程www.fgedu.net.cn

1.1 Pulsar版本说明

Pulsar目前主要版本为3.2,本教程以Pulsar 3.2为例进行详细讲解。

# 查看Pulsar版本
$ bin/pulsar version
3.2.0

# 查看Broker状态
$ bin/pulsar-admin brokers list use

# 输出示例:
fgedudb01.fgedu.net.cn:8080

1.2 环境规划

本次安装环境规划如下:

主机名:fgedudb01.fgedu.net.cn
IP地址:192.168.1.51
Broker端口:6650 (Pulsar协议), 8080 (HTTP)
BookKeeper端口:3181 (Bookie)
ZooKeeper端口:2181
安装目录:/opt/pulsar
数据目录:/data/pulsar
日志目录:/opt/pulsar/logs

Java环境:
JDK版本:OpenJDK 17
JAVA_HOME:/usr/lib/jvm/java-17
JVM堆大小:2GB

1.3 Pulsar核心特性

主要特点:
1. 多租户:支持命名空间和租户隔离
2. 持久化存储:基于BookKeeper的持久化
3. 地理复制:支持跨数据中心复制
4. 高吞吐量:支持百万级消息吞吐
5. 低延迟:毫秒级消息投递延迟
6. 消息队列+流处理:支持两种模式
7. Schema注册:支持消息Schema管理
8. 函数计算:内置Pulsar Functions

2. 硬件环境要求与检查

在安装Pulsar之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com

2.1 最低硬件要求

最低配置:
CPU:4核心
内存:8GB
磁盘:50GB

推荐配置(生产环境):
CPU:8核心以上
内存:16GB以上
磁盘:200GB以上SSD

高吞吐量配置:
CPU:16核心以上
内存:32GB以上
磁盘:500GB以上SSD

2.2 Java环境检查

# 检查JDK版本
$ java -version
openjdk version “17.0.9” 9.0.4
OpenJDK Runtime Environment (Temurin-17.0.9+9) (build 17.0.9+9)
OpenJDK 64-Bit Server VM (build 17.0.9+9, mixed mode, sharing)

# 检查JAVA_HOME
$ echo $JAVA_HOME
/usr/lib/jvm/java-17

# 查看Java安装路径
$ which java
/usr/bin/java

2.3 系统环境检查

# 检查操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)

# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 31Gi 2.0Gi 28Gi 256Mi 1.0Gi 29Gi
Swap: 7Gi 0B 7Gi

# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 100G 5.0G 95G 5% /
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data

2.4 内核参数配置

# 配置内核参数
# vi /etc/sysctl.d/99-pulsar.conf

# 添加以下参数
# 文件描述符限制
fs.file-max = 65535

# 网络参数
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_local_port_range = 1024 65535

# 虚拟内存
vm.swappiness = 1
vm.max_map_count = 262144

# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-pulsar.conf

# 配置用户限制
# vi /etc/security/limits.conf

# 添加以下配置
pulsar soft nofile 65535
pulsar hard nofile 65535
pulsar soft nproc 65535
pulsar hard nproc 65535

3. Pulsar安装步骤

本节详细介绍Pulsar 3.2的安装过程。学习交流加群风哥QQ113257174

3.1 创建用户和目录

# 创建pulsar用户
# groupadd -g 1007 pulsar
# useradd -u 1007 -g pulsar -d /opt/pulsar -s /bin/bash pulsar
# passwd pulsar

# 创建目录
# mkdir -p /opt/pulsar
# mkdir -p /data/pulsar/{bookkeeper,zookeeper,data}

# 设置目录权限
# chown -R pulsar:pulsar /opt/pulsar
# chown -R pulsar:pulsar /data/pulsar

3.2 下载并安装Pulsar

# 切换到安装目录
# cd /usr/local/src

# 下载Pulsar 3.2
# wget https://archive.apache.org/dist/pulsar/pulsar-3.2.0/apache-pulsar-3.2.0-bin.tar.gz

# 解压安装
# tar -xzf apache-pulsar-3.2.0-bin.tar.gz -C /opt/

# 重命名目录
# mv /opt/apache-pulsar-3.2.0 /opt/pulsar

# 设置目录权限
# chown -R pulsar:pulsar /opt/pulsar

# 验证安装
$ ls -la /opt/pulsar/
总用量 0
drwxr-xr-x. 2 pulsar pulsar 4096 4月 4 10:00 bin
drwxr-xr-x. 2 pulsar pulsar 4096 4月 4 10:00 conf
drwxr-xr-x. 2 pulsar pulsar 4096 4月 4 10:00 lib
drwxr-xr-x. 2 pulsar pulsar 4096 4月 4 10:00 examples

3.3 配置环境变量

# 配置pulsar用户环境变量
$ vi ~/.bash_profile

# 添加以下内容
export PULSAR_HOME=/opt/pulsar
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$PULSAR_HOME/bin:$JAVA_HOME/bin:$PATH

# 使配置生效
$ source ~/.bash_profile

# 验证环境变量
$ echo $PULSAR_HOME
/opt/pulsar

3.4 配置ZooKeeper

# 编辑ZooKeeper配置
$ vi /opt/pulsar/conf/zookeeper.conf

# 修改以下配置
# 数据目录
dataDir=/data/pulsar/zookeeper

# 客户端端口
clientPort=2181

# 集群配置(单机模式)
server.1=192.168.1.51:2888:3888

# 创建myid文件
$ echo “1” > /data/pulsar/zookeeper/myid

# 启动ZooKeeper
$ bin/pulsar-daemon start zookeeper

# 查看ZooKeeper状态
$ bin/pulsar zookeeper-shell -server 192.168.1.51:2181

# 输出示例:
Connecting to 192.168.1.51:2181
Welcome to ZooKeeper!
JLine support is enabled

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

3.5 初始化元数据

# 初始化集群元数据
$ bin/pulsar initialize-cluster-metadata \
–cluster fgedu-cluster \
–zookeeper 192.168.1.51:2181 \
–configuration-store 192.168.1.51:2181 \
–web-service-url http://192.168.1.51:8080 \
–broker-service-url pulsar://192.168.1.51:6650

# 输出示例:
Successfully initialized cluster metadata for cluster fgedu-cluster

3.6 配置BookKeeper

# 编辑BookKeeper配置
$ vi /opt/pulsar/conf/bookkeeper.conf

# 修改以下配置
# 数据目录
journalDirectory=/data/pulsar/bookkeeper/journal
ledgerDirectories=/data/pulsar/bookkeeper/ledgers

# ZooKeeper地址
zkServers=192.168.1.51:2181

# Bookie端口
bookiePort=3181

# 启动BookKeeper
$ bin/pulsar-daemon start bookie

# 查看BookKeeper状态
$ bin/bookkeeper shell bookiesanity

# 输出示例:
Bookie sanity test passed

3.7 配置Broker

# 编辑Broker配置
$ vi /opt/pulsar/conf/broker.conf

# 修改以下配置
# 集群名称
clusterName=fgedu-cluster

# ZooKeeper地址
zookeeperServers=192.168.1.51:2181
configurationStoreServers=192.168.1.51:2181

# Broker地址
brokerServicePort=6650
webServicePort=8080
bindAddress=0.0.0.0
advertisedAddress=192.168.1.51

# 存储配置
managedLedgerDefaultEnsembleSize=1
managedLedgerDefaultWriteQuorum=1
managedLedgerDefaultAckQuorum=1

# 启动Broker
$ bin/pulsar-daemon start broker

# 查看Broker状态
$ bin/pulsar-admin brokers list fgedu-cluster

# 输出示例:
fgedudb01.fgedu.net.cn:8080

# 检查端口
$ netstat -tlnp | grep java
tcp6 0 0 :::6650 :::* LISTEN 12345/java
tcp6 0 0 :::8080 :::* LISTEN 12345/java
tcp6 0 0 :::2181 :::* LISTEN 12346/java
tcp6 0 0 :::3181 :::* LISTEN 12347/java

3.8 配置防火墙

# 配置防火墙
# firewall-cmd –permanent –add-port=6650/tcp
success
# firewall-cmd –permanent –add-port=8080/tcp
success
# firewall-cmd –permanent –add-port=2181/tcp
success
# firewall-cmd –permanent –add-port=3181/tcp
success
# firewall-cmd –reload
success
风哥提示:Pulsar由Broker、BookKeeper和ZooKeeper三个核心组件组成。生产环境建议部署多节点集群实现高可用。

4. Pulsar参数配置

Pulsar参数配置是性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com

4.1 Broker核心配置

# 编辑Broker配置
$ vi /opt/pulsar/conf/broker.conf

# 集群配置
clusterName=fgedu-cluster

# ZooKeeper配置
zookeeperServers=192.168.1.51:2181
configurationStoreServers=192.168.1.51:2181
zookeeperSessionTimeoutMs=30000

# 网络配置
brokerServicePort=6650
webServicePort=8080
bindAddress=0.0.0.0
advertisedAddress=192.168.1.51

# 存储配置
managedLedgerDefaultEnsembleSize=3
managedLedgerDefaultWriteQuorum=2
managedLedgerDefaultAckQuorum=2

# 消息配置
defaultRetentionTimeInMinutes=0
defaultRetentionSizeInMB=0
maxMessageSize=5242880

# 性能配置
numHttpServerThreads=8
numIOThreads=8
numExecutorThreadPoolSize=8

4.2 BookKeeper配置

# 编辑BookKeeper配置
$ vi /opt/pulsar/conf/bookkeeper.conf

# 数据目录
journalDirectory=/data/pulsar/bookkeeper/journal
ledgerDirectories=/data/pulsar/bookkeeper/ledgers
indexDirectories=/data/pulsar/bookkeeper/index

# ZooKeeper配置
zkServers=192.168.1.51:2181
zkLedgersRootPath=/ledgers

# 网络配置
bookiePort=3181
advertisedAddress=192.168.1.51

# 性能配置
journalSyncData=true
journalMaxGroupWaitMSec=1
numAddWorkerThreads=4
numReadWorkerThreads=4
numJournalCallbackThreads=4

# 存储配置
journalPreAllocSizeMB=16
journalWriteBufferSizeKB=512
journalRemoveFromPageCache=true

4.3 JVM配置

# 编辑JVM配置
$ vi /opt/pulsar/conf/pulsar_env.sh

# 添加以下配置
PULSAR_MEM=”-Xms2g -Xmx2g -XX:MaxDirectMemorySize=2g”
PULSAR_GC=”-XX:+UseG1GC -XX:MaxGCPauseMillis=10″
PULSAR_EXTRA_OPTS=”${PULSAR_EXTRA_OPTS} -XX:+ParallelRefProcEnabled”

# BookKeeper JVM配置
$ vi /opt/pulsar/conf/bkenv.sh

BOOKIE_MEM=”-Xms2g -Xmx2g -XX:MaxDirectMemorySize=2g”
BOOKIE_GC=”-XX:+UseG1GC -XX:MaxGCPauseMillis=10″

生产环境建议:根据服务器硬件配置合理调整内存和线程池参数。建议使用SSD存储以提高IO性能。

5. 主题与消息管理

Pulsar提供了丰富的主题和消息管理功能,本节介绍常用的操作方法。from:www.itpux.com

5.1 创建租户和命名空间

# 创建租户
$ bin/pulsar-admin tenants create fgedu-tenant

# 查看租户列表
$ bin/pulsar-admin tenants list

# 输出示例:
public
fgedu-tenant

# 创建命名空间
$ bin/pulsar-admin namespaces create fgedu-tenant/fgedu-ns

# 查看命名空间列表
$ bin/pulsar-admin namespaces list fgedu-tenant

# 输出示例:
fgedu-tenant/fgedu-ns

# 配置命名空间策略
$ bin/pulsar-admin namespaces set-retention fgedu-tenant/fgedu-ns –size 10G –time 7d

# 查看命名空间策略
$ bin/pulsar-admin namespaces get-retention fgedu-tenant/fgedu-ns

# 输出示例:
{
“retentionTimeInMinutes” : 10080,
“retentionSizeInMB” : 10240
}

5.2 创建主题

# 创建持久化主题
$ bin/pulsar-admin topics create persistent://fgedu-tenant/fgedu-ns/fgedu-topic

# 查看主题列表
$ bin/pulsar-admin topics list fgedu-tenant/fgedu-ns

# 输出示例:
persistent://fgedu-tenant/fgedu-ns/fgedu-topic

# 查看主题信息
$ bin/pulsar-admin topics stats persistent://fgedu-tenant/fgedu-ns/fgedu-topic

# 输出示例:
{
“msgRateIn” : 0.0,
“msgThroughputIn” : 0.0,
“msgRateOut” : 0.0,
“msgThroughputOut” : 0.0,
“averageMsgSize” : 0.0,
“storageSize” : 0,
“publishers” : [ ],
“subscriptions” : { },
“replication” : { }
}

# 创建分区主题
$ bin/pulsar-admin topics create-partitioned-topic
persistent://fgedu-tenant/fgedu-ns/fgedu-partitioned-topic –partitions 4

5.3 发送和消费消息

# 使用客户端发送消息
$ bin/pulsar-client produce persistent://fgedu-tenant/fgedu-ns/fgedu-topic –messages “Hello Pulsar”

# 输出示例:
10:00:00.000 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool – 1 messages successfully produced

# 消费消息
$ bin/pulsar-client consume persistent://fgedu-tenant/fgedu-ns/fgedu-topic –subscription-name
fgedu-subscription –num-messages 0

# 输出示例:
10:00:01.000 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool – Messages received:
—– got message —–
Hello Pulsar

6. 集群配置

Pulsar支持多集群部署和地理复制,本节介绍常用的集群配置方法。更多学习教程www.fgedu.net.cn

6.1 多节点集群配置

# ZooKeeper集群配置 (3节点)
# vi /opt/pulsar/conf/zookeeper.conf

# 节点配置
server.1=192.168.1.51:2888:3888
server.2=192.168.1.52:2888:3888
server.3=192.168.1.53:2888:3888

# 在各节点创建myid
# 节点1
$ echo “1” > /data/pulsar/zookeeper/myid
# 节点2
$ echo “2” > /data/pulsar/zookeeper/myid
# 节点3
$ echo “3” > /data/pulsar/zookeeper/myid

# BookKeeper集群配置
# vi /opt/pulsar/conf/bookkeeper.conf

zkServers=192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181

# Broker集群配置
# vi /opt/pulsar/conf/broker.conf

zookeeperServers=192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181
configurationStoreServers=192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181

# 查看集群Broker列表
$ bin/pulsar-admin brokers list fgedu-cluster

# 输出示例:
192.168.1.51:8080
192.168.1.52:8080
192.168.1.53:8080

6.2 地理复制配置

# 创建远程集群
$ bin/pulsar-admin clusters create fgedu-cluster-west \
–url http://192.168.2.51:8080 \
–broker-url pulsar://192.168.2.51:6650

# 配置租户复制
$ bin/pulsar-admin tenants update fgedu-tenant \
–allowed-clusters fgedu-cluster,fgedu-cluster-west

# 配置命名空间复制
$ bin/pulsar-admin namespaces set-clusters fgedu-tenant/fgedu-ns \
–clusters fgedu-cluster,fgedu-cluster-west

# 查看复制状态
$ bin/pulsar-admin namespaces get-clusters fgedu-tenant/fgedu-ns

# 输出示例:
fgedu-cluster
fgedu-cluster-west

风哥提示:Pulsar集群需要至少3个ZooKeeper节点和3个BookKeeper节点。生产环境建议部署5个节点以实现更高的可用性。

7. 安全配置

Pulsar提供了完善的安全框架,本节介绍常用的安全配置方法。学习交流加群风哥微信: itpux-com

7.1 配置认证

# 创建超级用户密钥
$ bin/pulsar tokens create-secret-key –output /opt/pulsar/secret.key

# 创建超级用户Token
$ bin/pulsar tokens create –secret-key file:///opt/pulsar/secret.key –subject admin

# 输出示例:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxx

# 配置Broker认证
$ vi /opt/pulsar/conf/broker.conf

# 启用认证
authenticationEnabled=true
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
brokerClientAuthenticationParameters=token:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.xxxxx
superUserRoles=admin

# 配置Token认证
tokenSecretKey=file:///opt/pulsar/secret.key

# 重启Broker
$ bin/pulsar-daemon stop broker
$ bin/pulsar-daemon start broker

7.2 配置授权

# 启用授权
$ vi /opt/pulsar/conf/broker.conf

authorizationEnabled=true
authorizationProvider=org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider

# 重启Broker
$ bin/pulsar-daemon stop broker
$ bin/pulsar-daemon start broker

# 授予租户权限
$ bin/pulsar-admin tenants update fgedu-tenant \
–admin-roles fgedu-admin

# 授予命名空间权限
$ bin/pulsar-admin namespaces grant-permission fgedu-tenant/fgedu-ns \
–actions produce,consume \
–role fgedu-user

# 查看权限
$ bin/pulsar-admin namespaces permissions fgedu-tenant/fgedu-ns

# 输出示例:
{
“fgedu-user” : [ “produce”, “consume” ]
}

7.3 配置SSL/TLS

# 生成证书
$ keytool -genkeypair -alias pulsar -keyalg RSA -keysize 2048 \
-keystore /opt/pulsar/pulsar.keystore.jks \
-validity 365 -storepass fgedu123 -keypass fgedu123 \
-dname “CN=fgedudb01.fgedu.net.cn,OU=IT,O=FGedu,L=BJ,ST=BJ,C=CN”

# 导出证书
$ keytool -export -alias pulsar \
-keystore /opt/pulsar/pulsar.keystore.jks \
-file /opt/pulsar/pulsar.crt -storepass fgedu123

# 导入信任库
$ keytool -import -alias pulsar \
-file /opt/pulsar/pulsar.crt \
-keystore /opt/pulsar/pulsar.truststore.jks \
-storepass fgedu123 -noprompt

# 配置Broker SSL
$ vi /opt/pulsar/conf/broker.conf

# TLS配置
tlsEnabled=true
tlsCertificateFilePath=/opt/pulsar/pulsar.crt
tlsKeyFilePath=/opt/pulsar/pulsar.key
tlsTrustCertsFilePath=/opt/pulsar/pulsar.crt

# 重启Broker
$ bin/pulsar-daemon stop broker
$ bin/pulsar-daemon start broker

生产环境建议:生产环境建议启用认证和授权,为不同应用分配独立的Token和权限。

8. 监控与日志

Pulsar提供了完善的监控和日志功能,本节介绍常用的监控配置方法。更多学习教程公众号风哥教程itpux_com

8.1 启用Prometheus监控

# 配置Prometheus暴露
$ vi /opt/pulsar/conf/broker.conf

# 启用Prometheus
exposeTopicLevelMetricsInPrometheus=true
prometheusStatsLatencyRolloverSeconds=60

# 访问指标端点
$ curl http://192.168.1.51:8080/metrics

# 输出示例:
# HELP pulsar_topics_count Number of Pulsar topics
# TYPE pulsar_topics_count gauge
pulsar_topics_count{cluster=”fgedu-cluster”} 10.0
# HELP pulsar_connections_count Number of connections
# TYPE pulsar_connections_count gauge
pulsar_connections_count{cluster=”fgedu-cluster”} 100.0

8.2 查看日志

# 查看Broker日志
$ tail -f /opt/pulsar/logs/pulsar-broker-fgedudb01.fgedu.net.cn.log

# 输出示例:
2026-04-04 10:00:00,000 [main] INFO org.apache.pulsar.broker.PulsarService – Starting Pulsar Broker service
2026-04-04 10:00:01,000 [main] INFO org.apache.pulsar.broker.PulsarService – Pulsar Broker service started

# 查看BookKeeper日志
$ tail -f /opt/pulsar/logs/bookkeeper-fgedudb01.fgedu.net.cn.log

# 查看ZooKeeper日志
$ tail -f /opt/pulsar/logs/zookeeper-*.log

8.3 健康检查

# 检查Broker健康
$ bin/pulsar-admin brokers healthcheck

# 输出示例:
Brokers health check passed

# 检查BookKeeper状态
$ bin/bookkeeper shell listbookies -rw

# 输出示例:
ReadWrite Bookies :
192.168.1.51:3181
192.168.1.52:3181
192.168.1.53:3181

# 检查ZooKeeper状态
$ echo “stat” | nc 192.168.1.51 2181

# 输出示例:
Zookeeper version: 3.8.3
Clients:
/192.168.1.51:12345[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0

风哥提示:生产环境建议部署Prometheus和Grafana进行监控。定期检查消息积压和消费延迟情况。

9. 升级与迁移

Pulsar升级和迁移是运维工作中的重要环节,需要仔细规划和执行。from:www.itpux.com

9.1 版本升级

# 检查当前版本
$ bin/pulsar version
3.2.0

# 备份配置
$ cp -r /opt/pulsar/conf /backup/pulsar/conf_$(date +%Y%m%d)

# 停止Broker
$ bin/pulsar-daemon stop broker

# 停止BookKeeper
$ bin/pulsar-daemon stop bookie

# 停止ZooKeeper
$ bin/pulsar-daemon stop zookeeper

# 备份旧版本
$ mv /opt/pulsar /opt/pulsar-3.2.0.bak

# 下载新版本
# wget https://archive.apache.org/dist/pulsar/pulsar-3.3.0/apache-pulsar-3.3.0-bin.tar.gz

# 解压安装
# tar -xzf apache-pulsar-3.3.0-bin.tar.gz -C /opt/
# mv /opt/apache-pulsar-3.3.0 /opt/pulsar

# 恢复配置
$ cp -r /backup/pulsar/conf_$(date +%Y%m%d)/* /opt/pulsar/conf/

# 按顺序启动服务
$ bin/pulsar-daemon start zookeeper
$ bin/pulsar-daemon start bookie
$ bin/pulsar-daemon start broker

# 验证版本
$ bin/pulsar version
3.3.0

9.2 数据迁移

# 导出命名空间数据
$ bin/pulsar-admin namespaces export fgedu-tenant/fgedu-ns -d /backup/pulsar/export

# 导入命名空间数据
$ bin/pulsar-admin namespaces import fgedu-tenant/fgedu-ns -d /backup/pulsar/export

# 迁移BookKeeper数据
# 1. 在新节点启动Bookie
$ bin/pulsar-daemon start bookie

# 2. 执行数据迁移
$ bin/bookkeeper shell decommissionbookie -bookieid 192.168.1.51:3181

# 输出示例:
Successfully decommissioned bookie 192.168.1.51:3181

生产环境建议:升级前必须进行完整备份。建议先在测试环境验证兼容性,确保消息不丢失。

10. 生产环境实战案例

本节提供一个完整的生产环境配置案例,帮助读者更好地理解Pulsar的实际应用。更多学习教程www.fgedu.net.cn

10.1 生产环境完整配置

# 生产环境Broker完整配置
$ vi /opt/pulsar/conf/broker.conf

# 集群配置
clusterName=fgedu-cluster

# ZooKeeper配置
zookeeperServers=192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181
configurationStoreServers=192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181

# 网络配置
brokerServicePort=6650
webServicePort=8080
bindAddress=0.0.0.0
advertisedAddress=192.168.1.51

# 存储配置
managedLedgerDefaultEnsembleSize=3
managedLedgerDefaultWriteQuorum=2
managedLedgerDefaultAckQuorum=2

# 消息配置
defaultRetentionTimeInMinutes=10080
defaultRetentionSizeInMB=10240
maxMessageSize=5242880

# 性能配置
numHttpServerThreads=16
numIOThreads=16
numExecutorThreadPoolSize=16

# 安全配置
authenticationEnabled=true
authorizationEnabled=true
tlsEnabled=true

# 创建systemd服务
$ vi /etc/systemd/system/pulsar.service

[Unit]
Description=Apache Pulsar
After=network.target

[Service]
Type=forking
User=pulsar
Group=pulsar
ExecStart=/opt/pulsar/bin/pulsar-daemon start all
ExecStop=/opt/pulsar/bin/pulsar-daemon stop all
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 启用服务
# systemctl enable pulsar
# systemctl start pulsar

10.2 高可用集群部署

# 五节点集群部署

# ZooKeeper节点
# 192.168.1.51:2181
# 192.168.1.52:2181
# 192.168.1.53:2181

# BookKeeper节点
# 192.168.1.51:3181
# 192.168.1.52:3181
# 192.168.1.53:3181
# 192.168.1.54:3181
# 192.168.1.55:3181

# Broker节点
# 192.168.1.51:8080
# 192.168.1.52:8080
# 192.168.1.53:8080

# 初始化集群
$ bin/pulsar initialize-cluster-metadata \
–cluster fgedu-cluster \
–zookeeper 192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181 \
–configuration-store 192.168.1.51:2181,192.168.1.52:2181,192.168.1.53:2181 \
–web-service-url http://192.168.1.51:8080,http://192.168.1.52:8080,http://192.168.1.53:8080 \
–broker-service-url pulsar://192.168.1.51:6650,pulsar://192.168.1.52:6650,pulsar://192.168.1.53:6650

# 在各节点启动服务
$ bin/pulsar-daemon start zookeeper
$ bin/pulsar-daemon start bookie
$ bin/pulsar-daemon start broker

10.3 性能调优实战

# 操作系统优化
# vi /etc/sysctl.d/99-pulsar.conf

# 网络优化
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

# 虚拟内存
vm.swappiness = 1
vm.max_map_count = 262144

# 使配置生效
# sysctl -p /etc/sysctl.d/99-pulsar.conf

# JVM优化
$ vi /opt/pulsar/conf/pulsar_env.sh

PULSAR_MEM=”-Xms4g -Xmx4g -XX:MaxDirectMemorySize=4g”
PULSAR_GC=”-XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:InitiatingHeapOccupancyPercent=35″

# 性能测试
$ bin/pulsar-perf produce persistent://fgedu-tenant/fgedu-ns/fgedu-topic \
–rate 100000 –size 1024 –threads 16

# 输出示例:
Throughput: 100000.0 msg/s
Latency: avg=2.0ms, max=50.0ms

风哥提示:Pulsar作为新一代消息流平台,在云原生和流处理场景具有优势。建议根据业务场景选择合适的存储策略和复制配置。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息