目录
1.服务器列表
2.下载安装包
3.node1节点修改runserver.sh文件
4. 所有节点安装jdk
5. node1节点配置RocketMQ集群
1.配置node1节点borker-a的master配置文件
2.配置node2节点配置borker-a的slave borker-a-s节点
3.配置node3节点配置borker-b的master节点
4.配置node4节点配置borker-b的slave节
6.将配置好的rocketmq打包拷贝到其他三台服务器
7.打开防火墙端口
8.启动nameser
9.启动BrokerServer
1.node2 192.168.1.3
2.node2 192.168.1.9
3.node3 192.168.1.10
4.node4 192.168.1.11
10.在node1节点上安装控制台
11.访问测试
1.服务器列表
name | ip | 远程端口 |
---|---|---|
node4 nameserver broker-b-s | 192.168.1.11 | 22 |
node3 nameserver broker-b | 192.168.1.10 | 22 |
node2 nameserver broker-a-s | 192.168.1.9 | 22 |
node1 nameserver broker-a | 192.168.1.3 | 22 |
2.下载安装包
# 版本4.9.4
链接:https://pan.baidu.com/s/15s6lasTfeMv1rUBrH34XPg
提取码:4545
# 创建文件目录
mkdir -p /data/soft/ && cd /data/soft/
# 创建配置文件目录
mkdir -p /data/soft/rocket/conf
# 创建存储路径
mkdir -p /data/soft/rocket/store/{commitlog,consumequeue,index}
# 修改默认端口
vi /data/soft/rocket/conf/nameser.properties
# 文件内容 默认9876
listenPort=20000
# 查看文件内容
cat /data/soft/rocket/conf/nameser.properties
# 上传 rocketmq-all-4.9.4-bin-release.zip
# 没有rz命令执行: yum -y install lrzsz
rz
# 安装解压工具
yum install -y unzip zip
# 解压rocketmq
unzip rocketmq-all-4.9.4-bin-release.zip
3.node1节点修改runserver.sh文件
RocketMQ默认预设的JVM内存是4G 用runserver.sh、runbroker.sh 、tools.sh编辑这三个脚本,在脚本中找到这一行调整内存大小为256M
# 两处
vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/runserver.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=160m"
vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/runbroker.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/tools.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
4. 所有节点安装jdk
#查看jdk 1.8列表:
yum list java-1.8.0*
#安装jdk 1.8下所有包
yum install java-1.8.0-openjdk* -y
#查看安装结果
java -version
5. node1节点配置RocketMQ集群
下面配置只在node1节点上预先配置好。标题描述为该配置文件在那台服务器上使用
RocketMQ--Dledger集群搭建
RocketMQ--Dledger集群搭建_rocketmq dledger_84岁带头冲锋的博客-CSDN博客
1.配置node1节点borker-a的master配置文件
#192.168.1.3 node1节点配置borker-a的master节点2m-2s-async/broker-a.properties
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties
# 编辑配置文件粘贴下面内容
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties
#所属集群名字,名字一样的节点就在同一个集群内
brokerClusterName=rocketmq-cluster
#broker名字,名字一样的节点就是一组主从节点。
brokerName=broker-a
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.11:20000;192.168.1.10:20000;192.168.1.9:20000;192.168.1.3:20000
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=20001
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/soft/rocket/store/
#commitLog 存储路径
storePathCommitLog=/data/soft/rocket/store//commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/soft/rocket/store/consumequeue
#消息索引存储路径
storePathIndex=/data/soft/rocket/store//index
#checkpoint 文件存储路径
storeCheckpoint=/data/soft/rocket/store/checkpoint
#abort 文件存储路径
abortFile=/data/soft/rocket/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
2.配置node2节点配置borker-a的slave borker-a-s节点
# 192.168.1.9
# 所属集群名字,名字一样的节点就在同一个集群内
# broker名字,名字一样的节点就是一组主从节点。
# brokerid,0就表示是Master,>0的都是表示 Slave
# nameServer地址类似zookeeper
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties
# 编辑配置文件粘贴下面内容
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties
#所属集群名字,名字一样的节点就在同一个集群内
brokerClusterName=rocketmq-cluster
#broker名字,名字一样的节点就是一组主从节点。
brokerName=broker-a
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=namesrvAddr=192.168.1.11:20000;192.168.1.10:20000;192.168.1.9:20000;192.168.1.3:20000
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=20001
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/soft/rocket/store/
#commitLog 存储路径
storePathCommitLog=/data/soft/rocket/store//commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/soft/rocket/store/consumequeue
#消息索引存储路径
storePathIndex=/data/soft/rocket/store//index
#checkpoint 文件存储路径
storeCheckpoint=/data/soft/rocket/store/checkpoint
#abort 文件存储路径
abortFile=/data/soft/rocket/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#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
3.配置node3节点配置borker-b的master节点
##所属集群名字,名字一样的节点就在同一个集群内
##broker名字,名字一样的节点就是一组主从节点。
# 复制5.1内容,修改brokerName=broker-a 为brokerName=broker-b即可
#192.168.1.10
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties
# 复制配置文件
cp /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties
# 修改brokerName=broker-a 为brokerName=broker-b
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties
4.配置node4节点配置borker-b的slave节
###所属集群名字,名字一样的节点就在同一个集群内
###broker名字,名字一样的节点就是一组主从节点。
复制5.2内容,修改brokerName=broker-a 为brokerName=broker-b即可
#192.168.1.11
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties
# 复制配置文件
cp /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties
# 修改brokerName=broker-a 为brokerName=broker-b
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties
6.将配置好的rocketmq打包拷贝到其他三台服务器
tar czvf rocketmq-all-4.9.4-bin-release.tar rocketmq-all-4.9.4-bin-release/
tar czvf rocket.tar rocket/
# 执行拷贝 rocketmq-all-4.9.4-bin-release.tar 文件 root 目标用户名@目标ip:目标目录(/ 根目录)
scp rocketmq-all-4.9.4-bin-release.tar root@192.168.1.11:/data/soft/
scp rocketmq-all-4.9.4-bin-release.tar root@192.168.1.10:/data/soft/
scp rocketmq-all-4.9.4-bin-release.tar root@192.168.1.9:/data/soft/
# 执行拷贝 rocket.tar 文件 root 目标用户名@目标ip:目标目录(/ 根目录)
scp rocket.tar root@192.168.1.11:/data/soft/
scp rocket.tar root@192.168.1.10:/data/soft/
scp rocket.tar root@192.168.1.9:/data/soft/
在这三台服务器上解压上面传输的两个文件
tar xzvf rocketmq-all-4.9.4-bin-release.tar
tar xzvf rocket.tar
ls
7.打开防火墙端口
每个节点都要执行
namesrv只使用了一个9876端口,修改了默认配置改为20000
firewall-cmd --zone=public --add-port=20000/tcp --permanent
broker的服务端口号 修改broker的listenPort端口号为20001
firewall-cmd --zone=public --add-port=20001/tcp --permanent
haListenPort haListenPort是haService中使用
//默认值为:listenPort + 1 这个值是在BrokerStartup.java中设置的
/**
* 影响haservice中AcceptSocketService服务的端口号
* 参考:
* com.alibaba.rocketmq.store.ha.HAService 构造函数中
* this.acceptSocketService =
new AcceptSocketService(defaultMessageStore.getMessageStoreConfig().getHaListenPort());
*/
messageStoreConfig.setHaListenPort(nettyServerConfig.getListenPort() + 1);
firewall-cmd --zone=public --add-port=20002/tcp --permanent
fastListenPort
/**
*主要用于slave同master同步。 默认为:主要是fastRemotingServer服务使用 listenPort - 2
* listenPort - 2 默认 10909
*/
fastConfig.setListenPort(nettyServerConfig.getListenPort() - 2);
this.fastRemotingServer = new NettyRemotingServer(fastConfig, this.clientHousekeepingService)
firewall-cmd --zone=public --add-port=19999/tcp --permanent
# 重启生效
firewall-cmd --reload
8.启动nameser
每台都执行即可下面命令
nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqnamesrv -c /data/soft/rocket/conf/nameser.properties &
9.启动BrokerServer
1.node2 192.168.1.3
nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
2.node2 192.168.1.9
nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &
3.node3 192.168.1.10
nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 &
4.node4 192.168.1.11
nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 &
10.在node1节点上安装控制台
docker pull apacherocketmq/rocketmq-dashboard:latest
docker run -it -d \
--restart=always --privileged=true -m 300m \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.1.3:20000;192.168.1.9:20000;192.168.1.10:20000;192.168.1.11:20000 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 10024:8080 \
pangliang/rocketmq-console-ng
firewall-cmd --zone=public --add-port=10024/tcp --permanent
# 重启生效
firewall-cmd --reload
11.访问测试
192.168.1.3:10024