RocketMQ 零基础 集群及控制台部署
准备工作:
一、首先准备linux环境 使用了两个虚拟机系统 版本为Centos 7 ip地址固定为192.168.194.128 192.168.194.129
安装好JDK MAVEN 配置好对应环境变量
二、RocketMQ的集群模式有很多种:单Master(可用性低 不安全) 多Master(无Slave) 多Master多Slave
对于有主有从的模式,其中集群的写模式分两种:1)同步双写 主从都写成功后才返回成功 2)异步复制 主写成功后复制给从
本次使用多Master模式搭建 也就是两台机器都为主节点
三、为了方便之后两台机器互相访问 修改两个机器的hosts文件 vim /etc/hosts 增加如下内容
之后重启网络服务 service network restart 并测试是否能成功ping通
开始部署:
一、安装:
首先下载RocketMQ源码包 https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.4.0/rocketmq-all-4.4.0-source-release.zip
然后在linux中用解压 使用maven编译 编译过程耗时五到十分钟左右 编译成功后会在distribution/target/下生成可执行的项目
> unzip rocketmq-all-4.4.0-source-release.zip
> cd rocketmq-all-4.4.0/
> mvn -Prelease-all -DskipTests clean install -U
> cd distribution/target/apache-rocketmq
为了方便我将这个文件夹创建了软连接到/usr/loacl/ 下
二、配置修改
1)在rocketmq下新建了/store /store/commitlog /store/consumequeue /store/index /store/checkpoint /store/abort几个文件夹用来存放mq的一些数据等
2)rocketmq的配置文件在conf文件夹下这里有三个文件夹
是官方提供的三种配置:
2主2从异步 2主2从同步 2主0从
我使用的将是2m-noslave cd到里面看见有两个broker的配置文件 a 和 b 每台机器使用一个配置
如果有三台主机就再在每台机器上加个broker-c.properties
#集群名 要一致
brokerClusterName=rocketmq-cluster
#a配置文件就是broker-a b配置文件就是broker-b
brokerName=broker-a
#为0 是master 若>0 是slave
brokerId=0
#指定namesrv地址
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#默认topic数
defaultTopicQueueNums=4
#是否开启自动创建topic 建议线下开启线上关闭
autoCreateTopicEnable=true
#自动创建订阅组
autoCreateSubscriptionGroup=true
#对外提供服务的端口
listenPort=10911
#每天凌晨4点删除数据
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=30000
diskMaxUsedSpaceRatio=88
#mq的数据 日志等存放位置 store文件夹为自行创建
storePathRootDir=/usr/local/rocketmq/store
storePathCommitLog=/usr/local/rocketmq/store/commitlog
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
storePathIndex=/usr/local/rocketmq/store/index
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
abortFile=/usr/local/rocketmq/store/abort
maxMessageSize=65536
#异步复制的master
brokerRole=ASYNC_MASTER
#异步刷盘
flushDiskType=ASYNC_FLUSH
对b配置文件进行相同的修改 只是brokerName稍有不同 这样两份配置文件除了brokerName不同 其余均相同
3)为了查看日志方便 修改一下rocketmq的日志配置文件
执行 cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml 进行替换
4)虚拟机内存并不多 所以要修改一下rocketmq的jvm启动参数
首先是broker的启动脚本 vim /usr/local/rocketmq/bin/runbroker.sh
将堆的初始化大小与最大大小设为1g 新生代设为512m 这里要注意不能将初始化大小设置太小 最小1g 太小了启动不起来
其次是namesrv的启动脚本 vim /usr/local/rocketmq/bin/runserver.sh 进行同样的修改即可 这样所以配置都完成了
三、启动
1)rocketmq分nameserver与broker 注意启动时需要先启动两台机器的nameserver 再启动broker
关闭时要先关闭broker 再关闭nameserver
2)先进入bin目录: cd /usr/local/rocketmq/bin
其中 mqadnin是管理员命令,mqnamesrv是NameServer,mqbroker是Broker
3)使用守护线程的方式启动两台机器的 nameserver:nohup sh mqnamesrv &
jps查看一下nameserver是否成功启动了
NameSrvStartup对应刚才的命令
4)使用守护线程的方式启动两天机器的broker 这里要注意启动时指定的配置文件是有区别的
192.168.194.128机器上执行:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
192.168.194.129机器上执行:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
第一台使用的broker-a 第二台使用的broker-b配置文件 若要查看启动日志 直接查看本目录下nohup.out文件即可
jps查看
两台机器都成功启动了namesrv和broker
这样集群就搭建完毕了
四、控制台部署
但是rocketmq是不像activemq自带控制台的
为了方便查看集群状态与查看是否成功部署 我们安装一个控制台
下载地址: https://github.com/apache/rocketmq-externals/releases/tag/rocketmq-console-1.0.0
下载成功后 需要改一下配置application.properties
namesrv地址:
端口可以自定义 默认8080
然后使用mvn -package命令打包 我是直接使用的idea打包的 也可以直接使用命令行方式
打包成功后 在target文件夹下会出现一个jar包: rocketmq-console-ng-1.0.0.jar 这就是我们要使用的控制台了
将其放到其中一台机器上 我这里放到了192.168.194.128的 /software/文件夹下 然后
直接后台启动它 nohup java -jar rocketmq-console-ng-1.0.0.jar &
打开浏览器 访问192.168.194.128:8080
在控制台可以查看集群的信息 成功!
- [Silverlight动画]转向行为 - 介绍
- WCF技术剖析之十七:消息(Message)详解(中篇)
- flash游戏引擎整理
- [Silverlight动画]转向行为 - 群落
- [Silverlight动画]转向行为 - 路径跟随
- [Silverlight动画]转向行为 - 漫游行为
- [Silverlight动画]转向行为 - 对象回避
- [mobile开发碎碎念]手机页面上显示PDF文件
- Windows Server 2008 R2 配置AD(Active Directory)域控制器
- ios开发基础知识 - 2
- ios开发基础知识 - 1
- 为UINavigationBar添加自定义背景
- UIScrollView无法响应touches的解决方法
- WCF技术剖析之十七:消息(Message)详解(下篇)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 数据分析(四):Pandas 进阶
- 用 Python 写一个颜值测试小工具
- 当 Python 遇到微信
- CenterNet之loss计算代码解析
- 爬取林丹和赵雅淇的微博评论,看看网友都说了些什么
- 静默安装单机Oracle数据库软件
- 如何用 Python 生成炫酷二维码
- 一个在交流群里讨论过两轮的问题,答案竟然跟一个 PEP 有关
- Python 函数为什么会默认返回 None?
- 潘粤明的《龙岭迷窟》到底怎么样?我用 Python 得出了一些结论!
- [译]按照EIP-712规范签名完成委托和投票
- 更好Solidity合约调试工具: console.log
- 发现了合自己胃口的公众号,但文章太多翻来翻去真麻烦,还好我学了 Python
- 用 Python 下载抖音无水印视频
- 《民国奇探》的弹幕有点逗比,用 Python 爬下来看看