RocketMQ四种模式安装(单Master模式,多Master模式,多Master多Slave模式-异步复制,多Master多Slave模式-同步双写)

1 RocketMQ安装

官网地址:https://rocketmq.apache.org/

下载地址:https://rocketmq.apache.org/download

本次下载的版本地址:https://dlcdn.apache.org/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip

1.1 单Master模式安装

​ 单Master模式这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用, 可以用于本地测试,下面我们来安装。

​ **步骤一:**将下载下来的文件上传到服务器,并执行解压、重命名

#上传的文件目录
[root@iZm5e8xpme70yxqoa4zoydZ ~]# cd /home/app/
[root@iZm5e8xpme70yxqoa4zoydZ app]# pwd
/home/app
#解压文件
[root@iZm5e8xpme70yxqoa4zoydZ app]# unzip rocketmq-all-4.9.4-bin-release.zip
#重命名
[root@iZm5e8xpme70yxqoa4zoydZ app]# mv rocketmq-all-4.9.4-bin-release rocketmq

​ **步骤二:**修改环境变量,并让变量生效

[root@iZm5e8xpme70yxqoa4zoydZ ~]# vim /etc/profile

​ 在配置文件中增加下面内容:

export ROCKETMQ_HOME=/home/app/rocketmq
export PATH=$PATH:${ROCKETMQ_HOME}/bin

​ 执行下面指令让配置生效:

[root@iZm5e8xpme70yxqoa4zoydZ ~]# source /etc/profile

​ **步骤三:**启动NameServer(本例子演示只做测试使用,可以将JVM的相关参数设置小点)

[root@iZm5e8xpme70yxqoa4zoydZ bin]# pwd
/home/app/rocketmq/bin
[root@iZm5e8xpme70yxqoa4zoydZ bin]# vim runserver.sh

​ 主要修改点如下:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"

​ 启动NameServer

#后台启动
[root@iZm5e8xpme70yxqoa4zoydZ bin]# mqnamesrv &
#查看启动日志
[root@iZm5e8xpme70yxqoa4zoydZ bin]# tail -f ~/logs/rocketmqlogs/namesrv.log

​ **步骤四:**启动Broker,同上面设置NameServer需要将JVM的相关参数进行设置

[root@iZm5e8xpme70yxqoa4zoydZ bin]# pwd
/home/app/rocketmq/bin
[root@iZm5e8xpme70yxqoa4zoydZ bin]# vim runbroker.sh

​ 主要修改点:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"

​ 启动Broker

#启动broker
[root@iZm5e8xpme70yxqoa4zoydZ bin]# mqbroker -n localhost:9876 &
#查看日志
[root@iZm5e8xpme70yxqoa4zoydZ bin]# tail -f ~/logs/rocketmqlogs/broker.log

​ **步骤五:**安装完成后测试

​ 发送消息:

#设置环境变量
[root@iZm5e8xpme70yxqoa4zoydZ bin]# export NAMESRV_ADDR=localhost:9876
#采用脚本发送消息
[root@iZm5e8xpme70yxqoa4zoydZ bin]# tools.sh org.apache.rocketmq.example.quickstart.Producer

​ 消费消息:

#设置环境变量
[root@iZm5e8xpme70yxqoa4zoydZ ~]# export NAMESRV_ADDR=localhost:9876
#消费消息
[root@iZm5e8xpme70yxqoa4zoydZ ~]# tools.sh org.apache.rocketmq.example.quickstart.Consumer 1234

​ **步骤六:**关闭RocketMq

#关闭namesrv
[root@iZm5e8xpme70yxqoa4zoydZ ~]# mqshutdown namesrv
The mqnamesrv(4253) is running...
Send shutdown request to mqnamesrv(4253) OK
#关闭broker
[root@iZm5e8xpme70yxqoa4zoydZ ~]# mqshutdown broker
The mqbroker(5111) is running...
Send shutdown request to mqbroker(5111) OK

1.2 多Master模式安装

​ 一个集群无Slave,全是Master,例如2个Master或者3个Master,这种模式的优缺点如下:

  • 优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;
  • 缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。

​ 本例子中用两台服务器,节点的部署方式如下:

ip 部署NameServer 部署Broker
192.168.43.110 是(MASTER)
192.168.43.111 是(MASTER)

​ **步骤一:**先按照单机版的步骤一至三在上面的两台服务器上面配置RocketMq,先不要启动NameServer

​ **步骤二:**在两台服务器上面分别启动NameServer

#启动NameServer
[dream21th@localhost rocketmq]$ mqnamesrv &
#查看NameServer启动日志
[dream21th@localhost rocketmq]$ tail -f ~/logs/rocketmqlogs/namesrv.log

​ **步骤三:**启动Broker,分别在两台机器上面启动

​ 在192.168.43.110上的启动指令:

#启动broker,192.168.43.110这台服务器启动broker-a.properties这个配置文件
[dream21th@localhost rocketmq]$ mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &
#查看日志
[dream21th@localhost rocketmq]$ tail -f ~/logs/rocketmqlogs/broker.log

broker-a.properties文件的内容:

#集群名称
brokerClusterName=DefaultCluster
#Broker名称
brokerName=broker-a
#Broker的id,master节点是0
brokerId=0
#在每天的什么时间删除已经超过文件保留时间的commit log
deleteWhen=04
#以小时计算的文件保留时间
fileReservedTime=48
#当前broker是一个异步复制master
brokerRole=ASYNC_MASTER
#异步刷盘
flushDiskType=ASYNC_FLUSH

​ 在192.168.43.111上的启动指令:

[root@localhost rocketmq]# mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties &
[root@localhost rocketmq]# tail -f ~/logs/rocketmqlogs/broker.log

