安装nameserver

  1. # 拉取镜像
  2. docker pull rocketmqinc/rocketmq
  3. # 创建挂载目录
  4. mkdir -p /docker/rocketmq/nameserver/logs /docker/rocketmq/nameserver/store
  5. # 启动nameserver
  6. docker run -d \
  7. --restart=always \
  8. --name rmqnamesrv \
  9. --privileged=true \
  10. -p 9876:9876 \
  11. -v /docker/rocketmq/nameserver/logs:/root/logs \
  12. -v /docker/rocketmq/nameserver/store:/root/store \
  13. -e "MAX_POSSIBLE_HEAP=100000000" \
  14. rocketmqinc/rocketmq \
  15. sh mqnamesrv
  • 参数说明
参数 说明
-d 以守护进程的方式启动
- -restart=always docker重启时候容器自动重启
- -name rmqnamesrv 把容器的名字设置为rmqnamesrv
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
-v /docker/rocketmq/nameserver/logs:/root/logs 目录挂载
-v /docker/rocketmq/nameserver/store 目录挂载
rmqnamesrv 容器的名字
-e “MAX_POSSIBLE_HEAP=100000000” 设置容器的最大堆内存为100000000
rocketmqinc/rocketmq 使用的镜像名称
sh mqnamesrv

安装broker

  1. mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf
  2. vi /docker/rocketmq/conf/broker.conf
  3. # 所属集群名称,如果节点较多可以配置多个
  4. brokerClusterName=DefaultCluster
  5. # broker名称,master和slave使用相同的名称,表明他们的主从关系
  6. brokerName=broker-a
  7. # 0表示Master,大于0表示不同的slave
  8. brokerId=0
  9. #nameServer地址,分号分割
  10. namesrvAddr=nameserver1:9876;nameserver2:9876
  11. #是否允许 Broker 自动创建Topic,建议生产环境中关闭
  12. autoCreateTopicEnable=true
  13. #是否允许 Broker 自动创建订阅组,建议生产环境中关闭
  14. autoCreateSubscriptionGroup=true
  15. #默认为新建Topic所创建的队列数
  16. defaultTopicQueueNums=4
  17. # 表示几点做消息删除动作,默认是凌晨4点
  18. deleteWhen=04
  19. # 在磁盘上保留消息的时长,单位是小时
  20. fileReservedTime=48
  21. #指定commitLog目录中每个文件的大小,默认1G
  22. mapedFileSizeCommitLog=1073741824
  23. #指定ConsumeQueue的每个Topic的每个Queue文件中可以存放的消息数量,默认30w条
  24. mapedFileSizeConsumeQueue=300000
  25. #在清除过期文件时,如果该文件被其他线程所占用(引用数大于0,比如读取消息),此时会阻止此次删除任务,同时在第一次试图删除该文件时记录当前时间戳。该属性则表示从第一次拒绝删除后开始计时,该文件最多可以保留的时长。在此时间内若引用数仍不为0,则删除仍会被拒绝。不过时间到后,文件将被强制删除
  26. destroyMapedFileIntervalForcibly=120000
  27. # Broker 对外服务的监听端口
  28. # listenPort参数是broker的监听端口号,是remotingServer服务组件使用
  29. # 作为对Producer和Consumer提供服务的端口号,默认为10911,可以通过配置文件修改
  30. listenPort=10911
  31. # 主要用于slave同步master
  32. # fastRemotingServer服务组件使用,默认为listenPort - 2,可以通过配置文件修改。
  33. fastListenPort=10909
  34. # HA高可用监听端口,即Master与Slave间通信的端口,默认值为listenPort+1
  35. haListenPort=10912
  36. # 指定commitlog、consumequeue所在磁盘分区的最大使用率,超过该值,则需立即清除过期文件
  37. diskMaxUsedSpaceRatio=95
  38. #指定消息的最大大小
  39. maxMessageSize=65536
  40. #Broker的角色
  41. # - ASYNC_MASTER 异步复制Master
  42. # - SYNC_MASTER 同步双写Master
  43. # - SLAVE
  44. brokerRole=ASYNC_MASTER
  45. #刷盘策略
  46. # - ASYNC_FLUSH 异步刷盘
  47. # - SYNC_FLUSH 同步刷盘
  48. flushDiskType=SYNC_FLUSH
  49. # 发消息线程池数量
  50. sendMessageThreadPoolNums=128
  51. # 拉消息线程池数量
  52. pullMessageThreadPoolNums=128
  53. # 强制指定本机IP,需要根据每台机器进行修改。
  54. # 官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
  55. brokerIP1=192.168.114.100
  56. #指定store目录的路径,默认在当前用户主目录中
  57. storePathRootDir=/usr/local/rocketmq-all-4.5.0/store
  58. #commitLog目录路径
  59. storePathCommitLog=/usr/local/rocketmq-all-4.5.0/store/commitlog
  60. #consumeueue目录路径
  61. storePathConsumeQueue=/usr/local/rocketmq-all-4.5.0/store/consumequeue
  62. #index目录路径
  63. storePathIndex=/usr/local/rocketmq-all-4.5.0/store/index
  64. #checkpoint文件路径
  65. storeCheckpoint=/usr/local/rocketmq-all-4.5.0/store/checkpoint
  66. #abort文件路径
  67. abortFile=/usr/local/rocketmq-all-4.5.0/store/abort
  68. docker run -d \
  69. --restart=always \
  70. --name rmqbroker \
  71. --link rmqnamesrv:namesrv \
  72. -p 10911:10911 \
  73. -p 10909:10909 \
  74. --privileged=true \
  75. -v /docker/rocketmq/data/broker/logs:/root/logs \
  76. -v /docker/rocketmq/data/broker/store:/root/store \
  77. -v /docker/rocketmq/conf/broker.conf:/opt/docker/rocketmq/broker.conf \
  78. -e "NAMESRV_ADDR=namesrv:9876" \
  79. -e "MAX_POSSIBLE_HEAP=200000000" \
  80. rocketmqinc/rocketmq \
  81. sh mqbroker \
  82. -c /opt/docker/rocketmq/broker.conf

参数 说明

-d 以守护进程的方式启动
- -restart=always docker重启时候容器自动重启
- -name rmqbroker 把容器的名字设置为rmqbroker
- —link rmqnamesrv:namesrv 和rmqnamesrv容器通信
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
-p 10909:10909 把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876” 指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker 指定broker服务的最大堆内存
rocketmqinc/rocketmq 使用的镜像名称
sh mqbroker -c /opt/docker/rocketmq/broker.conf 指定配置文件启动broker节点

创建rockermq-console服务

  1. docker pull pangliang/rocketmq-console-ng
  2. docker run -d \
  3. --restart=always \
  4. --name rmqadmin \
  5. -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.114.100:9876 \
  6. -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
  7. -p 9999:8080 \
  8. pangliang/rocketmq-console-ng