1. docker-compose部署

  1. version: '3.5'
  2. services:
  3. rmqnamesrv:
  4. image: foxiswho/rocketmq:server #rocketmq server服务
  5. container_name: rocketmq-nameserver
  6. ports:
  7. - 9876:9876
  8. volumes:
  9. - ./volume/logs:/opt/logs
  10. - ./volume/store:/opt/store
  11. restart: always
  12. networks:
  13. rmq:
  14. aliases:
  15. - rmqnamesrv
  16. rmqbroker:
  17. image: foxiswho/rocketmq:broker #rocketmq broker服务
  18. container_name: rocketmq-broker
  19. ports:
  20. - 10909:10909
  21. - 10911:10911
  22. volumes:
  23. - ./volume/logs:/opt/logs
  24. - ./volume/store:/opt/store
  25. #- ./volume/brokerconf/broker.conf:/etc/rocketmq/broker.conf
  26. - ./volume/brokerconf/:/etc/rocketmq/
  27. environment:
  28. TZ: Asia/Shanghai
  29. NAMESRV_ADDR: "rmqnamesrv:9876"
  30. JAVA_OPTS: " -Duser.home=/opt"
  31. JAVA_OPT_EXT: "-server -Xms512m -Xmx512m -Xmn128m"
  32. command: mqbroker -c /etc/rocketmq/broker.conf
  33. depends_on:
  34. - rmqnamesrv
  35. restart: always
  36. networks:
  37. rmq:
  38. aliases:
  39. - rmqbroker
  40. rmqconsole:
  41. image: styletang/rocketmq-console-ng #rocketmq客户端
  42. container_name: rocketmq-console
  43. ports:
  44. - 8080:8080
  45. environment:
  46. JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
  47. depends_on:
  48. - rmqnamesrv
  49. restart: always
  50. networks:
  51. rmq:
  52. aliases:
  53. - rmqconsole
  54. networks:
  55. rmq:
  56. name: rmq
  57. driver: bridge

a.在执行启动docker-compose up 命令之前需要编写 brokerconf/broker.conf 文件

b.下面列出我的目录结构:

image.png

broker.conf 文件内容

  1. # 所属集群名字
  2. brokerClusterName=DefaultCluster
  3. # broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,
  4. # 在 broker-b.properties 使用: broker-b
  5. brokerName=broker-a
  6. # 0 表示 Master,> 0 表示 Slave
  7. brokerId=0
  8. # nameServer地址,分号分割
  9. # namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
  10. # 启动IP,如果 docker 报 Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <172.25.0.3:10911> failed
  11. # 解决方式1 加上一句 producer.setVipChannelEnabled(false);
  12. # 解决方式2 brokerIP1 设置宿主机IP,不要使用docker 内部IP,默认使用的是内部ip (你自己宿主机的IP,请参考自己)
  13. brokerIP1=192.168.8.102 #这里我们直接给内网的ip
  14. # 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
  15. defaultTopicQueueNums=4
  16. # 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false
  17. autoCreateTopicEnable=true
  18. # 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
  19. autoCreateSubscriptionGroup=true
  20. # Broker 对外服务的监听端口
  21. listenPort=10911
  22. # 删除文件时间点,默认凌晨4点
  23. deleteWhen=04
  24. # 文件保留时间,默认48小时
  25. fileReservedTime=120
  26. # commitLog 每个文件的大小默认1G
  27. mapedFileSizeCommitLog=1073741824
  28. # ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
  29. mapedFileSizeConsumeQueue=300000
  30. # destroyMapedFileIntervalForcibly=120000
  31. # redeleteHangedFileInterval=120000
  32. # 检测物理文件磁盘空间
  33. diskMaxUsedSpaceRatio=88
  34. # 存储路径
  35. #storePathRootDir=/opt/store
  36. # commitLog 存储路径
  37. #storePathCommitLog=/opt/logs/commitlog
  38. # 消费队列存储
  39. #storePathConsumeQueue=/opt/store/consumequeue
  40. # 消息索引存储路径
  41. #storePathIndex=/opt/store/index
  42. # checkpoint 文件存储路径
  43. #storeCheckpoint=/opt/store/checkpoint
  44. # abort 文件存储路径
  45. #abortFile=/opt/store/abort
  46. # 限制的消息大小
  47. maxMessageSize=65536
  48. # flushCommitLogLeastPages=4
  49. # flushConsumeQueueLeastPages=2
  50. # flushCommitLogThoroughInterval=10000
  51. # flushConsumeQueueThoroughInterval=60000
  52. # Broker 的角色
  53. # - ASYNC_MASTER 异步复制Master
  54. # - SYNC_MASTER 同步双写Master
  55. # - SLAVE
  56. brokerRole=SYNC_MASTER
  57. # 刷盘方式
  58. # - ASYNC_FLUSH 异步刷盘
  59. # - SYNC_FLUSH 同步刷盘
  60. flushDiskType=ASYNC_FLUSH
  61. # 发消息线程池数量
  62. sendMessageThreadPoolNums=128
  63. # 拉消息线程池数量
  64. pullMessageThreadPoolNums=128

注意事项:

如果出现了宿主机挂在文件挂在不进去,报错:权限问题:执行 chown -R 3000:3000 ./volume

END

最后我们可以访问下8080端口(这个端口是你在docker-compose.yaml文件中rockermq客户端的端口)
访问地址:http://外网ip:8080/#/
image.png
image.png

出现如图的数据即可算安装成功!!!