rocketmq deploy

简介

  1. 1. 名称服集群务 NameServer
  2. Nameserver 提供了轻量级的服务发现和路由。每个 NameServer 服务记录完整的路由信息, 提供一致的读写服务,支持快速存储扩展.
  3. 主要包含两个功能:
  4. 1) broker 管理, NameServer 接受来自 Broker 集群的注册信息并提供心跳来检测他们是否可用。
  5. 2) 路由管理 每一个 NameServer 都持有关于 Broker 集群和队列的全部路由信息,用来向客户端提供查询。
  6. 2. 代理服务集群 Broker Cluster
  7. Broker 通过提供轻量级主题和队列机制来处理消息存储。它们支持 Push Pull 模型,包含容错机制(2个副本或3个副本),提供了极强的峰值处理里能力和按照时间顺序存储数以百万记的消息存储能力,此外,代理提供了灾难恢复、丰富的度量统计和警报机制.
  8. Broker Server 负责消息的存储传递,消息查询,保证高可用等:
  9. 1) remoting(远程) 模块,broker 的入口,处理从客户端发起的请求。
  10. 2) client manager(客户端管理) 管理各个客户端(生产者/消费者)还有维护消费者主题订阅。
  11. 3) store(存储服务),提供简单的 api 来在磁盘保持或者查询消息。
  12. 4) HA 高可用服务 提供主从 broker 的数据同步。
  13. 5) index(索引服务)为消息建立索引提供消息快速查询。
  14. 3. 生产者集群 Producer Cluster
  15. Producer 支持分布式部署,分布式的 Producer 通过 Broker 集群提供的各种负载均衡策略将消息发送到 Broker 集群中。发送过程支持快速失败是低延迟的.
  16. Producer 生产消息 Topic
  17. 1. 先请求 Nameserver 拿到这个 Topic 的路由信息
  18. 2. 查找 Topic 在哪个 Broker, Broker 上有哪些队列
  19. 3. 拿到这些请求后再把消息发送到指定的 Broker
  20. 4. 消费者集群 Consumer Cluster
  21. 消费者也支持在推送和者拉取模式下分布式部署,它还支持集群消费和消息广播。提供实时的消息订阅机制,能够满足大多数消费者的需求。RocketMQ的网站为感兴趣的用户提供了一个简单的快速入门指南.
  22. Consumer 消费消息 Topic, 也会经历 3(Producer 生产消息 Topic) 这个流程

下载

安装

配置

  1. ### ---------- 2 master, 2 slave, 同步模式 -----------
  2. # broker-a.properties master-a
  3. # 这个经纪人属于哪个集群
  4. brokerClusterName=DefaultCluster
  5. # broker 姓名
  6. brokerName=broker-a
  7. # broker ID,0 表示 master,正整数表示 slave
  8. brokerId=0
  9. # 何时删除超出保留时间的提交日志
  10. deleteWhen=04
  11. # 在删除之前保留 commitlog 的小时数
  12. fileReservedTime=48
  13. # SYNC_MASTER(同步主) / ASYNC_MASTER(异步主) / SLAVE(SLAVE)
  14. brokerRole=SYNC_MASTER
  15. # SYNC_FLUSH 同步模式会在响应每次生产者前写入磁盘, ASYNC_FLUSH 异步模式会提高处理生产者组的提交处理能力
  16. flushDiskType=ASYNC_FLUSH
  17. # broker-a-s.properties slave-a
  18. brokerClusterName=DefaultCluster
  19. brokerName=broker-a
  20. brokerId=1
  21. deleteWhen=04
  22. fileReservedTime=48
  23. brokerRole=SLAVE
  24. flushDiskType=ASYNC_FLUSH
  25. # broker-b.properties master-b
  26. brokerClusterName=DefaultCluster
  27. brokerName=broker-b
  28. brokerId=0
  29. deleteWhen=04
  30. fileReservedTime=48
  31. brokerRole=SYNC_MASTER
  32. flushDiskType=ASYNC_FLUSH
  33. # broker-b-s.properties slave-b
  34. brokerClusterName=DefaultCluster
  35. brokerName=broker-b
  36. brokerId=1
  37. deleteWhen=04
  38. fileReservedTime=48
  39. brokerRole=SLAVE
  40. flushDiskType=ASYNC_FLUSH
  41. ### ---------- 2 master, 2 slave, 异步模式 -----------
  42. # broker-a.properties master-a
  43. brokerClusterName=DefaultCluster
  44. brokerName=broker-a
  45. brokerId=0
  46. deleteWhen=04
  47. fileReservedTime=48
  48. brokerRole=ASYNC_MASTER
  49. flushDiskType=ASYNC_FLUSH
  50. # broker-a-s.properties slave-a
  51. brokerClusterName=DefaultCluster
  52. brokerName=broker-a
  53. brokerId=1
  54. deleteWhen=04
  55. fileReservedTime=48
  56. brokerRole=SLAVE
  57. flushDiskType=ASYNC_FLUSH
  58. # broker-b.properties master-b
  59. brokerClusterName=DefaultCluster
  60. brokerName=broker-b
  61. brokerId=0
  62. deleteWhen=04
  63. fileReservedTime=48
  64. brokerRole=ASYNC_MASTER
  65. flushDiskType=ASYNC_FLUSH
  66. # broker-b-s.properties slave-b
  67. brokerClusterName=DefaultCluster
  68. brokerName=broker-b
  69. brokerId=1
  70. deleteWhen=04
  71. fileReservedTime=48
  72. brokerRole=SLAVE
  73. flushDiskType=ASYNC_FLUSH
  74. ### ---------- Broker GC 优化参数 ----------
  75. bin/runbroker.sh
  76. -server -Xms8g -Xmx8g -Xmn4g
  77. -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25
  78. -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0
  79. -XX:SurvivorRatio=8 -XX:+DisableExplicitGC
  80. -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails
  81. -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime
  82. -XX:+PrintAdaptiveSizePolicy
  83. -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m

