Bootstrap

RocketMQ部署教程

  1. 拉取 RocketMQ 镜像:
    首先,从 Docker Hub 获取最新的 RocketMQ 镜像:
  docker pull apache/rocketmq:latest
  1. 创建 Docker 网络:
    为了使各容器之间能够通信,创建一个名为 rocketmq 的网络:

    docker network create rocketmq
    
  2. 启动 NameServer:
    NameServer 是 RocketMQ 的核心组件之一,负责管理路由信息。使用以下命令启动:

    docker run -d --name rmqnamesrv --network rocketmq -p 9876:9876 apache/rocketmq:latest sh mqnamesrv
    
  3. 配置 Broker:
    为了设置账户密码,需要在 Broker 的配置文件中启用 ACL(访问控制列表)。首先,在主机上创建一个目录来存放配置文件:

    mkdir -p /home/rocketmq/broker/conf
    

    然后,在该目录下创建 broker.conf 文件,内容如下:

    brokerClusterName=DefaultCluster
    brokerName=broker-a
    brokerId=0
    namesrvAddr=rmqnamesrv:9876
    autoCreateTopicEnable=false
    autoCreateSubscriptionGroup=false
    aclEnable=true
    

    请注意,aclEnable=true 用于启用 ACL 功能。

  4. 配置 ACL:
    在同一目录下创建 plain_acl.yml 文件,定义用户的访问权限:

    accounts:
      - accessKey: admin
        secretKey: 123456
        whiteRemoteAddress: 192.168.0.*
        admin: true
        defaultTopicPerm: DENY
        defaultGroupPerm: DENY
    

    上述配置创建了一个用户名为 admin,密码为 123456 的管理员账户,且仅允许来自 192.168.0.* 网段的访问。

  5. 启动 Broker:
    使用以下命令启动 Broker,并挂载配置文件:

    docker run -d --name rmqbroker --network rocketmq -p 10911:10911 -p 10909:10909 -v /home/rocketmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.0/conf/broker.conf -v /home/rocketmq/broker/conf/plain_acl.yml:/home/rocketmq/rocketmq-4.9.0/conf/plain_acl.yml -e "NAMESRV_ADDR=rmqnamesrv:9876" apache/rocketmq:latest sh mqbroker -c /home/rocketmq/rocketmq-4.9.0/conf/broker.conf
    
  6. 部署 RocketMQ 控制台(可选):
    为了方便管理和监控,您可以部署 RocketMQ 控制台。首先,拉取控制台镜像:

    docker pull apacherocketmq/rocketmq-dashboard:latest
    

    然后,启动控制台容器:

    docker run -d --name rmq-dashboard --network rocketmq -p 8080:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Drocketmq.config.loginRequired=true -Drocketmq.config.accessKey=admin -Drocketmq.config.secretKey=123456" apacherocketmq/rocketmq-dashboard:latest
    

    此时,可以通过浏览器访问 http://<主机IP>:8080,使用配置的账户密码登录控制台。

;