0%

rocketMQ 4.7.1 安装过程(2主2从同步)

rocketMQ 4.7.1 安装过程(2主2从同步)

安装环境

1
2
CentOS 7.5+
JDK 1.8+

服务器规划

1
2
3
4
机器A broker-1(Master) + NameServer
机器B broker-1(Slaver) + NameServer
机器C broker-2(Master) + NameServer
机器D broker-2(Slaver) + NameServer

步骤

如下操作如果没有特殊说明分别在4台机器上都进行相同操作

1.在每台机器安装JDK环境

在4台机器上分别安装jdk1.8,配置基础环境

2.root用户下创建应用用户

在每台机器上创建运行rocketMQ的用户rmq

1
2
$ useradd rmq
$ passwd rmq

3.使用应用用户进行操作rmq

后续所有操作(除配置环境变量外)使用新创建的用户执行

1
$ su rmq

4.上传rocketMQ安装包到4台服务器并解压至/opt/app/rmq

1
2
3
$ unzip rocketmq-all-4.7.1-bin-release.zip -d /opt/app/rmq/ && \
$ mv /opt/app/rmq/rocketmq-all-4.7.1-bin-release/* /opt/app/rmq/ && \
$ rm -r rocketmq-all-4.7.1-bin-release

5.创建相关文件夹

1
$ mkdir -p /opt/app/rmq/store/commitlog

6.给脚本添加执行权限

1
$ chmod a+x /opt/app/rmq/bin/*

7.调整脚本中的参数(根据个人情况修改)

  • vim runserver.sh
  • vim runbroker.sh

8.生成nameServer的配置文件

1
$ mqnamesrv -p | awk -F ' - ' '{print $2}' > /opt/app/rmq/conf/mqnamesrv.conf

修改 mqnamesrv.conf 的 rocketmqHome 为 /opt/app/rmq

修改 mqnamesrv.conf 的 listenPort 为 9876

9.生成broker的配置文件

1
$ mqbroker -p | awk -F ' - ' '{print $2}' > /opt/app/rmq/conf/mqbroker.conf

修改 mqbroker.conf 的 namesrvAddr 字段为 Rmq 集群的地址

修改 mqbroker.conf 的 brokerIP1、brokerIP2 为本机地址

10.启动mqnameserver(必须先启动NameServer,再启动Broker)

NameServer是无状态的,不会相互同步数据

在四台机器每台上安装NameServer,borker配置namesrvAddr为四台机器,用英文封号分割

1
2
$ mkdir -p /opt/app/rmq/logs/
$ nohup mqnamesrv -c /opt/app/rmq/conf/mqnamesrv.conf > /opt/app/rmq/logs/namesrv.log 2>&1 &
  • 观察日志日下
1
2
3
4
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=320m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success.

11.启动mqbroker(以下内容在不同机器区别操作)

  • 机器A,第一个Master

  • 调整配置文件/opt/app/rmq/conf/mqbroker.conf

    1
    2
    3
    4
    5
    6
    7
    8
    brokerClusterName=DefaultCluster
    namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:9876
    brokerName=broker-a # broker master与slaver之间保持一致
    brokerId=0 # master必须为0. slaver不为0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SYNC_MASTER # 同步master
    flushDiskType=ASYNC_FLUSH
1
$ nohup mqbroker autoCreateTopicEnable=true  -c /opt/app/rmq/conf/mqbroker.conf  > /opt/app/rmq/logs/broker.log 2>&1 &
  • 机器B,第一个Slave

    • 调整配置文件/opt/app/rmq/conf/mqbroker.conf

      1
      2
      3
      4
      5
      6
      7
      8
      brokerClusterName=DefaultCluster
      namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:9876
      brokerName=broker-a # broker master与slaver之间保持一致
      brokerId=1 # master必须为0. slaver不为0
      deleteWhen=04
      fileReservedTime=48
      brokerRole=SLAVE # slave
      flushDiskType=ASYNC_FLUSH
1
$ nohup mqbroker autoCreateTopicEnable=true  -c /opt/app/rmq/conf/mqbroker.conf  > /opt/app/rmq/logs/broker.log 2>&1 &
  • 机器C,启动第二个Master

    • 调整配置文件/opt/app/rmq/conf/mqbroker.conf

      1
      2
      3
      4
      5
      6
      7
      8
      brokerClusterName=DefaultCluster
      namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:9876
      brokerName=broker-b # broker master与slaver之间保持一致
      brokerId=0 # master必须为0. slaver不为0
      deleteWhen=04
      fileReservedTime=48
      brokerRole=SYNC_MASTER # 同步master
      flushDiskType=ASYNC_FLUSH
1
$ nohup mqbroker autoCreateTopicEnable=true  -c /opt/app/rmq/conf/mqbroker.conf  > /opt/app/rmq/logs/broker.log 2>&1 &
  • 机器D,第二个Slave

    • 调整配置文件/opt/app/rmq/conf/mqbroker.conf

      1
      2
      3
      4
      5
      6
      7
      8
      brokerClusterName=DefaultCluster
      namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:9876
      brokerName=broker-b # broker master与slaver之间保持一致
      brokerId=1 # master必须为0. slaver不为0
      deleteWhen=04
      fileReservedTime=48
      brokerRole=SLAVE # slave
      flushDiskType=ASYNC_FLUSH
1
$ nohup mqbroker autoCreateTopicEnable=true  -c /opt/app/rmq/conf/mqbroker.conf  > /opt/app/rmq/logs/broker.log 2>&1 &
  • 观察日志如下
1
load config properties file OK, /opt/app/rmq/conf/mqbroker.conf

12.验证是否部署成功

在四台机器中的其中一台执行下列操作,以验证是否部署成功

如果能正常创建topic、并且成功发送消息、消费消息。则认为部署成功

  • 创建topic
1
$ mqadmin updateTopic -n localhost:9876 -b localhost:10911 -t test_topic 
1
2
3
4
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
create topic to localhost:10911 success.
TopicConfig [topicName=test_topic, readQueueNums=8, writeQueueNums=8, perm=RW-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false]
  • 查看topic
1
$ mqadmin topicList -n localhost:9876
1
2
3
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
test_topic
  • 发送消息
1
$ mqadmin sendMessage -n localhost:9876 -t test_topic -p test_body
1
2
3
4
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Broker Name #QID #Send Result #MsgId
DEFAULT_BROKER 4 SEND_OK 0A0AB7440E76330BEDB46AAC709F0000
  • 消费消息
1
$ mqadmin consumeMessage -n localhost:9876 -t test_topic 
1
2
3
4
5
6
7
8
9
10
11
12
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
MessageQueue [topic=test_topic, brokerName=DEFAULT_BROKER, queueId=0] print msg finished. status=NO_NEW_MSG, offset=0
MessageQueue [topic=test_topic, brokerName=DEFAULT_BROKER, queueId=3] print msg finished. status=NO_NEW_MSG, offset=0
Consume ok
MSGID: 0A0AB7440E76330BEDB46AAC709F0000 MessageExt [brokerName=DEFAULT_BROKER, queueId=4, storeSize=185, queueOffset=0, sysFlag=0, bornTimestamp=1621588085920, bornHost=/10.10.183.68:38142, storeTimestamp=1621588085930, storeHost=/10.10.183.68:10911, msgId=0A0AB74400002A9F00000000003F8477, commitLogOffset=4162679, bodyCRC=1590763901, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='test_topic', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=1, UNIQ_KEY=0A0AB7440E76330BEDB46AAC709F0000, CLUSTER=DefaultCluster, WAIT=true}, body=[116, 101, 115, 116, 95, 98, 111, 100, 121], transactionId='null'}] BODY: test_body
MessageQueue [topic=test_topic, brokerName=DEFAULT_BROKER, queueId=4] print msg finished. status=NO_NEW_MSG, offset=1
MessageQueue [topic=test_topic, brokerName=DEFAULT_BROKER, queueId=1] print msg finished. status=NO_NEW_MSG, offset=0
MessageQueue [topic=test_topic, brokerName=DEFAULT_BROKER, queueId=2] print msg finished. status=NO_NEW_MSG, offset=0
MessageQueue [topic=test_topic, brokerName=DEFAULT_BROKER, queueId=7] print msg finished. status=NO_NEW_MSG, offset=0
MessageQueue [topic=test_topic, brokerName=DEFAULT_BROKER, queueId=5] print msg finished. status=NO_NEW_MSG, offset=0
MessageQueue [topic=test_topic, brokerName=DEFAULT_BROKER, queueId=6] print msg finished. status=NO_NEW_MSG, offset=0

13.关闭命令

1
$ mqshutdown broker | namesrv
-------- 本文结束 感谢阅读 --------