跳至主要內容

安装RocketMQ(单机&集群)

soulballad环境配置CentOSCentOS约 2149 字大约 7 分钟

安装RocketMQ(单机&集群)

安装RocketMQ单机

rocketMQ官网: http://rocketmq.apache.org/open in new window

下载并解压安装包

下载rocketmq的安装文件: tsinghua-mirroropen in new window

解压压缩包

unzip rocketmq-all-4.5.2-bin-release.zip -d /opt/program

配置环境变量

vi /etc/profile
export JAVA_HOME=/opt/program/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export MAVEN_HOME=/opt/program/apache-maven-3.5.4
export PATH=$PATH:$MAVEN_HOME/bin

export ROCKETMQ_HOME=/opt/program/rocketmq-all-4.5.2-bin-release
export PATH=$ROCKETMQ_HOME/bin:$PATH

创建数据和日志目录

mkdir -p /opt/program/rocketmq-all-4.5.2-bin-release/data
mkdir -p /opt/program/rocketmq-all-4.5.2-bin-release/logs

配置 broker.conf

vim /opt/program/rocketmq-all-4.5.2-bin-release/conf/broker.conf

# 所属集群名字(同一主从下: Master 和 Slave 名称要一致)
brokerClusterName = DefaultCluster

# Broker 名字,注意此处不同的配置文件填写的不一样
brokerName = broker-a

# 0 表示 Master,> 0 表示 Slave
brokerId = 0

# Broker 对外服务的监听端口, 如果一台机器上启动了多个Broker,则要设置不同的端口号,避免冲突
listenPort = 10911

# nameServer地址,如果nameServer是多台集群的话,就用分号分割,比如
# namesrvAddr = 192.168.0.1:9876;192.168.0.2:9876
# namesrvAddr = 127.0.0.1:9876
namesrvAddr = 172.16.11.125:9876
brokerIP1 = 172.16.11.125
# 是否允许 Broker 自动创建Topic,建议线上关闭
autoCreateTopicEnable = true

# 是否允许 Broker 自动创建订阅组,建议线上关闭
autoCreateSubscriptionGroup = true

# 与fileReservedTime参数呼应,表明在几点做消息删除动作,默认值04表示凌晨4点
deleteWhen = 04

# 在磁盘上保存消息的时长,单位是小时,自动删除超时的消息
fileReservedTime = 48

# brokerRole有3种:SYNC_MASTER、ASYNC_MASTER、SLAVE
# 关键词 SYNC 和 ASYNC 表示 Master 和 Slave 之间同步消息的机制
# SYNC 的意思是当 Slave 和 Master 消息同步完成后,再返回发送成功的状态
brokerRole = ASYNC_MASTER

# 刷盘方式 ASYNC_FLUSH 异步刷盘; SYNC_FLUSH 同步刷盘
flushDiskType = ASYNC_FLUSH

#数据存储位置
storePathRootDir = /opt/program/rocketmq-all-4.5.2-bin-release/data
storePathCommitLog = /opt/program/rocketmq-all-4.5.2-bin-release/logs

修改启动脚本JVM内存大小

vim /opt/program/rocketmq-all-4.5.2-bin-release/bin/runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

vim /opt/program/rocketmq-all-4.5.2-bin-release/bin/runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m"

启动nameserver和broker

进入 /opt/program/rocketmq-all-4.5.2-bin-release/bin 目录

[root@master bin]# nohup sh mqnamesrv -n 172.16.11.125:9876 &
[1] 2937
[root@master bin]# nohup: 忽略输入并把输出追加到"nohup.out"
  
[root@master bin]# nohup sh mqbroker -n 172.16.11.125:9876 autoCreateTopicEnable=true -c /opt/program/rocketmq-all-4.5.2-bin-release/conf/broker.conf &
[2] 2968
[root@master bin]# nohup: 忽略输入并把输出追加到"nohup.out"