broker-b.properties文件的内容:

brokerClusterName=DefaultCluster
#Broker名称
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

​ **步骤四:**查看集群状态

[root@localhost rocketmq]# mqadmin clusterList -n '192.168.43.110:9876;192.168.43.111:9876'
#Cluster Name     #Broker Name            #BID  #Addr                  #Version                #InTPS(LOAD)       #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
DefaultCluster    broker-a                0     192.168.43.110:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462770.87 0.3400
DefaultCluster    broker-b                0     192.168.43.111:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462770.87 0.3800

1.3 多Master多Slave模式-异步复制

​ 每个Master配置一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:

  • 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;
  • 缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

​ 本例子中用四台服务器,节点的部署方式如下:

ip 部署NameServer 部署Broker
192.168.43.110 是(MASTER)
192.168.43.111 是(SLAVE) MASTER节点110
192.168.43.112 是(MASTER)
192.168.43.113 是(SLAVE) MASTER节点112

​ **步骤一:**先按照单机版的步骤一至三在上面的没有安装两台服务器上面配置RocketMq

​ **步骤二:**先停掉192.168.43.110,192.168.43.111两台服务器上面的broker

[dream21th@localhost 2m-noslave]$ mqshutdown broker
The mqbroker(1530) is running...
Send shutdown request to mqbroker(1530) OK

​ **步骤三:**启动Broker,分别在四台机器上面启动

​ 在192.168.43.110上的启动指令:

#启动broker
[dream21th@localhost 2m-noslave]$ mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
#查看启动日志
[dream21th@localhost 2m-noslave]$ tail -f ~/logs/rocketmqlogs/broker.log

broker-a.properties文件的内容:

brokerClusterName=DefaultCluster
#broker名称
brokerName=broker-a
#broker的id
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

​ 在192.168.43.111上的启动指令:

[root@localhost ~]# mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &
[root@localhost ~]# tail -f ~/logs/rocketmqlogs/broker.log

broker-a-s.properties文件的内容:

brokerClusterName=DefaultCluster
#要和主节点名称一致
brokerName=broker-a
#broker的id 要大于0
brokerId=1
deleteWhen=04
fileReservedTime=48
#在集群中的角色
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

​ 在192.168.43.112上的启动指令:

[root@localhost ~]# mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
[root@localhost ~]# tail -f ~/logs/rocketmqlogs/broker.log

broker-b.properties文件的内容:

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

​ 在192.168.43.113上的启动指令:

[root@localhost ~]# mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &
[root@localhost ~]# tail -f ~/logs/rocketmqlogs/broker.log

broker-b-s.properties文件的内容:

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

​ **步骤四:**查看集群状态

[root@localhost ~]# mqadmin clusterList -n '192.168.43.110:9876;192.168.43.111:9876'
#Cluster Name     #Broker Name            #BID  #Addr                  #Version                #InTPS(LOAD)       #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
DefaultCluster    broker-a                0     192.168.43.110:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462772.63 0.3400
DefaultCluster    broker-a                1     192.168.43.111:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462772.63 0.3800
DefaultCluster    broker-b                0     192.168.43.112:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462772.63 0.1900
DefaultCluster    broker-b                1     192.168.43.113:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462772.63 0.1900

1.4 多Master多Slave模式-同步双写

​ 每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:

  • 优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;

  • 缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的RT会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。

    本例子中用四台服务器,节点的部署方式如下:

    ip 部署NameServer 部署Broker
    192.168.43.110 是(MASTER)
    192.168.43.111 是(SLAVE) MASTER节点110
    192.168.43.112 是(MASTER)
    192.168.43.113 是(SLAVE) MASTER节点112

​ **步骤一:**关掉上述服务器中的broker

[root@localhost ~]# mqshutdown broker
The mqbroker(1764) is running...
Send shutdown request to mqbroker(1764) OK

​ **步骤二:**启动Broker,分别在四台机器上面启动

192.168.43.110上的启动指令:

#启动broker
[dream21th@localhost 2m-noslave]$ mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &
#查看启动日志
[dream21th@localhost 2m-noslave]$ tail -f ~/logs/rocketmqlogs/broker.log

broker-a.properties文件的内容:

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
#同步
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH

​ 在192.168.43.111上的启动指令:

[root@localhost ~]# mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &
[root@localhost ~]# tail -f ~/logs/rocketmqlogs/broker.log

broker-a-s.properties文件的内容:

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

​ 在192.168.43.112上的启动指令:

[root@localhost ~]# mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &
[root@localhost ~]# tail -f ~/logs/rocketmqlogs/broker.log

broker-b.properties文件的内容:

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
#同步
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH

​ 在192.168.43.113上的启动指令:

[root@localhost ~]# mqbroker -n '192.168.43.110:9876;192.168.43.111:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &
[root@localhost ~]# tail -f ~/logs/rocketmqlogs/broker.log

broker-b-s.properties文件的内容:

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

​ **步骤四:**查看集群状态

[root@localhost ~]# mqadmin clusterList -n '192.168.43.110:9876;192.168.43.111:9876'
#Cluster Name     #Broker Name            #BID  #Addr                  #Version                #InTPS(LOAD)       #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
DefaultCluster    broker-a                0     192.168.43.110:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462772.90 0.3400
DefaultCluster    broker-a                1     192.168.43.111:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462772.90 0.3800
DefaultCluster    broker-b                0     192.168.43.112:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462772.90 0.1900
DefaultCluster    broker-b                1     192.168.43.113:10911   V4_9_4                   0.00(0,0ms)         0.00(0,0ms)          0 462772.90 0.1900

猜你喜欢

转载自blog.csdn.net/qq_36305027/article/details/127364474