欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

CentOS7.4上搭建rocketMQ集群

程序员文章站 2022-06-25 08:13:53
一、rocketMQ集群部署方案优缺点对比:多Master模式(2m-noslave) :一个集群无Slave,全是Master,例如2个Master或者3个Master优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID1 ......
一、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 &