Pulsar集群部署

温馨提醒

一、环境

IP主机名JDK版本
192.168.1.160pulsar-01OpenJDK21
192.168.1.162pulsar-02OpenJDK21
192.168.1.166pulsar-03OpenJDK21

二、部署 zookeeper 集群

三、部署 Pulsar 集群

3.1 创建目录

1
mkdir /data/

3.2 下载、解压安装包

1
2
3
4
5
wget https://archive.apache.org/dist/pulsar/pulsar-3.0.2/apache-pulsar-3.0.2-bin.tar.gz

tar zxvf apache-pulsar-3.0.2-bin.tar.gz -C /data/

ln -s apache-pulsar-3.0.2 apache-pulsar

3.3 初始化 pulsar 元数据(在其中一个节点上执行即可)

1
2
3
4
5
6
7
8
bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper 192.168.1.160:2181 \
--configuration-store 192.168.1.160:2181 \
--web-service-url http://192.168.1.160:8080,192.168.1.162:8080,192.168.1.166:8080 \
# --web-service-url-tls https://192.168.1.160:8443 \
--broker-service-url pulsar://192.168.1.160:6650,192.168.1.162:6650,192.168.1.166:6650 \
# --broker-service-url-tls pulsar+ssl://192.168.1.160:6651

3.4 安装 bookeeper 集群

  • 修改配置文件

    vim conf/bookeeper.conf

    1
    2
    3
    4
    
    advertisedAddress=192.168.1.160			# 修改成对应服务器的IP,另外两台也做修改
    journalDirectories=/data/bookies/journal
    ledgerDirectories=/data/bookies/ledger
    zkServers=192.168.1.160:2181,192.168.1.160:2181,192.168.1.160:2181
  • 初始化(只需在一个节点上执行即可)

    1
    
    bin/bookkeeper shell metaformat			#输入y,继续
  • 启动 bookeeper (三个节点都启动)

    vim /etc/supervisord.d/pulsar-bookeeper.ini

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    [program:pulsar-bookie]
    environment=JAVA_HOME=/usr/local/jdk-21.0.5
    directory=/data/apache-pulsar-3.0.2/bin/
    command=/data/apache-pulsar-3.0.2/bin/pulsar bookie
    autostart=true
    startsecs=5
    autorestart=true
    startretries=3
    user=root
    stdout_logfile=/data/apache-pulsar-3.0.2/logs/stdout-bookie.log
    stderr_logfile=/data/apache-pulsar-3.0.2/logs/stderr-bookie.log
    stdout_logfile_backups=10
    stdout_logfile_maxbytes=1GB
    1
    2
    3
    
    supervisorctl update pulsar-bookeeper
    
    supervisorctl start pulsar-bookeeper
  • 验证启动是否成功(三个节点都检测下)

    1
    2
    3
    
    bin/bookkeeper shell bookiesanity
    
    Bookie sanity test succeeded		# 最后一行输出该行,表示成功

3.5 安装 broker

  • 修改 broker 配置文件

    vim conf/broker.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    zookeeperServers=192.168.1.160:2181,192.168.1.162:2181,192.168.1.166:2181
    configurationStoreServers=192.168.1.160:2181,192.168.1.162:2181,192.168.1.166:2181
    brokerServicePort=6650
    brokerServicePortTls=6651
    webServicePort=8080
    webServicePortTls=8443
    advertisedAddress=192.168.1.160
    clusterName=pulsar-cluster
    functionsWorkerEnabled=true

    vim conf/functions_worker.yml

    1
    
    pulsarFunctionsCluster: pulsar-cluster 					# 修改成初始化时集群的名字

    vim conf/client.conf

    1
    2
    
    webServiceUrl=http://192.168.1.160:8080/ 				# 修改成本机的IP
    brokerServiceUrl=pulsar://192.168.1.160:6650,192.168.1.162:6650,192.168.1.166:6650
  • 启动 broker (三个节点都启动)

    vim /etc/supervisord.d/pulsar-broker.ini

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    [program:pulsar-broker]
    environment=JAVA_HOME=/usr/local/jdk-21.0.5
    directory=/data/apache-pulsar-3.0.2/bin/
    command=/data/apache-pulsar-3.0.2/bin/pulsar broker
    autostart=true
    startsecs=5
    autorestart=true
    startretries=3
    user=root
    stdout_logfile=/data/apache-pulsar-3.0.2/logs/stdout-broker.log
    stderr_logfile=/data/apache-pulsar-3.0.2/logs/stderr-broker.log
    stdout_logfile_backups=10
    stdout_logfile_maxbytes=1GB
    1
    2
    3
    
    supervisorctl update pulsar-broker
    
    supervisorctl start pulsar-broker
  • 查看 broker 节点启动情况

    1
    
    bin/pulsar-admin brokers list pulsar-cluster

四、其他命令

  • 更新集群配置

    1
    
    bin/pulsar-admin clusters update pulsar-cluster --url http://192.168.1.160:8080,192.168.1.162:8080,192.168.1.166:8080 --broker-url pulsar://192.168.1.160:6650,192.168.1.162:6650,192.168.1.166:6650
  • 删除集群

    1
    
    bin/pulsar-admin clusters delete pulsar-cluster
  • 获取集群配置

    1
    
    bin/pulsar-admin clusters get pulsar-cluster
  • 获取实例中的所有集群

    1
    
    bin/pulsar-admin clusters list