优点:配置简单,单个Master 宕机或重启维护对应用无影响,在磁盘配置为 RAID10 时,即使机器宕机不可恢复情况下,由与 RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢) 。性能最高。
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订 阅,消息实时性会受到受到影响。
### 先启动 NameServer ### 在机器 A,启动第一个 Master ### 在机器 B,启动第二个 Master
一:准备工作
1.软件:
alibaba-rocketmq-3.2.6.tar
rocketmq-console.war
apache-tomcat-7.0.29.tar
jdk1.7
2.系统:linux
两台linux虚拟机,对应的ip如下:
192.168.183.131
192.168.183.134
3.mq解压存放目录
#tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local
# mv alibaba-rocketmq alibaba-rocketmq-3.2.6
# ln -s alibaba-rocketmq-3.2.6 rocketmq
4.tomcat、 jdk位置
[root@131 local]# pwd
/usr/local
[root@131 local]# ll
total 100
drwxr-xr-x. 5 root root 4096 Mar 9 19:34 activemq-cluster
drwxr-xr-x. 11 52583 users 4096 Mar 13 00:00 alibaba-rocketmq-3.2.6
drwxr-xr-x. 9 root root 4096 Mar 10 00:58 apache-tomcat-7.0.29
drwxr-xr-x. 8 uucp 143 4096 Jul 25 2014 jdk1.7
lrwxrwxrwx. 1 root root 22 Mar 12 23:22 rocketmq -> alibaba-rocketmq-3.2.6
drwxr-xr-x. 2 root root 4096 Mar 10 00:57 software
drwxr-xr-x. 11 501 games 4096 Mar 8 23:47 zookeeper
-rw-r--r--. 1 root root 73728 Mar 9 17:53 zookeeper.out
二:配置详情
1.[root@131 local]# vi /etc/hosts
2.[root@134 local]# vi /etc/hosts
配置mq服务在linux上的唯一名称:
131配置如下:
192.168.183.131 rocketmq-nameServer1
192.168.183.131 rocketmq-master1
192.168.183.134 rocketmq-nameServer2
192.168.183.134 rocketmq-master2
134配置如下:
192.168.183.131 rocketmq-nameServer1
192.168.183.131 rocketmq-master1
192.168.183.134 rocketmq-nameServer2
192.168.183.134 rocketmq-master2
对,没有区别!你没看错!!!双主嘛
3.创建存储路径(两台机器一样)
# mkdir /usr/local/rocketmq/store
# mkdir /usr/local/rocketmq/store/commitlog
# mkdir /usr/local/rocketmq/store/consumequeue
# mkdir /usr/local/rocketmq/store/index
4.131 # vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
5.134 # vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
4、5唯一的区别在于131服务器和134服务器配置文件名称a、b,然配置如下:
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a|broker-b (注意:131为a,134为b)
#0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割
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
貌似该第6步了...........
6.修改日志配置文件(两台机器)
# mkdir -p /usr/local/rocketmq/logs
# cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
继续......
7.如果正式环境建议保持默认,虚拟机测试建议配置如下:(同时修改两台机器)
# 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
# cd /usr/local/rocketmq/bin
# nohup sh mqnamesrv &
9. 启动BrokerServer A-131
# cd /usr/local/rocketmq/bin
# nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
10.启动BrokerServerB-134
# cd /usr/local/rocketmq/bin
# nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
11.好的吧,咱们再来一遍tomcat和jdk的配置.....我配置在131的服务器。
/usr/local下的jdk1.7和tomcat7.0事先已经就位,咱们要做的...........
# vim /etc/profile
# /etc/profile
export JAVA_HOME=/usr/local/jdk1.7
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=.:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
#cd /usr/local/apache-tomcat-7.0.29/webapps
#ll
total 24
drwxr-xr-x. 13 root root 4096 Mar 10 00:58 docs
drwxr-xr-x. 6 root root 4096 Mar 10 00:58 examples
drwxr-xr-x. 5 root root 4096 Mar 10 00:58 host-manager
drwxr-xr-x. 5 root root 4096 Mar 10 00:58 manager
drwxr-xr-x. 6 root root 4096 Mar 10 01:08 rocketmq-console
drwxr-xr-x. 3 root root 4096 Mar 10 00:58 ROOT
直接将事先备好的rocketmq-console.war 放进来
#vim /usr/local/apache-tomcat-7.0.29/webapps/rocketmq-console/WEB-INF/classes/config.properties
将地址改成自己的:
rocketmq.namesrv.addr=192.168.183.131:9876;192.168.183.134:9876
访问131服务器的tomcat
http://192.168.183.131:8080/rocketmq-console/
12.数据清理
# 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