一、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-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 &

 

CentOS7.4上搭建rocketMQ集群的更多相关文章

  1. nginx的简单使用和使用nginx在windows上搭建tomcat集群

    nginx是一款轻量级的web服务器,常用的作用为服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器 1.为什么我们要使用Nginx? 反向代理: 反向代理(Reverse Proxy ...

  2. 在windows上搭建redis集群

    一 所需软件 Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址   ...

  3. Linux Centos7.5中的RocketMQ集群部署

    系统环境 Docker > centos7.5 此镜像已经安装了jdk1.8和maven3.6.0 如果你想知道这个基础镜像的具体情况, 参考此文: https://www.cnblogs.co ...

  4. Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群

    ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...

  5. 搭建RocketMQ集群

    一.环境及准备 集群环境: 软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 [root@es1 ~]# ...

  6. Kubernetes-在Kubernetes集群上搭建HBase集群

    经过3天的努力,终于在Kubernetes上把HBase集群搭建起来了,搭建步骤如下. 创建HBase镜像   配置文件包含core-site.xml.hbase-site.xml.hdfs-site ...

  7. Centos7上搭建activemq集群和zookeeper集群

    Zookeeper集群的搭建 1.环境准备 Zookeeper版本:3.4.10. 三台服务器: IP 端口 通信端口 10.233.17.6 2181 2888,3888 10.233.17.7 2 ...

  8. centos7上搭建zookeeper集群

    1.下载zookeeper http://www.apache.org/dyn/closer.cgi/zookeeper/  可以登录这个网站下载,然后上传到 centos上 修改成自己需要的版本 , ...

  9. centos7使用kubeadm搭建kubernetes集群

    一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2 ...

随机推荐

  1. 【2014秋季版】【辛星php】【0】清晰的认识一下PHP语言

    *********************PHP情结***************** 1.假设您和我经历非常相似,也可能会有这种PHP情结,为什么呢.由于我最先学习的是Java.然后学习了C++,开 ...

  2. 关于Android开发数据存储的方式(一)

    关于Android开发数据存储方式(一) 在厦门做Android开发也有两个月了,快情人节了.我还在弄代码. 在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下: 整体的来讲.数据存储方 ...

  3. 前端页面a标签嵌套a标签效果的两种解决方案

    这是由工作中的一个小改动需求得到的这个解决方案的:那个需求是这样的,如图: 需求原来是球队名字没有点击功能的,而蓝色方框两队之间的比赛点击的时候会跳转到比赛文字直播页面.现在需要要求点击球队名字要跳转 ...

  4. USB设备驱动之设备初始化(设备枚举)

    USB设备从接入HUB到正常工作之前.都属于设备枚举阶段.所谓设备枚举.就是让host控制器认识USB设备,并为其准备资源.建立好主机与设备间的数据传递机制. 该阶段的工作,是USB通信协议规定的,所 ...

  5. LeetCode 234 Palindrome Linked List(回文链表)(*)(?)

    翻译 给定一个单链表,确定它是否是回文的. 跟进: 你能够在O(n)时间和O(1)空间下完毕它吗? 原文 Given a singly linked list, determine if it is ...

  6. .m文件导入C++头文件带来的错误

    这几天的工作挖了不少的坑.遇到了各种千奇百怪的错误,如今好好总结一下. 新建一个project,然后新建HelloCPP.h,HelloCPP.cpp文件.HelloCPP.h文件内容例如以下: #i ...

  7. 使用OpenCV滑动条写成的简单调色器,实时输出RGB值

    好久没有写博客了,近期在看OpenCV.于是动手写了个简单的RGB调色器,在终端实时输出RGB的值.通过这个程序学习滑动条的使用.程序中主要用到cvCreateTrackbar ,其使用方法例如以下: ...

  8. vim copy,find and replace

    VIM选择文本块/复制/粘贴 在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择.其它相关命令:v:按字符选择.经常使用的模式,所以亲自尝试一下它. V:按 ...

  9. 从vs中删除自带的Microsoft Git Provider

    https://researchaholic.com/2015/02/02/remove-the-microsoft-gitprovider-from-visual-studio-2013/ vs自带 ...

  10. SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

    SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1 ...