RocketMQ 集群部署
TIP
本文档为手动部署RocketMQ 三节点集群操作手册,三台服务器ip分别为
192.168.204.128
192.168.204.129
192.168.204.1301.设置hosts
shell
#修改hosts文件
vim /etc/hosts192.168.204.128 rocketmq01
192.168.204.129 rocketmq02
192.168.204.130 rocketmq032.关闭防火墙(非必须)
shell
systemctl stop firewalld
systemctl disable firewalld3.安装JDK运行环境
3.1快速安装
shell
yum install -y java-1.8.0-openjdk-devel验证安装结果
shell
java -version3.2手动安装
3.2.1下载OpenJDK
OpenJDK可避免商用问题,推荐下载Eclipse基金会OpenJDK
https://adoptium.net/zh-CN/temurin/releases?version=8&os=any&arch=any&package=jdk
3.2.2上传至服务器
创建安装包存储目录
shell
mkdir -p /data/install上传文件至服务器[/data/install]目录下,文件路径如下所示,请根据实际情况修改
/data/install/OpenJDK8U-jdk_x64_linux_hotspot_8u472b08.tar.gz3.2.3解压
shell
cd /data/install
tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u472b08.tar.gz
#解压后使用ll查看解压后文件夹名字,此处以jdk8u472-b08为示例3.2.4移动解压目录
shell
mv /data/install/jdk8u472-b08 /usr/local/java3.2.5配置环境变量
shell
vim /etc/profile在文件内添加以下内容
shell
export JAVA_HOME=/usr/local/java
export PATH=$PATH:${JAVA_HOME}/bin使环境变量生效
shell
source /etc/profile验证
shell
java -version4.安装RocketMQ
4.1下载安装包
下载地址:
https://archive.apache.org/dist/rocketmq/
4.2上传至服务器
上传文件至服务器[/data/install]目录下,文件路径如下所示,请根据实际情况修改
/data/install/rocketmq-all-5.3.4-bin-release.zip4.3创建工作目录
shell
# 创建总的工作目录
mkdir -p /data/rocketmq-cluster4.4解压并移动
shell
cd /data/install
unzip rocketmq-all-5.3.4-bin-release.zip
mv rocketmq-all-5.3.4-bin-release /data/rocketmq-cluster/rocketmq4.5修改配置(根据硬件配置)
修改nameserver配置
shell
vim /data/rocketmq-cluster/rocketmq/bin/runserver.sh找到以下内容JDK8部分进行修改堆栈内存配置
shell
choose_gc_options()
{
# Example of JAVA_MAJOR_VERSION value : '1', '9', '10', '11', ...
# '1' means releases before Java 9
JAVA_MAJOR_VERSION=$("$JAVA" -version 2>&1 | awk -F '"' '/version/ {print $2}' | awk -F '.' '{print $1}')
if [ -z "$JAVA_MAJOR_VERSION" ] || [ "$JAVA_MAJOR_VERSION" -lt "9" ] ; then
# 【修改点 1:针对 JDK 8】
# 原配置: -Xms4g -Xmx4g -Xmn2g
# 新配置: -Xms512m -Xmx512m -Xmn256m
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
else
# 【修改点 2:针对 JDK 9+】
# 原配置: -Xms4g -Xmx4g
# 新配置: -Xms512m -Xmx512m
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log:time,tags:filecount=5,filesize=30M"
fi
}修改broker配置
shell
vim /data/rocketmq-cluster/rocketmq/bin/runbroker.sh找到以下内容JDK8部分进行修改堆栈内存配置
shell
JAVA_OPT="${JAVA_OPT} -server -Xms1536m -Xmx1536m -Xmn768m"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=512m"4.6生成配置
4.6.1 rocketmq01执行
shell
# 1. 创建目录 (如果已创建会忽略)
mkdir -p /data/rocketmq-cluster/broker01/conf
mkdir -p /data/rocketmq-cluster/broker02/conf
mkdir -p /data/rocketmq-cluster/broker03/conf
# 2. 生成 broker01 配置 (Master)
cat <<EOF > /data/rocketmq-cluster/broker01/conf/broker.conf
brokerClusterName = rocketmq-cluster
brokerName = broker01
listenPort = 20911
brokerIP1 = rocketmq01
namesrvAddr = rocketmq01:9876;rocketmq02:9876;rocketmq03:9876
storePathRootDir = /data/rocketmq-store/broker01/store
storePathCommitLog = /data/rocketmq-store/broker01/store/commitlog
enableDLegerCommitLog = true
dLegerGroup = broker01
dLegerSelfId = n0
dLegerPeers = n0-rocketmq01:20911;n1-rocketmq02:20911;n2-rocketmq03:20911
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
autoCreateTopicEnable = true
EOF
# 3. 生成 broker02 配置 (Slave)
cat <<EOF > /data/rocketmq-cluster/broker02/conf/broker.conf
brokerClusterName = rocketmq-cluster
brokerName = broker02
listenPort = 20915
brokerIP1 = rocketmq01
namesrvAddr = rocketmq01:9876;rocketmq02:9876;rocketmq03:9876
storePathRootDir = /data/rocketmq-store/broker02/store
storePathCommitLog = /data/rocketmq-store/broker02/store/commitlog
enableDLegerCommitLog = true
dLegerGroup = broker02
dLegerSelfId = n2
dLegerPeers = n0-rocketmq02:20915;n1-rocketmq03:20915;n2-rocketmq01:20915
deleteWhen = 04
fileReservedTime = 48
brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
autoCreateTopicEnable = true
EOF
# 4. 生成 broker03 配置 (Slave)
cat <<EOF > /data/rocketmq-cluster/broker03/conf/broker.conf
brokerClusterName = rocketmq-cluster
brokerName = broker03
listenPort = 20919
brokerIP1 = rocketmq01
namesrvAddr = rocketmq01:9876;rocketmq02:9876;rocketmq03:9876
storePathRootDir = /data/rocketmq-store/broker03/store
storePathCommitLog = /data/rocketmq-store/broker03/store/commitlog
enableDLegerCommitLog = true
dLegerGroup = broker03
dLegerSelfId = n1
dLegerPeers = n0-rocketmq03:20919;n1-rocketmq01:20919;n2-rocketmq02:20919
deleteWhen = 04
fileReservedTime = 48
brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
autoCreateTopicEnable = true
EOF