# 查看broker启动配置:
[root@master bin]# sh mqbroker -m
[root@master bin]# jps
3030 Jps
2940 NamesrvStartup
2972 BrokerStartup

关闭namesrv 和 broker

[root@master bin]# sh mqshutdown broker
The mqbroker(2972) is running...
Send shutdown request to mqbroker(2972) OK
[root@master bin]# sh mqshutdown namesrv
The mqnamesrv(2940) is running...
Send shutdown request to mqnamesrv(2940) OK

停止服务的时候需要注意,要先停止broker,其次停止nameserver

安装RocketMQ控制台

启动好服务以后,总得有一个可视化界面来看看我们配置的节点情况吧。rocket官方提供了一个可视化控制台,大家可以在这个地址下载

https://github.com/apache/rocketmq-externalsopen in new window

这个是rocketmq的扩展,里面不仅包含控制台的扩展,也包含对大数据 flume、hbase 等组件的对接和扩展。

下载源码包

https://github.com/apache/rocketmq-externals/archive/master.zipopen in new window

用Maven编译源码

rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true

生成的jar文件目录 rocketmq-externals/rocketmq-console/target/rocketmq-console-ng-1.0.1.jar

运行jar包

java -jar /usr/local/rocketmq/rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr='172.16.11.125:9876'

访问链接

http://192.168.100.129:8080/#/

安装RocketMQ集群

部署环境说明

Linux服务器192.168.162.235、192.168.162.236两台(下文均简称235、236),详细部署环境示意表如下:

IP地址用户名部署角色模式
192.168.162.235rocketMQNameServer1/Brokerserver1Master1
192.168.162.235rocketMQNameServer1/Brokerserver1Master2-Slave
192.168.162.236rocketMQNameServer2/Brokerserver2Master2
192.168.162.236rocketMQNameServer2/Brokerserver2Master1-Slave

每台机器上分别启动一个 NameServer、 Brokerserver, 分别对应 Master1、 Master2

配置hosts

192.168.162.235      nameserver1
192.168.162.235      master1
192.168.162.235      master1-slave1
192.168.162.236      nameserver2
192.168.162.236      master2
192.168.162.236      master2-slave2

配置目录

分别上传rocketmq-all-4.5.2-bin-release.zip到235和236服务器的 /home/rocketMQ/ZHF/rocketMQ-2m2s/ 目录下并解压

创建持久化存储目录

  • Master 目录

    mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store
    mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/commitlog
    mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/consumequeue
    mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/index
    
  • Slave目录

    mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s
    mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/commitlog
    mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/consumequeue
    mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/index
    

