一、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. jsencrypt代码分析

    jsencrypt代码分析——openssl的rsa加密解密在js的实现   在js上做rsa,感觉jsencrypt这个是封装的比较好的,但用起来还是遇到了些坑,所以踩进代码里填填坑- 项目在这里  ...

  2. UISearchBar作为inputAccessoryView时的响应链

    UISearchBar对象做为一个普通的视图对象加入到视图控制器的self.view中,定义.初始化.设置delegate.然后becomeFirstResponder,最后resignFirstRe ...

  3. C++ 句柄类的原理以及设计

    句柄类存在的意义是为了弥补将派生类对象赋给基类对象时发生的切片效应.比如以下的程序: multimap<Base> basket; Base base; Derived derive; b ...

  4. JavaScript探秘:强大的原型和原型链

    // foo 变量是上例中的 for(var i in foo) { if (foo.hasOwnProperty(i)) { console.log(i); } } JavaScript 不包括传统 ...

  5. 操作系统: 二级文件夹文件系统的实现(c/c++语言)

    操作系统的一个课程设计,实现一个二级文件夹文件系统. 用disk.txt模拟磁盘,使用Help查看支持的命令及其操作方式,root为超级用户(写在disk.txt中) 文件的逻辑结构:流式文件. 物理 ...

  6. C# WinForm小程序(技术改变世界-cnblog)

    WinForm小程序(技术改变世界-cnblog)   需求: 1.点击按钮  更新 当前时间 2.输入 身份证,必须身份证 排序(类似银行卡那样的空格),自动生成空格排序 3.实现 必须按 第一个按 ...

  7. java jdk 管理工具

    官网:http://www.jenv.be/ 安装: Linux / OS X $ git clone https://github.com/gcuisinier/jenv.git ~/.jenv M ...

  8. JS中对象按属性排序(冒泡排序)

    在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序. 例如返回的数据结构大概是这样: { result:[ {id:,name:'中国银 ...

  9. max-age 和 Expires

    网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private.no-cache.max-age.must-revalidate等,默认为private.   Ex ...

  10. Android中Button四种点击事件实现方式

    1.Xml添加监听属性,这里添加的doClick. <Button android:id="@+id/bt1" android:layout_width="wrap ...