rocketmq集群安装部署(多主多从)

RocketMQ集群安装部署(多主多从异步)

官方文档:https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard/

介绍

RocketMQ是一款开源的分布式消息中间件,它具有很多特性:

1、分布式、高可用

2、高吞吐、低延时

3、多种消息模式(顺序消费、定时消费、事务消费等)

4、亿级消息堆积能力

5、消息容错机制

安装前准备(三台都要安装)

JDK8

RocketMQ二进制安装包rocketmq-all-4.5.0-bin-release.zip 官方下载地址:http://rocketmq.apache.org/dowloading/releases/

RocketMQ console监控rockemq-console,需要下载源码自行打jar包 GitHub下载地址:https://github.com/apache/rocketmq-externals

tar -zxvf jdk1.8.0_171.liunx64.tar.gz

vim /etc/profile
export JAVA_HOME=/home/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:${CLASSPATH}
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
source /etc/profile

ln -s /home/jdk1.8.0_171/bin/java /bin       #启动服务会报错 执行这条

wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz

vim /etc/profile
export MAVEN_HOME=/opt/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
source /etc/profile

wget https://mirror.bit.edu.cn/apache/rocketmq/4.8.0/rocketmq-all-4.8.0-source-release.zip
unzip rocketmq-all-4.8.0-source-release.zip
mv rocketmq-all-4.8.0-source-release rocketmq-all-4.8.0
cd rocketmq-all-4.8.0
mvn -Prelease-all -DskipTests clean install -U    #编译
cd distribution/target/rocketmq-4.8.0/
cp -r rocketmq-all-4.8.0 /home/                   #把编译好的文件拷出来 单独用

部署方式

RocketMQ有三种部署方式:

1、2m-2s-async。多主多从异步复制

2、2m-2s-sync。多主多从同步复制

3、2m-noslave。多主无从

本文介绍2m-2s-async多主多从异步复制集群安装方式,集群包含三台节点,各节点Broker分布情况:

 | 节点         | 主服务    | 从服务      |
 | :---:        | :---:    | :---:      |
 | 10.200.0.58  | broker-a | broker-b-s |
 | 10.200.0.123 | broker-b | broker-c-s |
 | 10.200.0.6   | broker-c | broker-a-s |

修改配置文件,位于conf目录下2m-2s-async配置文件

节点一:修改broker-a.properties、broker-b-s.properties

节点二:修改broker-b.properties、broker-c-s.properties

节点三:修改broker-c.properties、broker-a-s.properties

broker-a.properties配置文件内容:

brokerClusterName=DefaultCluster                                 #集群的名字
brokerName=broker-a                                              #broker名字
brokerId=0                                                       #0 表示master >1 表示slave
namesrvAddr=10.200.0.58:9876;10.200.0.123:9876;10.200.0.6:9876   #nameserver地址,分号隔开
listenPort=10911                                                 #broker对外服务监听端口
deleteWhen=04                                                    #删除文件时间点,默认凌晨 4点
fileReservedTime=48                                              #文件保留时间,默认 48 小时
storePathRootDir=/data/rocketmq/store-a                          #存储路径
storePathCommitLog=/data/rocketmq/commitlog-a                    #commitLog 存储路径
storePathConsumeQueue=/data/rocketmq/consumequeue-a              #消费队列存储路径存储路径
brokerRole=ASYNC_MASTER                                          #Broker 三种角色- ASYNC_MASYNC_MASTER 异步双写
flushDiskType=ASYNC_FLUSH

以下配置我 未添加:
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#文件磁盘最大利用率
diskMaxUsedSpaceRatio=88
#限制的消息大小
maxMessageSize=65536	

broker-a-s.properties配置文件内容:

