RocketMQ-4.7.1(二)搭建
2021-02-01 本文已影响0人
_大叔_
一、环境和准备
ip | hosts |
---|---|
10.240.30.102 | node102 |
10.240.30.100 | node100 |
vim /etc/hosts
10.240.30.100 node100
10.240.30.102 node102
下载地址,下载 Binary 文件,上传到服务器然后解压,我下载的比较早是 4.7.1 版本的。
二、创建存储路径
RocketMQ 物理存储的路径
mkdir /home/rocketmq-all-4.7.1/store
mkdir /home/rocketmq-all-4.7.1/store/commitlog
mkdir /home/rocketmq-all-4.7.1/store/consumequeue
mkdir /home/rocketmq-all-4.7.1/store/index
三、配置
修改 broker.conf
vim /home/rocketmq-all-4.7.1/conf/broker.conf
# Broker 对外服务器的监听端口
listenPort=10911
# 集群名称
brokerClusterName = DefaultCluster
# broker名字,不同机器 broker 名字可以是重复的(集群情况),同一机器名字不能一样
brokerName = broker-a
# 表示 Master,> 0 表示 Slave
brokerId = 0
# nameServer 地址,分号分隔 必须设置
namesrvAddr=node102:9876
# brokerIP1 当前broker监听的IP,必须设置
brokerIP1=node102
# brokerIP2 存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
# brokerIP2=node100
# 删除文件时间点,默认时凌晨4点
deleteWhen = 04
# 文件保留时间,默认时48小时
fileReservedTime = 48
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
# 限制消息大小
maxMessageSize=65536
# broker的角色:ASYNC_MASTER(异步复制Master),SYNC_MASTER(同步双写 MASTER),SLAVE
brokerRole = ASYNC_MASTER
# ASYNC_FLUSH(异步刷盘),SYNC_FLUSH(同步刷盘)
flushDiskType = ASYNC_FLUSH
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# commitLog 每个文件的小默认1G
mapedFileSizeCommitLog=1073741824
# consumeQueue 每个文件啊默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# 存储路径
storePathCommitLog=/home/rocketmq-all-4.7.1/store/commitlog
# 消费队列存储历经
storePathConsumeQueue=/home/rocketmq-all-4.7.1/store/consumequeue
# 消息索引存储路径
storePathIndex=/home/rocketmq-all-4.7.1/store/index
四、单机启动
启动前处理
建议测试环境修改堆内存
/home/rocketmq-all-4.7.1/bin/runbroker.sh
/home/rocketmq-all-4.7.1/bin/runserver.sh
# 修改前
# runbroker 的
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
# runserver 的
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
# 修改后
# runbroker 的
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g"
# runserver 的
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
启动 nameserver
nohup sh mqnamesrv &
# 日志查看
tail -f ~/logs/rocketmqlogs/namesrv.log
看到如下表示启动成功
2021-01-29 13:34:15 INFO FileWatchService - FileWatchService service started
启动 broker
nohup sh mqbroker -c /home/rocketmq-all-4.7.1/conf/broker.conf > /dev/null 2>&1 &
# 日志查看
tail -f ~/logs/rocketmqlogs/broker.log
看到如下表示启动成功
2021-01-29 13:34:49 INFO brokerOutApi_thread_1 - register broker[0]to name server node102:9876 OK
2021-01-29 13:34:49 INFO main - The broker[broker-a, node102:10911] boot success. serializeType=JSON and name server is node102:9876
注意开放端口
/sbin/iptables -I INPUT -p tcp --dport 9876 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 10911 -j ACCEPT
五、console 启动
rocketmq 是在linux 上部署的,console 我是在本地启动。
-
下载rocketmq-console项目
-
修改配置文件,被注释的我就不帖了。
server.address=0.0.0.0
server.port=8080
#spring.application.index=true
spring.application.name=rocketmq-console
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
logging.level.root=INFO
logging.config=classpath:logback.xml
# 配置地址
rocketmq.config.namesrvAddr=10.240.30.102:9876
# vip 通道修改成 false,否则会再查看消息的时候报错
rocketmq.config.isVIPChannel=false
#rocketmq-console's data path:dashboard/monitor
rocketmq.config.dataPath=/tmp/rocketmq-console/data
#set it false if you don't want use dashboard.default true
rocketmq.config.enableDashBoardCollect=true
#set the message track trace topic if you don't want use the default one
rocketmq.config.msgTrackTopicName=
rocketmq.config.ticketKey=ticket
- 修改windows的 hosts,win+r C:\WINDOWS\system32\drivers\etc,加入如下
10.240.30.102 node102
很奇怪的是你会发现,你在 console 的配置是 IP:PORT,但是如果没修改 hosts 你会发现部分报错是 connect to node102:10911 failed,集群信息都没办法显示。
- 启动看到如下即为成功
![](https://img.haomeiwen.com/i13859779/ffe3e7a851b5d483.png)
六、双主配置
当我们安装成功之后会看到 rocketmq 的conf目录如下:
2m-2s-async 2m-2s-sync 2m-noslave broker.conf dledger logback_broker.xml logback_namesrv.xml logback_tools.xml plain_acl.yml tools.yml
- 2m-2s-async 双主双从异步复制
- 2m-2s-sync 双主双从同步复制
- 2m-noslave 双主
- 我们也可以自己建立规则如下,内容和其他保持一致即可
[root@node102 conf]# mkdir 4m-4s-async
[root@node102 conf]# ls
2m-2s-async 2m-2s-sync 2m-noslave 4m-4s-async broker.conf dledger logback_broker.xml logback_namesrv.xml logback_tools.xml plain_acl.yml tools.yml
双主配置
修改配置文件
在102修改如下
[root@node102 2m-noslave]# pwd
/home/rocketmq-all-4.7.1/conf/2m-noslave
[root@node102 2m-noslave]# ls
broker-a.properties broker-b.properties broker-trace.properties
[root@node102 2m-noslave]# vim broker-a.properties
100 修改
[root@node102 2m-noslave]# vim broker-b.properties
和单机模式差不多,修改如下:
# 102 是 broker-a 100 是 broker-b
brokerName = broker-a
# nameServer 地址,分号分隔 必须设置
namesrvAddr=node102:9876;node100:9876
# brokerIP1 当前broker监听的IP,必须设置
# brokerIP1=node102
# brokerIP2 存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
# brokerIP2=node100
nameserver 和以上启动方式一样,broker启动方式改为如下
# 100 启动
nohup sh mqbroker -c /home/rocketmq-all-4.7.1/conf/2m-noslave/broker-b.properties > /dev/null 2>&1 &
# 102 启动
nohup sh mqbroker -c /home/rocketmq-all-4.7.1/conf/2m-noslave/broker-a.properties > /dev/null 2>&1 &
# 同样还是查看
tail -f ~/logs/rocketmqlogs/broker.log
看到如下定位启动成功
2021-02-01 10:41:14 INFO brokerOutApi_thread_1 - register broker[0]to name server node102:9876 OK
2021-02-01 10:41:14 INFO brokerOutApi_thread_2 - register broker[0]to name server node100:9876 OK
集群一旦成功,在100的 mqadmin topiclist 中也会看到 102 的 topic,这并非同步。
rocketmq-console 注意
- 在本机hosts添加
10.240.30.100 node100
- 发现在 rocketmq.config.namesrvAddr=10.240.30.102:9876 只写一个ip,依然可以读到集群信息,所以没必要在添加 100
![](https://img.haomeiwen.com/i13859779/d2bdfc94203f2dce.png)