部署

  1. # -------------------- 启动 nameserver --------------------
  2. # 创建日志目录
  3. sudo mkdir -p /opt/logs/rocketmqlogs
  4. sudo chown $USER:$USER /opt/logs/rocketmqlogs
  5. # rocketmq nameserver
  6. 172.17.19.2 rocketmq-nameserver1
  7. 172.17.19.51 rocketmq-nameserver2
  8. 172.17.19.52 rocketmq-nameserver3
  9. # 启动 nameserver
  10. nohup ./bin/mqnamesrv &
  11. jps | grep NamesrvStartup
  12. netstat -tunlp | grep 9876
  13. # 关闭 nameserver
  14. ./bin/mqshutdown namesrv
  15. # -------------------- 第 a 组, 1 主 2 从 --------------------
  16. # 主节点 broker-a.properties
  17. brokerClusterName=DefaultCluster
  18. brokerName=broker-a
  19. brokerId=0
  20. deleteWhen=04
  21. fileReservedTime=48
  22. brokerRole=SYNC_MASTER
  23. flushDiskType=ASYNC_FLUSH
  24. # 从节点 broker-a-s1.properties
  25. brokerClusterName=DefaultCluster
  26. brokerName=broker-a
  27. brokerId=1
  28. deleteWhen=04
  29. fileReservedTime=48
  30. brokerRole=SLAVE
  31. flushDiskType=ASYNC_FLUSH
  32. # 从节点 broker-a-s2.properties
  33. brokerClusterName=DefaultCluster
  34. brokerName=broker-a
  35. brokerId=2
  36. deleteWhen=04
  37. fileReservedTime=48
  38. brokerRole=SLAVE
  39. flushDiskType=ASYNC_FLUSH
  40. # 启动 broker master
  41. nohup sh ./bin/mqbroker -c ./conf/custom/broker-a.properties -n "rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876" &
  42. jps | grep BrokerStartup
  43. netstat -tunlp | grep 10911
  44. # 启动 broker slave1
  45. nohup sh ./bin/mqbroker -c ./conf/custom/broker-a-s1.properties -n "rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876" &
  46. jps | grep BrokerStartup
  47. netstat -tunlp | grep 10911
  48. # 启动 broker slave2
  49. nohup sh ./bin/mqbroker -c ./conf/custom/broker-a-s2.properties -n "rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876" &
  50. jps | grep BrokerStartup
  51. netstat -tunlp | grep 10911
  52. # 关闭 broker
  53. ./bin/mqshutdown broker
  54. # -------------------- 第 b 组, 1 主 2 从 --------------------
  55. # 主节点 broker-b.properties
  56. brokerClusterName=DefaultCluster
  57. brokerName=broker-b
  58. brokerId=0
  59. deleteWhen=04
  60. fileReservedTime=48
  61. brokerRole=SYNC_MASTER
  62. flushDiskType=ASYNC_FLUSH
  63. # 从节点 broker-b-s1.properties
  64. brokerClusterName=DefaultCluster
  65. brokerName=broker-b
  66. brokerId=1
  67. deleteWhen=04
  68. fileReservedTime=48
  69. brokerRole=SLAVE
  70. flushDiskType=ASYNC_FLUSH
  71. # 从节点 broker-b-s2.properties
  72. brokerClusterName=DefaultCluster
  73. brokerName=broker-b
  74. brokerId=2
  75. deleteWhen=04
  76. fileReservedTime=48
  77. brokerRole=SLAVE
  78. flushDiskType=ASYNC_FLUSH
  79. # 启动 broker master
  80. nohup sh ./bin/mqbroker -c ./conf/custom/broker-b.properties -n "rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876" &
  81. jps | grep BrokerStartup
  82. netstat -tunlp | grep 10911
  83. # 启动 broker slave1
  84. nohup sh ./bin/mqbroker -c ./conf/custom/broker-b-s1.properties -n "rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876" &
  85. jps | grep BrokerStartup
  86. netstat -tunlp | grep 10911
  87. # 启动 broker slave2
  88. nohup sh ./bin/mqbroker -c ./conf/custom/broker-b-s2.properties -n "rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876" &
  89. jps | grep BrokerStartup
  90. netstat -tunlp | grep 10911
  91. mqadmin clusterlist

工具

  • tools.sh
  1. # 测试集群
  2. export NAMESRV_ADDR=rocketmq-nameserver1:9876
  3. # 生产测试
  4. ./bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
  5. # 消费测试
  6. ./bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

-