当前位置: 移动技术网 > 科技>操作系统>Linux > CentOS7.4上搭建rocketMQ集群

CentOS7.4上搭建rocketMQ集群

2018年12月21日  | 移动技术网科技  | 我要评论
一、rocketmq集群部署方案优缺点对比:
多master模式(2m-noslave) :
一个集群无slave,全是master,例如2个master或者3个master
优点:配置简单,单个master宕机或重启维护对应用无影响,在磁盘配置为raid10时,即使机器宕机不可恢复情况下,由于raid10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)。性能最高。
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到受到影响。
多master多slave模式,异步复制(2m-2s-async) :
每个master配置一个slave,有多对master-slave,ha采用异步复制方式,主备有短暂消息延迟,毫秒级。
优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为master宕机后,消费者仍然可以从slave消费,此过程对应用透明。不需要人工干预。性能同多master模式几乎一样。
缺点:master宕机,磁盘损坏情况,会丢失少量消息。
多master多slave模式,同步双写(2m-2s-sync)
每个master配置一个slave,有多对master-slave,ha采用同步双写方式,主备都写成功,向应用返回成功。
优点:数据与服务都无单点,master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高
缺点:性能比异步复制模式略低,大约低10%左右,发送单个消息的rt会略高。目前主宕机后,备机不能自动切换为主机,后续会支持自动切换功能。
二、环境
1、版本
jdk:jdk1.8
rocketmq:4.3.2,rocketmq下载地址:wget http://mirror.bit.edu.cn/apache/rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip
rocketmq-console-ng版本:1.0.0
2、角色
rocketmq-console-ng(监控管理):
188.188.10.60:8080
nameserver节点:
188.188.10.60:9876
188.188.10.23:9876
broker:
188.188.10.60:10911 master broker-a
188.188.10.23:10911 slave broker-a
188.188.10.125:10911 master broker-b
188.188.10.209:10911 slave broker-b
3、host解析
vim /etc/hosts
188.188.10.60 broker-a
188.188.10.23 broker-b
三、部署
1、上传rocketmq包,并解压到/usr/local/rocketmq
2、编辑配置文件,默认的配置不能满足我们的需求,需要我们自己添加定制相关的参数,由于我们要部署的是多master多slave的异步方案,所以我们修改或者添加/chj/app/rocketmq/conf/2m-2s-async目录下的配置文件即可(建议在broker的一台节点上把所有的配置文件都撰写好,统一分发到所有节点,保持所有节点的配置文件一致,起服务的时候不同的节点使用不同的配置文件即可,方便后期维护)
a、4个文件的差异配置

 

vim broker-a.properties brokername=broker-a brokerid=0 brokerrole=async_master vim broker-a-s.properties brokername=broker-a brokerid=1 brokerrole=slave vim broker-b.properties brokername=broker-b brokerid=0 brokerrole=async_master vim broker-b-s.properties brokername=broker-b brokerid=1 brokerrole=slave

 

b、除了上面的配置每个配置文件不一样,下面的配置都一样
#所属集群名字 brokerclustername=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样, #brokername=broker-a #0 表示 master,>0 表示 slave #brokerid=0 #nameserver地址,分号分割 namesrvaddr=188.188.10.60:9876;188.188.10.23: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
3、修改日志文件路径
cd /usr/local/rocketmq/conf
sed 's#${user.home}#/usr/local/rocketmq#g' *.xml -i
4、启动
nameserver启动:(两个节点启动方式一样)
nohup sh /usr/local/rocketmq/bin/mqnamesrv >/dev/null 2>&1 &
broker启动:
master-a:
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
slave-a:
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &
master-b:
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 &
slave-b:
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 &
5、rocket-console-ng服务:
nohup java -jar rocketmq-console-ng-1.0.0.jar --server.port=8889 --rocketmq.config.namesrvaddr=188.188.10.60:9876;188.188.10.23:9876 &

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网