修改配置文件

  • 235服务器设置:

    sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a.properties
    sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b-s.properties
    
  • 236服务器设置:

    sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b.properties
    sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a-s.properties
    
  • broker-a.properties文件配置

    #所属集群名字
    brokerClusterName=rocketmq-cluster
    
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-a
    
    #0 表示 Master,>0 表示 Slave
    brokerId=0
    
    #nameServer地址,分号分割
    namesrvAddr=nameserver1:9876;nameserver2:9876
    
    #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
    defaultTopicQueueNums=4
    
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    
    #Broker 对外服务的监听端口
    listenPort=10911
    haListenPort=10912
    
    #删除文件时间点,默认凌晨 4点
    deleteWhen=04
    
    #文件保留时间,默认 48 小时
    fileReservedTime=18
    
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    
    #存储路径
    storePathRootDir=/home/rocketMQ/ZHF/rocketMQ-2m2s/store
    
    #commitLog 存储路径
    storePathCommitLog=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/commitlog
    
    #消费队列存储路径存储路径
    storePathConsumeQueue=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/consumequeue
    
    #消息索引存储路径
    storePathIndex=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/index
    
    #checkpoint 文件存储路径
    storeCheckpoint=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/checkpoint
    
    #abort 文件存储路径
    abortFile=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/abort
    
    #限制的消息大小
    maxMessageSize=65536
    
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    
    #Broker 的角色
    #- ASYNC_MASTER 异步复制Master
    #- SYNC_MASTER 同步双写Master
    #- SLAVE
    brokerRole=SYNC_MASTER
    
    #刷盘方式
    #- ASYNC_FLUSH 异步刷盘
    #- SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    
    #checkTransactionMessageEnable=false
    
    #发消息线程池数量
    #sendMessageThreadPoolNums=128
    
    #拉消息线程池数量
    #pullMessageThreadPoolNums=128
    
    #强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
    brokerIP1=192.168.162.235
    
  • broker-a-s.properties文件配置

    #所属集群名字
    brokerClusterName=rocketmq-cluster
    
    #broker名字,注意此处不同的配置文件填写的不一样
    brokerName=broker-a
    
    #0 表示 Master,>0 表示 Slave
    brokerId=1
    
    #nameServer地址,分号分割
    namesrvAddr=nameserver1:9876;nameserver2:9876
    
    #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
    defaultTopicQueueNums=4
    
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    
    #Broker 对外服务的监听端口
    listenPort=10923
    haListenPort=10924
    
    #删除文件时间点,默认凌晨 4点
    deleteWhen=04
    
    #文件保留时间,默认 48 小时
    fileReservedTime=18
    
    #commitLog每个文件的大小默认1G
    mapedFileSizeCommitLog=1073741824
    
    #ConsumeQueue每个文件默认存30W条,根据业务情况调整
    mapedFileSizeConsumeQueue=300000
    
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    
    #检测物理文件磁盘空间
    diskMaxUsedSpaceRatio=88
    
    #存储路径
    storePathRootDir=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s
    
    #commitLog 存储路径
    storePathCommitLog=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/commitlog
    
    #消费队列存储路径存储路径
    storePathConsumeQueue=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/consumequeue
    
    #消息索引存储路径
    storePathIndex=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/index
    
    #checkpoint 文件存储路径
    storeCheckpoint=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/checkpoint
    
    #abort 文件存储路径
    abortFile=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/abort
    
    #限制的消息大小
    maxMessageSize=65536
    
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushConsumeQueueLeastPages=2#flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    
    #Broker 的角色
    #- ASYNC_MASTER 异步复制Master
    #- SYNC_MASTER 同步双写Master
    #- SLAVE
    brokerRole=SLAVE
    
    #刷盘方式
    #- ASYNC_FLUSH 异步刷盘
    #- SYNC_FLUSH 同步刷盘
    flushDiskType=ASYNC_FLUSH
    
    #checkTransactionMessageEnable=false
    
    #发消息线程池数量
    #sendMessageThreadPoolNums=128
    
    #拉消息线程池数量
    #pullMessageThreadPoolNums=128
    
    #强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
    brokerIP1=192.168.162.235
    
  • broker-b.properties文件配置
    参考 broker-a.properties

  • broker-b-s.properties文件配置
    参考 broker-a-s.properties

启动参数设置

RocketMQ启动文件位于/home/rocketMQ/ZHF/rocketMQ-2m2s/bin/目录下,Linux中nameserver启动文件为:mqnamesrv,broker启动文件为:mqbroker,mqnamesrv和mqbroker启动文件分别调用了runserver.sh和runbroker.sh文件,这两个文件分别设置了nameserver和broker的启动内存,目前内存启动参数分别为nameserver启动内存4G,最大内存4G,新生代2G,broker启动内存8G,最大内存8G,新生代4G。

启动Nameserver

分别启动235、236的Nameserver

cd /home/rocketMQ/ZHF/rocketMQ-2m2s/bin/nohup sh mqnamesrv &

启动Broker

  • 235上Master启动:

    nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a.properties
    
  • 236上Master启动:

    nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b.properties
    
  • 235上对应236Master的Slave启动:

    nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b-s.properti
    
  • 236上对应235Master的Slave启动:

    nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a-s.properti
    

至此,Nameserver、Broker启动完成,可以用jobs命令查看当前运行进程。

参考:

上次编辑于:
贡献者: soulballad