brokerClusterName=DefaultCluster                                 #集群的名字
brokerName=broker-a                                              #broker名字
brokerId=1                                                       #0 表示master >1 表示slave
namesrvAddr=10.200.0.58:9876;10.200.0.123:9876;10.200.0.6:9876   #nameserver地址,分号隔开
listenPort=10915                                                 #broker对外服务监听端口注:端口会产生3个端口号 要与master端口隔开2个填写
slaveReadEnable=true                                             #从允许读                                      
deleteWhen=04                                                    #删除文件时间点,默认凌晨 4点
fileReservedTime=48                                              #文件保留时间,默认 48 小时
storePathRootDir=/data/rocketmq/store-a-s                        #存储路径
storePathCommitLog=/data/rocketmq/commitlog-a-s                  #commitLog 存储路径
storePathConsumeQueue=/data/rocketmq/consumequeue-a-s            #消费队列存储路径存储路径         
brokerRole=SLAVE                                                 #Broker 三种角色- SLAVE 备
flushDiskType=ASYNC_FLUSH

broker-b.properties配置文件内容:

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
namesrvAddr=10.200.0.58:9876;10.200.0.123:9876;10.200.0.6:9876
listenPort=10911
deleteWhen=04
fileReservedTime=48
storePathRootDir=/data/rocketmq/store-b
storePathCommitLog=/data/rocketmq/commitlog-b
storePathConsumeQueue=/data/rocketmq/consumequeue-b
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

broker-b-s.properties配置文件内容:

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
namesrvAddr=10.200.0.58:9876;10.200.0.123:9876;10.200.0.6:9876
listenPort=10915
slaveReadEnable=true
deleteWhen=04
fileReservedTime=48
storePathRootDir=/data/rocketmq/store-b-s
storePathCommitLog=/data/rocketmq/commitlog-b-s
storePathConsumeQueue=/data/rocketmq/consumequeue-b-s
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

broker-c.properties配置文件内容:

brokerClusterName=DefaultCluster
brokerName=broker-c
brokerId=0
namesrvAddr=10.200.0.58:9876;10.200.0.123:9876;10.200.0.6:9876
listenPort=10911
deleteWhen=04
fileReservedTime=48
storePathRootDir=/data/rocketmq/store-c
storePathCommitLog=/data/rocketmq/commitlog-c
storePathConsumeQueue=/data/rocketmq/consumequeue-c
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

broker-c-s.properties配置文件内容:

brokerClusterName=DefaultCluster
brokerName=broker-c
brokerId=1
namesrvAddr=10.200.0.58:9876;10.200.0.123:9876;10.200.0.6:9876
listenPort=10915
slaveReadEnable=true
deleteWhen=04
fileReservedTime=48
storePathRootDir=/data/rocketmq/store-c-s
storePathCommitLog=/data/rocketmq/commitlog-c-s
storePathConsumeQueue=/data/rocketmq/consumequeue-c-s
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

创建日志文件

节点1:cd /data
	  mkdir rocketmq
	  cd rocketmq
      mkdir store-a commitlog-a consumequeue-a store-b-s commitlog-b-s consumequeue-b-s

节点2:cd /data
	  mkdir rocketmq
	  cd rocketmq
      mkdir store-b commitlog-b consumequeue-b store-c-s commitlog-c-s consumequeue-c-s

节点3:cd /data
	  mkdir rocketmq
	  cd rocketmq
      mkdir store-c commitlog-c consumequeue-c store-a-s commitlog-a-s consumequeue-a-s

修改内存配置

vim /home/rocketmq-all-4.8.0/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

vim /home/rocketmq-all-4.8.0/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m"

vim /home/rocketmq-all-4.8.0/bin/tools.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

节点 1,2,3 启动服务报错 需修改

启动各节点服务

写入系统启动服务

节点1:启动nameserver
vim /lib/systemd/system/rocketmq-nameserver.service

[Unit]
Description=rocketmq-nameserver
After=network.target

[Service]
User=root
Type=simple
ExecStart=/bin/sh /home/rocketmq-all-4.8.0/bin/mqnamesrv
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
PrivateTmp=true

[Install]
WantedBy=multi-user.target

以上节点1,2,3 内容不变相同

