原文地址:https://blog.csdn.net/kisscatforever/article/details/72810019
在前一篇博客中,小编向大家介绍了如何在Centos7中安装RocketMQ。通过这种方法我们可以搭建出来一台母机,通过这台母机来进行克隆搭建出我们的集群。
Centos7
Jdk1.8
Rocketmq 3.2.6
需要根据《Centos7安装RocketMQ》搭建一台母机
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
可以减少单点故障数量,并且实现了群集化资源的高可用性
一、集群系统可解决所有的服务器硬件故障,当某一台服务器出现任何故障,如:硬盘、内存、CPU、主板、I/O板以及电源故障,运行在这台服务器上的应用就会切换到其它的服务器上。
二、集群系统可解决软件系统问题,我们知道,在计算机系统中,用户所使用的是应用程序和数据,而应用系统运行在操作系统之上,操作系统又运行在服务器上。这样,只要应用系统、操作系统、服务器三者中的任何一个出现故障,系统实际上就停止了向客户端提供服务,比如我们常见的软件死机,就是这种情况之一,尽管服务器硬件完好,但服务器仍旧不能向客户端提供服务。而集群的最大优势在于对故障服务器的监控是基于应用的,也就是说,只要服务器的应用停止运行,其它的相关服务器就会接管这个应用,而不必理会应用停止运行的原因是什么。
三、集群系统可以解决人为失误造成的应用系统停止工作的情况,例如,当管理员对某台服务器操作不当导致该服务器停机,因此运行在这台服务器上的应用系统也就停止了运行。由于集群是对应用进行监控,因此其它的相关服务器就会接管这个应用。
我们部署的mq集群架构是:双主双从。
RocketMQ 网络部署特点:
Name Server 是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。
Broker 部署相对复杂,Broker 分为 Master 与Slave,一个 Master 可以对应多个 Slave,但是一个 Slave 只能对应一个 Master, Master 与Slave 的对应关系通过指定相同的 BrokerName,不同的 BrokerId 来定义, BrokerId 为 0 表示 Master,非 0 表示 Slave。 Master 也可以部署多个。每个 Broker 与Name Server 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 Name Server。
Producer 与 Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从 Name Server 取Topic 路由信息,并向提供 Topic 服务的 Master 建立长连接,且定时向 Master 发送心跳。 Producer 完全无状态,可
集群部署。
Consumer 与 Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从 Name Server 取 Topic 路由信息,并向提供 Topic 服务的 Master、 Slave 建立长连接,且定时向 Master、 Slave 发送心跳。 Consumer既可以从 Master 订阅消息,也可以从 Slave 订阅消息,订阅规则由 Broker 配置决定。
根据《Centos7安装RocketMQ》我们可以搭建一台可以提供服务的mq。以这台做母机,进行克隆。
母机信息如下:
在前面的时候我们搭建好了一台RocketMQ服务器:
Ip | brokerName | 用途 | 角色 |
---|---|---|---|
192.168.137.4 | AresBroker1 | NameServer,Broker | Master |
通过这一台主机克隆出三台机器,修改相应的信息如下:
Ip | brokerName | 用途 | 角色 |
---|---|---|---|
192.168.137.5 | AresBroker1 | NameServer ,Broker | Slave |
192.168.137.6 | AresBroker2 | NameServer ,Broker | Master |
192.168.137.7 | AresBroker2 | NameServer ,Broker | Slave |
依次修改每台主机的hosts文件:
vim /etc/hosts
添加如下信息:
192.168.137.4 mqnameserver1
192.168.137.5 mqnameserver2
192.168.137.6 mqnameserver3
192.168.137.7 mqnameserver4
Master1 - 192.168.137.4的配置:
[root@localhost bin]# vim broker.p
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876;mqnameserver3:9876;mqnameserver4:9876
brokerIP1=192.168.137.4
brokerName=AresBroker1
brokerClusterName=AresCluster
brokerId=0
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true
---------------------
本文来自 AresCarry-王雷 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kisscatforever/article/details/72810019?utm_source=copy
Slave1 - 192.168.137.5的配置(是Master1的从机):
说明:
192.168.137.5是192.168.137.4的从机,所以设置
brokerName=AresBroker1是相同的,
brokerId=1 要大于0,表示是从机,
brokerRole=SLAVE表示身份是从机。
[root@localhost bin]# vim broker.p
namesrvAddr= mqnameserver1:9876; mqnameserver2:9876;mqnameserver3:9876; mqnameserver4:9876
brokerIP1=192.168.137.5
brokerName=AresBroker1
brokerClusterName=AresCluster
brokerId=1
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true
---------------------
本文来自 AresCarry-王雷 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kisscatforever/article/details/72810019?utm_source=copy
Master2-192.168.137.6的配置
说明:
192.168.137.6是另一台主机,
brokerName=AresBroker2 设置名字和另一个主机不一样,
brokerId=0表示为主机,
brokerRole=ASYNC_MASTER表示是主机。
[root@localhost bin]# vim broker.p
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876;mqnameserver3:9876;mqnameserver4:9876
brokerIP1=192.168.137.6
brokerName=AresBroker2
brokerClusterName=AresCluster
brokerId=0
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true
---------------------
本文来自 AresCarry-王雷 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kisscatforever/article/details/72810019?utm_source=copy
Slave2-192.168.137.7配置:
说明:
192.168.137.7是192.168.137.6的从机,配置中,
brokerName=AresBroker2配置的是broker的名字,要和192.168.137.6的brokerName相同,brokerId=1表示是从机,
brokerRole=SLAVE表示从机。
[root@localhost bin]# vim broker.p
namesrvAddr= mqnameserver1:9876; mqnameserver2:9876;mqnameserver3:9876; mqnameserver4:9876
brokerIP1=192.168.137.7
brokerName=AresBroker2
brokerClusterName=AresCluster
brokerId=1
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
rejectTransactionMessage=false
fetchNamesrvAddrByAddressServer=false
storePathRootDir=/root/store
storePathCommitLog=/root/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
deleteWhen=04
fileReservedTime=72
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
haMasterAddress=
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
cleanFileForciblyEnable=true
---------------------
本文来自 AresCarry-王雷 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kisscatforever/article/details/72810019?utm_source=copy
调整目录到alibaba-rocketmq/bin下,
cd /usr/src/rocketmq/alibaba-rocketmq/bin
然后通过
./play.sh
运行,通过运行jps查看服务启动情况。如果两个服务都启动,就可以了。
如果只有NamesrvStartup启动了,可以通过如下命令启动BrokerStartup:
nohup sh mqbroker -c broker.p
通过运行rocketmq-console控制台可以看到:表示搭建成功。
个人理解,只要搭建了一台服务器,就可以很轻松的搭建出集群,通过克隆虚拟机就可以得到相似的机器,然后通过修改broker.p从而达到配置的目的。
再次强调Master 与Slave 的对应关系通过指定相同的 BrokerName,不同的 BrokerId 来定义, BrokerId 为 0 表示 Master,非 0 表示 Slave。
--------------------- 本文来自 AresCarry-王雷 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kisscatforever/article/details/72810019?utm_source=copy