1. Pulsar概述与环境规划
Apache
Pulsar是一个开源的分布式消息流平台,由Yahoo开发并贡献给Apache基金会。Pulsar具有多租户、持久化存储、地理复制等特性,支持消息队列和流处理两种模式。更多学习教程www.fgedu.net.cn
1.1 Pulsar版本说明
Pulsar目前主要版本为3.2,本教程以Pulsar 3.2为例进行详细讲解。
$ bin/pulsar version
3.2.0
# 查看Broker状态
$ bin/pulsar-admin brokers list use
# 输出示例:
fgedudb01.fgedu.net.cn:8080
1.2 环境规划
本次安装环境规划如下:
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环境检查
$ 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 创建用户和目录
# 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 配置环境变量
$ 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
$ 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
$ 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
$ 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
4. Pulsar参数配置
Pulsar参数配置是性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com
4.1 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配置
$ 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配置
$ 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″
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 多节点集群配置
# 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
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
8. 监控与日志
Pulsar提供了完善的监控和日志功能,本节介绍常用的监控配置方法。更多学习教程公众号风哥教程itpux_com
8.1 启用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 查看日志
$ 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 健康检查
$ 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
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 生产环境完整配置
$ 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
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
