Linux(CentOS 7)安装和配置RocketMq集群

RocketMq集群

1.安装RocketMq

1.解压RocketMq
unzip rocketmq45.zip /usr/local/rocketmq

根据实际情况修改内存配置(默认值太大)

vim bin/runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

参数如下:

内存

-Xms 和 -Xmx:设置 JVM 的初始堆大小和最大堆大小。
建议将 -Xms 和 -Xmx设置为相同的值,以避免堆大小动态调整带来的性能开销。

-XX:NewSize 和 -XX:MaxNewSize
:设置年轻代的初始大小和最大大小。年轻代是存放新创建对象的地方,合理设置可减少GC 的频率。

-XX:SurvivorRatio:设置 Eden 区和 Survivor
区的比例。例如:-XX:SurvivorRatio=8 表示 Eden 区与一个
Survivor 区的比例为 8:1。

-XX:MetaspaceSize和*-XX:MaxMetaspaceSize** :设置元空间的初始大小和最大大小。

元空间用于存放类的元数据,合理设置可以避免频繁的元空间垃圾回收。

垃圾回收:

-XX:+UseSerialGC:使用串行垃圾回收器,适用于单核 CPU
或小型应用。

-XX:+UseParallelGC:使用并行垃圾回收器,适用于多核
CPU,适合吞吐量优先的应用。

-XX:+UseConcMarkSweepGC:使用
CMS(并发标记清除)垃圾回收器,适用于低延迟应用。

-XX:+UseG1GC:使用 G1
垃圾回收器,适用于大内存、低延迟的应用。

2.RocketMq集群搭建三种模式

2.1 2m-2s-async(主从异步)

在多master模式的基础上,每个master节点都有至少一个对应的slave。

master节点可读可写,但是slave只能读不能写,类似于mysql的主从模式。

优点:在master宕机时,消费者可以从slave读取消息,消息的实时性不会受影响,性能几乎和多master一样。

缺点:使用异步复制的同步方式有可能会有消息丢失的问题。

2.1.1broker主节点配置

#进入主节点的mq

cd /usr/local/rocketmq


#更改配置文件

vim conf/2m-2s-async/broker-a.properties
brokerClusterName=DefaultCluster

brokerName=broker-a

#0 表示 Master,大于0 表示 Slave

brokerId=0

#Broker 对外服务的监听端口

listenPort=10910

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭

autoCreateSubscriptionGroup=true

deleteWhen=04

fileReservedTime=48

brokerRole=SYNC_MASTER

flushDiskType=ASYNC_FLUSH

storePathRootDir=/usr/local/rocketmq/a_storea #数据存储目录

storePathCommitLog=/usr/local/rocketmq/a_store/commitlog  #提交日志存储目录

#消费队列存储路径存储路径

storePathConsumeQueue=/usr/local/rocketmq/a_store/consumequeue

#消息索引存储路径

storePathIndex=/usr/local/rocketmq/a_store/index

2.1.2启动主节点mq(192.168.1.123)

#进入目录

cd /usr/local/rocketmq/

#创建日志目录

mkdir logs

#运行名称服务器

nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &

#查看启动日志

tail -f -n 30 logs/mqnamesrv.log

#启动消息服务器主节点

nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties -n '192.168.1.123:9876;192.168.1.124:9876' > logs/broker-a.log 2>&1 &

#查看消息服务器主节点启动日志

tail -f -n 30 logs/broker-a.log

2.1.3broker从节点配置

#进入从节点的mq

cd /usr/local/rocketmq

#拷贝配置文件

vim conf/2m-2s-async/broker-a.properties
brokerClusterName=DefaultCluster

brokerName=broker-a

#主从节点的节点名称要一样

#0 表示 Master,大于0 表示 Slave

brokerId=1

#Broker 对外服务的监听端口

listenPort=10911

autoCreateTopicEnable=true

autoCreateSubscriptionGroup=true

deleteWhen=04

fileReservedTime=48

brokerRole=SLAVE

flushDiskType=ASYNC_FLUSH

storePathRootDir=/usr/local/rocketmq/b_storea #数据存储目录

storePathCommitLog=/usr/local/rocketmq/b_store/commitlog #提交日志存储目录

#消费队列存储路径存储路径

storePathConsumeQueue=/usr/local/rocketmq/b_store/consumequeue

#消息索引存储路径

storePathIndex=/usr/local/rocketmq/b_store/index

brokerName" 注:它们共享同一个brokerName,客户端是通过brokerId来区分主机和从机的,

所以不能把主从的brokerName设置得不一样。"

2.1.4启动从节点mq(192.168.1.124)

#进入目录

cd /usr/local/rocketmq/

#创建日志目录

mkdir logs

#运行服务器

nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &

#查看启动日志

tail -f -n 30 logs/mqnamesrv.log

#启动消息服务器从节点

nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties -n '192.168.1.123:9876;192.168.1.124:9876' > logs/broker-b-s.log 2>&1 &

#查看消息服务器从节点启动日志

tail -f -n 30 logs/broker-b-s.log

2.2 2m-2s-sync (主从同步)

同多master多slave异步复制模式类似,区别在于master和slave之间的数据同步方式。

优点:同步双写的同步模式能保证数据不丢失。

缺点:发送单个消息RT会略长,性能相比异步复制低10%左右。

刷盘策略:同步刷盘和异步刷盘(指的是节点自身数据是同步还是异步存储)

同步方式:同步双写和异步复制(指的一组master和slave之间数据的同步)

**注意:**要保证数据可靠,需要采用同步刷盘和同步双写的方式,但性能会较其他方式低。

2.2.1broker主节点配置

