美文网首页
RocketMQ-4.7.1(二)搭建

RocketMQ-4.7.1(二)搭建

作者: _大叔_ | 来源:发表于2021-02-01 11:14 被阅读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 我是在本地启动。

  1. 下载rocketmq-console项目

  2. 修改配置文件,被注释的我就不帖了。

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

  1. 修改windows的 hosts,win+r C:\WINDOWS\system32\drivers\etc,加入如下
10.240.30.102 node102

很奇怪的是你会发现,你在 console 的配置是 IP:PORT,但是如果没修改 hosts 你会发现部分报错是 connect to node102:10911 failed,集群信息都没办法显示。

  1. 启动看到如下即为成功

六、双主配置

当我们安装成功之后会看到 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 注意
  1. 在本机hosts添加
10.240.30.100 node100
  1. 发现在 rocketmq.config.namesrvAddr=10.240.30.102:9876 只写一个ip,依然可以读到集群信息,所以没必要在添加 100

相关文章

网友评论

      本文标题:RocketMQ-4.7.1(二)搭建

      本文链接:https://www.haomeiwen.com/subject/qfqxtltx.html