RocketMQ 集群搭建--双Master方案
安装环境
jdk1.7
alibaba-rocketmq-3.2.6.tar.gz
VM虚拟机redhat6.5-x64:192.168.1.201 192.168.1.202
Xshell4
部署方案
序号 | IP | 角色 | 模式 |
1 | 192.168.1.201 | nameServer1,brokerServer1 | Master1 |
2 | 192.168.1.202 | nameServer2,brokerServer2 | Master2 |
安装步骤:【两台机器同样操作 以201为例】
步骤一:解压安装文件alibaba-rocketmq-3.2.6.tar.gz
[root@201 rocketmq]# tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local [root@201 rocketmq]# mv alibaba-rocketmq rocketmq
步骤二:修改配置
配置一:创建存储路径 用于存储队列 索引 提交日志等信息
[root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/commitlog [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/consumequeue [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/index
配置二:Hosts添加信息
IP | NAME |
192.168.1.201 | rocketmq-nameserver1 |
192.168.1.201 | rocketmq-master1 |
192.168.1.202 | rocketmq-nameserver2 |
192.168.1.202 | rocketmq-master2 |
[root@201 rocketmq]# vim /etc/hosts
重启网卡:service network restart
相互ping一下,在201机器上ping 192.168.1.202 ping rocketmq-nameserver2 ping rocketmq-master2 。 202机器上也一样。
配置三:RocketMQ配置文件:
/usr/local/rocketmq/conf/2m-noslave/下面默认有两个文件broker-a.properties、broker-b.properties,
我们这里设计的是双Master:一台机器启动一个broker即可,192.168.1.201 使用broker-a.properties 192.168.1.202 使用broker-b.properties
#201
vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
#202 vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 broker-a.properties填broker-a broker-b.properties填broker-b brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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
配置四:修改日志配置文件
[root@201 conf]# mkdir -p /usr/local/rocketmq/logs [root@201 conf]# cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
配置五:修改启动脚本参数 Xms和Xmx至少是1G 否则启动不起来 Xmn一般是前者的一半
vim /usr/local/rocketmq/bin/runbroker.sh 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"
步骤三:启动:先启动两台机器的NameServer,再启动两台机器的Borker,关机的时候顺序相反,先关闭两台机器的Broker,再关闭两台机器的Nameserver。在启动 BrokerServer 之前先关闭防火墙
启动一:NameServer 192.168.1.201 和 192.168.1.202 cd /usr/local/rocketmq/bin nohup sh mqnamesrv & #查看进程 jps #查看日志 tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log #启动二:BrokerServer A 192.168.1.201 cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 & netstat -ntlp jps tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log #启动三:BrokerServer B 192.168.1.202 cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 & netstat -ntlp jps tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
步骤四:停止与重启Rocketmq
#停止 cd /usr/local/rocketmq/bin sh mqshutdown broker sh mqshutdown namesrv #删除数据 rm -rf /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store/commitlog mkdir /usr/local/rocketmq/store/consumequeue mkdir /usr/local/rocketmq/store/index #按照上面步骤重启NameServer与BrokerServer
学习技术不是用来写HelloWorld和Demo的,而是要用来解决线上系统的真实问题的.