外贸网站建设工作计划,wordpress 已登录用户登录,中国移动app免费下载安装,怎么做建设网站搭建RocketMQ主从异步集群
1、RocketMQ集群模式 为了追求更好的性能#xff0c;RocketMQ的最佳实践方式都是在集群模式下完成的。RocketMQ官方提供了三种集群搭建方式#xff1a;
2主2从异步通信方式#xff1a;使用异步方式进行主从之间的数据复制。吞吐量大#xff0c;…搭建RocketMQ主从异步集群
1、RocketMQ集群模式 为了追求更好的性能RocketMQ的最佳实践方式都是在集群模式下完成的。RocketMQ官方提供了三种集群搭建方式
2主2从异步通信方式使用异步方式进行主从之间的数据复制。吞吐量大但可能会丢消息。使用conf/2m-2s-async文件夹内的配置文件做集群配置。2主2从同步通信方式使用同步方式进行主从之间的数据复制保证消息安全投递不会丢失但影响吞吐量。使用conf/2m-2s-sync文件夹内的配置文件做集群配置。2从无从方式会存在单点故障且读的性能没有前两种方式号。使用conf/2m-noslave文件夹内的配置文件做集群配置。Dledger高可用集群上述三种官方提供的集群没办法实现高可用即在master节点挂掉后slave节点没办法自动被选举为新的master而需要人工实现。RocketMQ在4.5版本之后引入了第三方的Dledger高可用集群。
2、搭建主从异步集群
2.1 准备三台Linux服务器
三台Linux服务器中NameServer和Broker之间的关系如下
服务器服务器IPNameServerBroker节点部署服务器1192.168.159.33192.168.159.33:9876服务器2192.168.159.34192.168.159.34:9876broker-a(master)broker-b-s(slave)服务器3192.168.159.35192.168.159.35:9876broker-b(master)broker-a-s(slave) 三台服务器都需要安装JDK和RocketMQ不再赘述。 2.2 启动三台NameServer NameServer是一个轻量级的注册中心Broker把自己的信息注册到NameServer上。而且NameServer是无状态的直接启动即可。三台NameServer之间不需要通信而是被请求来关联三台NameServer的地址。 修改三台服务器的runserver.sh文件将JVM内存默认的4G改为512M。 在每台服务器的bin目录下执行如下命令
服务器1nohup ./mqnamesrv -n 192.168.159.33:9876 服务器2nohup ./mqnamesrv -n 192.168.159.34:9876 服务器3nohup ./mqnamesrv -n 192.168.159.35:9876
2.3 配置Broker broker-abroker-b-s这两台broker是配置在服务器2上broker-b,broker-a-s这两台broker是配置在服务器3上。这两对主从节点在不同的服务器上服务器1上没有部署broker。 需要修改每台broker的配置文件。注意同一台服务器上的两个broker保存路径不能一样。
broker-a的master节点 在服务器2上进入到conf/2m-2s-async文件夹内修改broker-a.properties文件。 配置如下
# 所属集群名称
brokerClusterNameDefaultCluster
# broker名字
brokerNamebroker-a
# broker所在服务器的ip
brokerIP1192.168.159.34
# broker的id 0表示master 0表示slave
brokerId0
# 删除文件时间点默认在凌晨4点
deleteWhen04
# 文件保留时间为48小时
fileReservedTime48
# broker的角色为master
brokerRoleASYNC_MASTER
# 使用异步刷盘的方式
flushDiskTypeASYNC_FLUSH
# 名称服务器的地址列表
namesrvAddr192.168.159.33:9876;192.168.159.34:9876;192.168.159.35:9876
# 在发送消息自动创建不存在的topic时默认创建的队列数为4个
defaultTopicQueueNums4
# 是否允许 Broker自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
# 是否允许 Broker自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
# broker对外服务的监听端口
listenPort10911
# abort文件存储路径
abortFile/usr/local/rocketmq/store/abort
# 消息存储路径
storePathRootDir/usr/local/rocketmq/store
# commitLog存储路径
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
# 限制的消息大小
maxMessageSize65536
# commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
# ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000broker-a的slave节点 在服务器3上进入到conf/2m-2s-async文件夹内修改broker-a-s.properties文件配置如下
brokerClusterNameDefaultCluster
brokerNamebroker-a
brokerIP1192.168.159.35
brokerId1
deleteWhen04
fileReservedTime48
brokerRoleSLAVE
flushDiskTypeASYNC_FLUSH
namesrvAddr192.168.159.33:9876;192.168.159.34:9876;192.168.159.35:9876
defaultTopicQueueNums4
autoCreateTopicEnabletrue
autoCreateSubscriptionGrouptrue
listenPort11011
abortFile/usr/local/rocketmq/store-slave/abort
storePathRootDir/usr/local/rocketmq/store-slave
storePathCommitLog/usr/local/rocketmq/store-slave/commitlog
storePathConsumeQueue/usr/local/rocketmq/store-slave/consumequeue
storePathIndex/usr/local/rocketmq/store-slave/index
storeCheckpoint/usr/local/rocketmq/store-slave/checkpoint
maxMessageSize65536broker-b的master节点 在服务器3上进入到conf/2m-2s-async文件夹内修改broker-b.properties文件。
brokerClusterNameDefaultCluster
brokerNamebroker-b
brokerIP1192.168.159.35
brokerId0
deleteWhen04
fileReservedTime48
brokerRoleASYNC_MASTER
flushDiskTypeASYNC_FLUSH
namesrvAddr192.168.159.33:9876;192.168.159.34:9876;192.168.159.35:9876
defaultTopicQueueNums4
autoCreateTopicEnabletrue
autoCreateSubscriptionGrouptrue
listenPort10911
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
maxMessageSize65536broker-b的slave节点 在服务器2上进入到conf/2m-2s-async文件夹内修改broker-b-s.properties文件。
brokerClusterNameDefaultCluster
brokerNamebroker-b
IP1192.168.159.34
brokerId1
deleteWhen04
fileReservedTime48
brokerRoleSLAVE
flushDiskTypeASYNC_FLUSH
namesrvAddr192.168.159.33:9876;192.168.159.34:9876;192.168.159.35:9876
defaultTopicQueueNums4
autoCreateTopicEnabletrue
autoCreateSubscriptionGrouptrue
listenPort11011
abortFile/usr/local/rocketmq/store-slave/abort
storePathRootDir/usr/local/rocketmq/store-slave
storePathCommitLog/usr/local/rocketmq/store-slave/commitlog
storePathConsumeQueue/usr/local/rocketmq/store-slave/consumequeue
storePathIndex/usr/local/rocketmq/store-slave/index
storeCheckpoint/usr/local/rocketmq/store-slave/checkpoint
maxMessageSize65536修改服务器2和服务器3的runbroker.sh文件将JVM默认内存大小从8G修改为512M。 2.4 启动Broker 在服务器2中启动broker-a(master)和broker-b-s(slave)
nohup ./mqbroker -c ../conf/2m-2s-async/broker-a.properties
nohup ./mqbroker -c ../conf/2m-2s-async/broker-b-s.properties 在服务器3中启动broker-b(master)和broker-a-s(slave)
nohup ./mqbroker -c ../conf/2m-2s-async/broker-b.properties
nohup ./mqbroker -c ../conf/2m-2s-async/broker-a-s.properties 3、验证集群 使用RocketMQ提供的tools工具验证集群是否正常工作。 在服务器上配置环境变量 用于被tools中的生产者和消费者程序读取该变量。 export NAMESRV_ADDR192.168.159.33:9876;192.168.159.34:9876;192.168.159.35:9876启动生产者 ./tools.sh org.apache.rocketmq.example.quickstart.Producer执行之后会看到消息发送。 启动消费者 ./tools.sh org.apache.rocketmq.example.quickstart.Consumer指定上述命令之后可以看到消息被消费。
4、mqadmin管理工具 RocketMQ提供了命令工具用于管理topic、broker、集群、消息等。 比如查看下集群的状态
./mqadmin clusterlist比如使用mqadmin创建topic
./mqadmin updateTopic -n 192.168.159.34:9876 -c DefaultCluster -t myTopic1可以看到topic建立到了DefaultCluster集群下的broker-a(master)和broker-b(master)上边。 mqadmin的命令比较多不太好记下面我们介绍下RocketMQ的可视化管理平台。 5、安装可视化管理控制平台
5.1 RocketMQ-DashBoard安装 Apache RocketMQ官网提供了两种安装方式一种是Docker一种是源码安装。本文采用源码安装方式。 源码地址https://github.com/apache/rocketmq-dashboard 下载并解压切换至源码目录rocketmq-dashboard-master 这里在打包之前需要修改下配置文件application.yml 将NameServer修改为自己集群的地址即可 执行打包命令
mvn clean package -Dmaven.test.skiptrue将target目录下的jar包上传到虚拟机中运行jar包
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar访问192.168.159.33:8080 5.2 踩坑的解决方案 当时maven打包好久都无法成功后来搜了下注释掉frontend-maven-plugin和maven-antrun-plugin这两个plugin后就成功了。 还有一个问题是当时直接在github拉取的rocketmq-dashboard的master分支打包之后的版本为1.0.1对应的是rocketmq的5.x版本如果使用该版本监控rocketmq4.x会有问题查看不了topic的状态。 直接在github上下载1.0.0那个release重新打包即可。