节点1:启动broker0为主 broker1为备
vim /lib/systemd/system/rocketmq-broker0.service

[Unit]
Description=rocketmq-broker0
After=network.target

[Service]
User=root
Type=simple
ExecStart=/home/rocketmq-all-4.8.0/bin/mqbroker -c /home/rocketmq-all-4.8.0/conf/2m-2s-async/broker-a.properties
ExecStop=/home/rocketmq-all-4.8.0/bin/mqshutdown broker
Restart=always
PrivateTmp=true

[Install]
WantedBy=multi-user.target

vim /lib/systemd/system/rocketmq-broker1.service

[Unit]
Description=rocketmq-broker1
After=network.target

[Service]
User=root
Type=simple
ExecStart=/home/rocketmq-all-4.8.0/bin/mqbroker -c /home/rocketmq-all-4.8.0/conf/2m-2s-async/broker-b-s.properties
ExecStop=/home/rocketmq-all-4.8.0/bin/mqshutdown broker
Restart=always
PrivateTmp=true

[Install]
WantedBy=multi-user.target

节点1,2,3 Description 和 ExecStart 内容变化 以此内推

节点1:
      /home/rocketmq-all-4.8.0/bin/mqbroker -c /home/rocketmq-all-4.8.0/conf/2m-2s-async/broker-a.properties
      /home/rocketmq-all-4.8.0/bin/mqbroker -c /home/rocketmq-all-4.8.0/conf/2m-2s-async/broker-b-s.properties

节点2:
      /home/rocketmq-all-4.8.0/bin/mqbroker -c /home/rocketmq-all-4.8.0/conf/2m-2s-async/broker-b.properties
      /home/rocketmq-all-4.8.0/bin/mqbroker -c /home/rocketmq-all-4.8.0/conf/2m-2s-async/broker-c-s.properties

节点3:
      /home/rocketmq-all-4.8.0/bin/mqbroker -c /home/rocketmq-all-4.8.0/conf/2m-2s-async/broker-c.properties
      /home/rocketmq-all-4.8.0/bin/mqbroker -c /home/rocketmq-all-4.8.0/conf/2m-2s-async/broker-a-s.properties

启动
systemctl start rocketmq-nameserver
systemctl start rocketmq-broker0
systemctl start rocketmq-broker1


查看状态
systemctl status ...

查看日志
journalctl -xeu rocketmq-nameserver

web管理界面

  1. docker 镜像安装

    ① 安装docker,拉取 rocketmq-dashboard 镜像

    docker pull apacherocketmq/rocketmq-dashboard:latest

    ② docker 容器中运行 rocketmq-dashboard

    docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest

    提示
    namesrv.addr:port 替换为 rocketmq 中配置的 nameserver 地址:端口号

    开放端口号:8080,9876,10911,11011 端口

    云服务器:设置安全组访问规则
    本地虚拟机:关闭防火墙,或 -add-port

  2. 源码安装

    源码地址:apache/rocketmq-dashboard

    cd /opt/
    scp root@10.249.X.X:/opt/rocketmq-console-ng-2.0.0.jar /opt/
    web管理包已编译 直接拷贝过来使用

    加入系统启动
    vim /lib/systemd/system/rocketmq-console.service

    [Unit]
    Description=rocketmq-console
    After=syslog.target network.target remote-fs.target nss-lookup.target

    [Service]
    User=root
    Type=simple
    ExecStart=/home/JDK/jdk1.8.0_171/bin/java -jar /opt/rocketmq-console-ng-2.0.0.jar --server.port=8080 --rocketmq.config.namesrvAddr=10.249.0.58:9876;10.249.0.123:9876;10.249.0.6:9876
    ExecStop=ps -ef|grep rocketmq-console-ng-2.0.0.jar|grep -v grep|awk '{print $2}'
    Restart=always
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target

    启动命令
    systemctl start rocketmq-console

测试登入http://ip:8080

posted @ 2021-02-22 14:45  記憶や空白  阅读(704)  评论(0编辑  收藏  举报