RocketMQ多Master多Slave模式部署
2017-02-25 18:05
411 查看
1. 服务器环境入下图所示,四台机器,IP位145为主节点,149是145的从节点。146是主节点,239是146的从节点
序号 IP 用户名 角色 模式
1 192.168.100.145 root nameServer1,brokerServer1 Master1
2 192.168.100.146 root nameServer2,brokerServer2 Master2
3 192.168.100.149 root nameServer3,brokerServer3 Master1-slave1
4 192.168.100.239 root nameServer4,brokerServer4 Master2-slave1
2. Hosts添加信息
IP NAME
192.168.100.145 rocketmq-nameserver1
192.168.100.145 rocketmq-master1
192.168.100.146 rocketmq-nameserver2
192.168.100.146 rocketmq-master2
192.168.100.149 rocketmq-nameserver3
192.168.100.149 rocketmq-master1-slave1
192.168.100.239 rocketmq-nameserver4
192.168.100.239 rocketmq-master2-slave1
3.编辑hosts文件【4台机器】
4.上传解压【4台机器】
5.创建存储路径【4台机器】
6.RocketMQ配置文件【4台机器】--该文件有点类似于Redis里面的redis.con
broker-a.properties文件
broker-a-s.properties文件
broker-b.properties文件
broker-b-s.properties文件
7. 修改启动脚本参数【4台机器】
8.启动NameServer【4台机器】
9.启动BrokerServer 【4台机器】
注意配置文件需要根据实际配置/broker-X.properties
输入jps看到如上图所示表示成功
10.修改tomcat配置文件
启动tomcat:
在浏览器输入:http://192.168.100.145:8080/rocketmq-console/
多Master多Slave可以保证实时消费,比如说:我有一主一从,如果主机宕机,那么我主机上从MQ获得的数据如果在没有从节点,那么这些消息将在主节点重启之前将无法被消费,直到主节点启动,如果们的这个主节点里面有从节点,从节点可以对外提供服务,并且从节点有从主节点同步过来的数据,那么还是可以将这些消息实时地消费掉。这点多Master方式无法做到
现在我模拟145这个节点宕机,但是145的从节点149能继续将消息提供给消费者消费如下图所示
停止服务broker:
当宕机的主节点起来之后,会和从节点进行数据的同步,不会重复消费刚刚消费过的数据。
序号 IP 用户名 角色 模式
1 192.168.100.145 root nameServer1,brokerServer1 Master1
2 192.168.100.146 root nameServer2,brokerServer2 Master2
3 192.168.100.149 root nameServer3,brokerServer3 Master1-slave1
4 192.168.100.239 root nameServer4,brokerServer4 Master2-slave1
2. Hosts添加信息
IP NAME
192.168.100.145 rocketmq-nameserver1
192.168.100.145 rocketmq-master1
192.168.100.146 rocketmq-nameserver2
192.168.100.146 rocketmq-master2
192.168.100.149 rocketmq-nameserver3
192.168.100.149 rocketmq-master1-slave1
192.168.100.239 rocketmq-nameserver4
192.168.100.239 rocketmq-master2-slave1
3.编辑hosts文件【4台机器】
# vi /etc/hosts
4.上传解压【4台机器】
# 上传alibaba-rocketmq-3.2.6.tar.gz文件至/usr/local # tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local # mv alibaba-rocketmq-3.2.6 rocketmq ll /usr/local
5.创建存储路径【4台机器】
# mkdir /usr/local/rocketmq/store # mkdir /usr/local/rocketmq/store/commitlog # mkdir /usr/local/rocketmq/store/consumequeue # mkdir /usr/local/rocketmq/store/index
6.RocketMQ配置文件【4台机器】--该文件有点类似于Redis里面的redis.con
# vim /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties # vim /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties # vim /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties # vim /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties
broker-a.properties文件
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/local/rocketmq/store #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/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
broker-a-s.properties文件
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/local/rocketmq/store #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/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
broker-b.properties文件
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/local/rocketmq/store #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/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
broker-b-s.properties文件
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/usr/local/rocketmq/store #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/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
7. 修改启动脚本参数【4台机器】
# vim /usr/local/rocketmq/bin/runbroker.sh
#============================================================ ================== # 开发环境JVM Configuration #============================================================ ================== JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m"
# vim /usr/local/rocketmq/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m"
8.启动NameServer【4台机器】
# cd /usr/local/rocketmq/bin # nohup sh mqnamesrv &
9.启动BrokerServer 【4台机器】
注意配置文件需要根据实际配置/broker-X.properties
# cd /usr/local/rocketmq/bin # nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
输入jps看到如上图所示表示成功
10.修改tomcat配置文件
启动tomcat:
/usr/local/tomcat/apache-tomcat-7.0.29/bin/startup.sh
在浏览器输入:http://192.168.100.145:8080/rocketmq-console/
多Master多Slave可以保证实时消费,比如说:我有一主一从,如果主机宕机,那么我主机上从MQ获得的数据如果在没有从节点,那么这些消息将在主节点重启之前将无法被消费,直到主节点启动,如果们的这个主节点里面有从节点,从节点可以对外提供服务,并且从节点有从主节点同步过来的数据,那么还是可以将这些消息实时地消费掉。这点多Master方式无法做到
现在我模拟145这个节点宕机,但是145的从节点149能继续将消息提供给消费者消费如下图所示
停止服务broker:
# sh mqshutdown broker
当宕机的主节点起来之后,会和从节点进行数据的同步,不会重复消费刚刚消费过的数据。
相关文章推荐
- MyRocketMQ集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)
- rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)
- Mysql集群安装部署,Slave-Mater-Master-Slave模式
- RocketMQ原理解析-broker 4.HA & master slave
- rocketmq 双master模式
- RocketMQ中多master多slave的环境搭建
- RocketMQ多master多SLAVE配置
- RocketMq集群环境实战(双namesrv、双master、双slave)
- RocketMQ多Master模式
- 部署Hadoop集群前奏之ssh如何不输入密码在Master与Slave之间访问
- solr replication,大部分master-slave模式才能用
- 部署ActiveMQ的Share File System Master-Slave
- ActiveMQ学习笔记(7)——ActiveMQ Master Slave集群配置
- mysql配置master/slave模式
- pgpool-II的master-slave模式的分析
- redis -master/slave(主/从模式)
- OpenLDAP Master/Slave部署
- mysql master/slave 模式
- MySQL master/slave 模式
- MongoDB开启权限认证下配置Master和Slave模式