注意上面这个官方架构是 主从模式,还无法做到高可用,因为master节点宕机,从节点没法变成主节点,需要人工重启,够用了。
1. 先准备1台虚拟机,装好1台再克隆2台
根据上面的图,3台机器中有一台是只运行nameserver 不运行broker
2.下载安装jdk1.8和rocketmq ,记得关闭防火墙
下载linux 64位 jdk1.8+(自行百度资源)
## 解压
tar -zxvf jdk-8u144-linux-x64.tar.gz
## 删除安装包
rm -rf jdk-8u144-linux-x64.tar.gz
## 解压
unzip rocketmq-all-4.9.4-bin-release.zip
## 删除安装包
rm -rf rocketmq-all-4.9.4-bin-release.zip
##安装jdk环境变量
vi /etc/profile
```
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_301 #jdk安装目录
export JRE_HOME=/usr/local/jdk/jdk1.8.0_301/jre
export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ROCKETMQ_HOME/bin:$PATH```
source /etc/profile
测试学习需要,修改jvm内存配置,默认的实在太大了
vi runserver.sh
```
-server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m
```
vi runbroker.sh
```
-server -Xms512m -Xmx512m -Xmn256m
```
## 1.进入bin目录执行,-n 表示在那台机器启动nameserver ,将来是给broker 实例注册使用
nohup sh mqnamesrv -n <ip:9876> &
## 2. 查看运行日志,具体日志目录根据自己实际去写
tail -f ~/logs/rocketmqlogs/namesrv.log
或者cat nohup.out
或者jps
## 3. 进入bin目录执行localhost 是安装mq的虚拟机ip ,将broker 注册到nameserver
nohup sh mqbroker -n localhost:9876 &
3.单机测试
# 配置自动创建Topic -->/conf/broker.conf
cd /usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/conf
### 配置环境变量,3台都要配置,IP注意修改
vim /etc/profile
```
export NAMESRV_ADDR=192.168.208.190:9876 #(你的虚拟机ip,端口号一样)
```
source /etc/profile
# 测试发送消息,
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
# 测试消费消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
# 关闭namesrv
sh mqshutdown namesrv
# 关闭broker
sh mqshutdown broker
接下来,就可以快速创建 剩下2个节点
###克隆记得修改ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
```
IPADDR="192.168.208.192"
```
service network restart
### 启动3个节点,在装好第一个节点的文件跨节点拷贝,有密码检验yes --> 密码
scp -rp /usr/local/rocketmq/ 192.168.208.191:/usr/local/rocketmq/
scp -rp /usr/local/rocketmq/ 192.168.208.192:/usr/local/rocketmq/
1. 后续。。。。配置集群配置文件
broker-a.properties
# 所属集群名称
brokerClusterName=DefaultCluster
# broker名称
brokerName=broker-a
# broker所在服务器的ip
brokerIP1=192.168.208.191
# 0-master 大于0-salve
brokerId=0
# 临时文件保留48小时
fileReservedTime=48
# broker的角色是master,而且是异步复制
brokerRole=ASYNC_MASTER
# 使用异步刷盘
flushDiskType=ASYNC_FLUSH
# 注册中心列表(nameserver)
namesrvAddr=192.168.208.190:9876;192.168.208.191:9876;192.168.208.192:9876
# 是否开启Broker自动创建topic (建议线上关闭-false)
autoCreateTopicEnable=true
# 是否开启Broker自动创建订阅组 (建议线上关闭-false)
autoCreateSubscriptionGroup=true
# 如果在发送消息时,自动创建topic,默认创建的队列数为4个(不推荐使用自动创建topic)
defaultTopicQueueNums=4
# broker对外服务的监听端口
listenPort=10911
#####存储配置
abortFile=/usr/local/rocketmq/store/abort
# 消息存储
storePathRootDir=/usr/local/rocketmq/store
# 提交日志
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
# 限制消息大小
maxMessageSize=65536
# commitLog每个文件默认1g
mapedFileSizeCommitLog=10737411824
# consume每个文件默认存30w条,根据业务和机器的配置调整
mapedFileSizeConsumeQueue=300000
broker-b-s.properties
brokerClusterName=DefaultCluster
brokerName=broker-b
# 0-master 大于0-slave
brokerId=1
brokerIP1=192.168.208.191
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.208.190:9876;192.168.208.191:9876;192.168.208.192:9876
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
defaultTopicQueueNums=4
listenPort=11011
#####存储配置
abortFile=/usr/local/rocketmq/store-salve/abort
storePathRootDir=/usr/local/rocketmq/store-slave
storePathCommitLog=/usr/local/rocketmq/store-slave/commitlog
storePathConsumeQueue=/usr/local/rocketmq/store-salve/consumequeue
storePathIndex=/usr/local/rocketmq/store-slave/index
storeCheckpoint=/usr/local/rocketmq/store-slave/checkpoint
maxMessageSize=65536
mapedFileSizeCommitLog=10737411824
mapedFileSizeConsumeQueue=300000
broker-b.properties
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
brokerIP1=192.168.208.192
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.208.190:9876;192.168.208.191:9876;192.168.208.192:9876
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
defaultTopicQueueNums=4
listenPort=10911
#####存储配置
abortFile=/usr/local/rocketmq/store/abort
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
maxMessageSize=65536
mapedFileSizeCommitLog=10737411824
mapedFileSizeConsumeQueue=300000
broker-a-s.properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerIP1=192.168.208.192
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.208.190:9876;192.168.208.191:9876;192.168.208.192:9876
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
defaultTopicQueueNums=4
listenPort=11011
#####存储配置
abortFile=/usr/local/rocketmq/store-salve/abort
storePathRootDir=/usr/local/rocketmq/store-slave
storePathCommitLog=/usr/local/rocketmq/store-slave/commitlog
storePathConsumeQueue=/usr/local/rocketmq/store-salve/consumequeue
storePathIndex=/usr/local/rocketmq/store-slave/index
storeCheckpoint=/usr/local/rocketmq/store-slave/checkpoint
maxMessageSize=65536
mapedFileSizeCommitLog=10737411824
mapedFileSizeConsumeQueue=300000
2.启动集群
# 在bin目录执行,如果配置rocketmq的环境变量,-c 直接配置文件名称
nohup sh mqnamesrv -n 192.169.208.191:9876 &
nohup sh mqbroker -c ../conf/2m-2s-async/broker-a.properties &
nohup sh mqbroker -c ../conf/2m-2s-async/broker-b-s.properties &
jps
3.修改之前的nameserver的地址环境变量
### 配置环境变量,3台都要配置,IP注意修改,记得加单引号 ‘’
vim /etc/profile
```
export NAMESRV_ADDR='192.168.208.190:9876;192.168.208.191:9876;192.168.208.192:9876'
```
source /etc/profile