阿里云轻量服务器--Docker--RocketMq安装

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

前言本文介绍使用docker 部署-RocketMq

1 RocketMq 介绍

Apache RocketMQ是一款开源的分布式消息中间件具有高吞吐量、高可用性、高伸缩性和灵活的可靠消息传输机制等特点。RocketMQ支持多种消息模式包括异步传输、同步传输和单向传输并支持多种订阅模式包括广播模式和集群模式。RocketMQ还提供了丰富的API和管理工具可以轻松地进行消息的发送、订阅和管理。 RocketMQ的主要特点包括

  • 高吞吐量RocketMQ具有高吞吐量的特点每秒可以处理百万级别的消息。

  • 高可用性RocketMQ支持主从模式确保在某个节点故障的情况下仍然能够保证消息的传输。

  • 高可靠性RocketMQ提供了令人信任的可靠消息传输机制通过多种方式确保消息不会丢失和重复。

  • 同步和异步传输RocketMQ支持同步和异步传输两种方式根据业务需要选择合适的方式。

  • 多种订阅模式RocketMQ支持广播模式和集群模式可以根据具体需求选择合适的订阅模式。

-多样化的API和管理工具RocketMQ提供了多样化的API和管理工具方便用户进行消息发送、订阅和管理。

RocketMQ可以广泛应用于分布式系统、大数据处理、在线事物处理等场景是一款值得信赖的开源消息中间件。

2 RocketMq docker-compose 安装

2.1 安装docker-compose如果已经按照跳过该步骤

#通过docker-compose version命令进行查看
docker-compose version
# 如果没有该命令则 走下面步骤进行安装docker-compose
# 1.安装扩展源
sudo yum -y install epel-release

# 2.安装python-pip模块
sudo yum -y install python-pip

# 3.查看docker-compose版本
docker-compose version

# 提示未找到命令
# 4.通过以命令进行安装
cd /usr/local/bin/
wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64
rename docker-compose-Linux-x86_64 docker-compose docker-compose-Linux-x86_64
chmod +x /usr/local/bin/docker-compose
# 5.再通过docker-compose version命令进行查看

2.2 创建文件目录

mkdir rocketmq

# 在rocketmq目录下创建该文件或目录 结构如下
[root@localhost rocketmq]# tree
.
├── conf
│   └── broker.conf
├── docker-compose.yml
├── logs
└── store

3 directories, 2 files

其中conflogs store 为文件夹使用mkdir 命令创建 broker.confdocker-compose.yml为文件使用touch 命令创建

2.3 docker-compose.yml

version: '3.2'
services:
  rmqserver:
    image: foxiswho/rocketmq:server
    container_name: rmqserver
    ports:
      - 9876:9876
    volumes:
      - ./logs:/opt/logs
      - ./store:/opt/store
    networks:
        rmq:
          aliases:
            - rmqserver
 
  rmqbroker:
    image: foxiswho/rocketmq:broker
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
    volumes:
      - ./logs:/opt/logs
      - ./store:/opt/store
      - ./conf/broker.conf:/usr/local/docker/rocketmq/broker.conf
    environment:
        NAMESRV_ADDR: "rmqserver:9876"
        JAVA_OPTS: " -Duser.home=/opt"
        JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
    command: mqbroker -c /usr/local/docker/rocketmq/broker.conf
    depends_on:
      - rmqserver
    networks:
      rmq:
        aliases:
          - rmqbroker
 
  rmqconsole:
    image: styletang/rocketmq-console-ng
    container_name: rmqconsole
    ports:
      - 8089:8080
    environment:
        JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqserver:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    depends_on:
      - rmqserver
    networks:
      rmq:
        aliases:
          - rmqconsole
 
networks:
  rmq:
    driver: bridge

命令解释
version指定本 yml 依从的 compose 哪个版本制定的
services要安装的服务
rmqserverrmqserver服务
imagedocker 镜像
container_name容器名称
ports容器的映射端口号
volumes文件映射
networks配置容器连接的网络
aliases同一网络上的其他容器可以使用服务名称或此别名来连接到对应容器的服务
environment添加环境变量
command:覆盖容器启动的默认命令
depends_on设置依赖关系先启动rmqserver 在启动rmqbroker
driver: bridge 设置网络模式

docker-compose 命令参考https://www.runoob.com/docker/docker-compose.html

2.4 broker.conf内容

censed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
 
 
# 所属集群名字
brokerClusterName=DefaultCluster
 
# broker 名字注意此处不同的配置文件填写的不一样如果在 broker-a.properties 使用: broker-a,
# 在 broker-b.properties 使用: broker-b
brokerName=broker-a
 
# 0 表示 Master> 0 表示 Slave
brokerId=0
 
# nameServer地址分号分割
# namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
 
# 启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed
# 解决方式1 加上一句 producer.setVipChannelEnabled(false);解决方式2 brokerIP1 设置宿主机IP不要使用docker 内部IP
brokerIP1=192.168.0.136
 
# 在发送消息时自动创建服务器不存在的topic默认创建的队列数
defaultTopicQueueNums=4
 
# 是否允许 Broker 自动创建 Topic建议线下开启线上关闭 这里仔细看是 falsefalsefalse
autoCreateTopicEnable=true
 
# 是否允许 Broker 自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGroup=true
 
# Broker 对外服务的监听端口
listenPort=10911
 
# 删除文件时间点默认凌晨4点
deleteWhen=04
 
# 文件保留时间默认48小时
fileReservedTime=120
 
# commitLog 每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
 
# ConsumeQueue 每个文件默认存 30W 条根据业务情况调整
mapedFileSizeConsumeQueue=300000
 
# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store
# commitLog 存储路径
# storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog
# 消费队列存储
# storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue
# 消息索引存储路径
# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index
# checkpoint 文件存储路径
# storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint
# abort 文件存储路径
# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort
# 限制的消息大小
maxMessageSize=65536
 
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
 
# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=ASYNC_MASTER
 
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
 
# 发消息线程池数量
# sendMessageThreadPoolNums=128
# 拉消息线程池数量
# pullMessageThreadPoolNums=128

2.5 启动容器

docker-compose up -d

2.6 访问控制台
添加8099 防护墙端口
在这里插入图片描述

访问 http://ip:8099/
在这里插入图片描述

3 参考

3.1 Docker中安装RocketMQ
3.2 RocketMQ在Docker下的部署

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker服务器