#进入主节点的mq

cd /usr/local/rocketmq

#更改配置文件

vim conf/2m-2s-sync/broker-a.properties`
brokerClusterName=DefaultCluster

brokerName=broker-a

#0 表示 Master,大于0 表示 Slave

brokerId=0

#Broker 对外服务的监听端口

listenPort=10911

deleteWhen=04

fileReservedTime=48

brokerRole=SYNC_MASTER

flushDiskType=ASYNC_FLUSH

storePathRootDir=/usr/local/rocketmq/a_storea #数据存储目录

storePathCommitLog=/usr/local/rocketmq/a_store/commitlog  #提交日志存储目录

2.2.2启动主节点mq(192.168.1.123)

#进入目录

cd /usr/local/rocketmq/

#创建日志目录

mkdir logs

#运行名称服务器

nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &

#查看启动日志

tail -f -n 30 logs/mqnamesrv.log

#启动消息服务器主节点

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties -n '192.168.1.123:9876;192.168.1.124:9876' > logs/broker-a.log 2>&1 &

#查看消息服务器主节点启动日志

tail -f -n 30 logs/broker-a.log

2.2.3broker从节点配置

#进入从节点的mq

cd /usr/local/rocketmq

#更改配置文件

vim conf/2m-2s-sync/broker-b-s.properties

br

okerClusterName=DefaultCluster

brokerName=broker-a#主从节点的节点名称要一样

#0 表示 Master,大于0 表示 Slave

brokerId=1

#Broker 对外服务的监听端口

listenPort=10911

deleteWhen=04

fileReservedTime=48

brokerRole=SLAVE

flushDiskType=ASYNC_FLUSH

storePathRootDir=/usr/local/rocketmq/b_store #数据存储目录 

storePathCommitLog=/usr/local/rocketmq/b_store/commitlog#提交日志存储目录

brokerName" 注:它们共享同一个brokerName,客户端是通过brokerId来区分主机和从机的,

所以不能把主从的brokerName设置得不一样。"

2.2.4启动从节点mq(192.168.1.124)

#进入目录

cd /usr/local/rocketmq/

#创建日志目录

mkdir logs

#运行服务器

nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &

#查看启动日志

tail -f -n 30 logs/mqnamesrv.log

#启动消息服务器从节点

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties -n '192.168.1.123:9876;192.168.1.124:9876' > logs/broker-b-s.log 2>&1 &

#查看消息服务器从节点启动日志

tail -f -n 30 logs/broker-b-s.log

2.3 2m-noslave (仅master)

多个master节点组成集群,单个master节点宕机或者重启对应用没有影响。

优点:所有模式中性能最高

缺点:单个master节点宕机期间,未被消费的消息在节点恢复之前不可用,消息的实时性就受到影响。

注意:使用同步刷盘可以保证消息不丢失,同时Topic相对应的queue应该分布在集群中各个节点,而不是只在某节点上,否则,该节点宕机会对订阅该Topic的应用造成影响。

2.1.1broker主节点配置

#进入主节点的mq

cd /usr/local/rocketmq

#更改配置文件

vim conf/2m-noslave/broker-a.properties

brokerClusterName=DefaultCluster

brokerName=broker-a

#0 表示 Master,大于0 表示 Slave

brokerId=0

#Broker 对外服务的监听端口

listenPort=10910

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭

autoCreateSubscriptionGroup=true

deleteWhen=04

fileReservedTime=48

brokerRole=ASYNC_MASTER

#刷盘方式

#- ASYNC\_FLUSH 异步刷盘

#- SYNC\_FLUSH 同步刷盘

flushDiskType=ASYNC_FLUSH

#限制的消息大小

maxMessageSize=65536

storePathRootDir=/usr/local/rocketmq/a_storea #数据存储目录

storePathCommitLog=/usr/local/rocketmq/a_store/commitlog  #提交日志存储目录

#消费队列存储路径存储路径

storePathConsumeQueue=/usr/local/rocketmq/a_store/consumequeue

#消息索引存储路径

storePathIndex=/usr/local/rocketmq/a_store/index

2.1.2启动主节点mq(192.168.1.123)

#进入目录

cd /usr/local/rocketmq/

#创建日志目录

mkdir logs

#运行名称服务器

nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &

#查看启动日志

tail -f -n 30 logs/mqnamesrv.log

#启动消息服务器主节点

nohup sh bin/mqbroker -c conf/2m-noslave/broker-a.properties -n '192.168.1.123:9876;192.168.1.124:9876' > logs/broker-a.log 2>&1 &

#查看消息服务器主节点启动日志

tail -f -n 30 logs/broker-a.log

2.1.2启动主节点mq(192.168.1.124)

#进入主节点的mq

cd /usr/local/rocketmq

#更改配置文件

vim conf/2m-noslave/broker-b.properties

与broker-a.properties唯一不同的就是brokerName属性

brokerName=broker-b

然后启动

#进入目录

cd /usr/local/rocketmq/

#创建日志目录

mkdir logs

#运行名称服务器

nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &

#查看启动日志

tail -f -n 30 logs/mqnamesrv.log

#启动消息服务器主节点

nohup sh bin/mqbroker -c conf/2m-noslave/broker-b.properties -n '192.168.1.123:9876;192.168.1.124:9876' > logs/broker-b.log 2>&1 &

#查看消息服务器主节点启动日志

tail -f -n 30 logs/broker-b.log

2.4 启动管理界面

nohup java -jar /usr/local/rocketmq/rocketmq-console-ng-1.0.1.jar --server.port=7777 --rocketmq.config.namesrvAddr=192.168.1.123:9876;192.168.1.124:9876 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值