You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@rocketmq.apache.org by Zhanhui Li <li...@gmail.com> on 2018/07/04 07:12:56 UTC

Re: RocketMQ部署问题

1. 建议通过一个寻址URL, 返回可用的Name server列表:


RocketMQ的组件, 会缓存并定期访问这个URL来更新Name Server列表. 通过修改这个URL的返回值, 可以达到动态增加和减少Name Server服务器.

Name Server一般两个实例就够了. Name Server对资源的要求很低, 可以混部.

一个集群支持很多Broker Set. 几百组没问题. 生产上, 建议多Cluster的模式(共用一组name server). 这样隔离性更好.  注意一点, 即便是多Cluster, 因为共用同一组name server. Topic名称也不允许冲突. 生产环境, 建议关闭自动Topic和Consumer Group创建. 开发一个简单的Web Portal来创建更合适. Topic 和 Consumer Group最要有命名约定. 比如 T_部门简称_产品简称_模块名. 

2. Broker最内存需求大一些. CPU基本没什么消耗. 磁盘的话, 如果配置了主备机, 建议主机SSD, 备机随意. 如果只是主机, 建议SSD. 具体单机能支持到多少消息每秒, 有很多影响因素: 比如消息体大小, 磁盘类型, 内存大小等. 8C 32G + SSD可以作为一个初始话的配置起点, 然后根据需要修改. 推荐SSD, 主要是因为发生大规模堆积的时候, 系统更从容.  正常情况, 机械盘可以满足读写需求.

3. 如果是想利用多次盘, 个人建议通过Docker的方式, 启动多个container实例, mount磁盘做更好的资源隔离来利用起来多磁盘.

以上.

李战辉

> 在 2018年7月4日,上午11:19,shen hui <sh...@outlook.com> 写道:
> 
> 请教一下各位,在生产环境下使用RocketMQ,部署方面有什么经验可以参考,包括以下几个方面:
> 集群容量,一个集群最多能支撑多少broker set;以及一个集群namesrv一般是几台
> broker机器选型,主要是cpu、内存和磁盘,对于ssd是不是有非常强烈的需求,单个broker实例需要多少core和内存才能充分发挥性能
> 如果一台机器挂多个磁盘,是否推荐起多个实例 利用多个磁盘
> 🙏
> 
> 发件人: shen hui <shenhui0509@outlook.com <ma...@outlook.com>>
> 发送时间: 2018年7月4日 10:47
> 收件人: users@rocketmq.apache.org <ma...@rocketmq.apache.org>
> 抄送: andy.xning@gmail.com <ma...@gmail.com>
> 主题: RocketMQ部署问题
>  
> 请教一下各位,在生产环境下使用RocketMQ,部署方面有什么经验可以参考,包括以下几个方面:
> 集群容量,一个集群最多能支撑多少broker set;以及一个集群namesrv一般是几台
> broker机器选型,主要是cpu、内存和磁盘,对于ssd是不是有非常强烈的需求,单个broker实例需要多少core和内存才能充分发挥性能
> 如果一台机器挂多个磁盘,是否推荐起多个实例 利用多个磁盘
> 🙏


Re: RocketMQ部署问题

Posted by Jason Joo <hb...@163.com>.
hi, shen hui

关于namesvrFetching,具体补充一下

首先设置方法比较简单,无论是命令行用-D还是如下的创建实例前临时环境变量设置:
System.setProperty("rocketmq.namesrv.domain", "rocketmq.xxxxx.org");
System.setProperty("rocketmq.namesrv.domain.subgroup", "nsaddr");

对应的地址:http://rocketmq.xxxxx.org:8080/rocketmq/nsaddr
(唯一的问题是端口固定为8080,之前是fork分支另行维护,现在在生产直接配了8080彻底妥协了)

改变nsaddr文件的内容(或是接口方式),即可实现动态ns服务器列表

但这里需要注意一点,对于broker端与使用端,最好做一个隔离,因为改变地址列表后,broker端注册至新的ns需要一定的时间,而这期间就不保证调用端会不会利用到新的ns服务器,最后导致会出现一些找不到route的错误,而隔离开可以先更新borker端的列表,之后等待新的ns状态一致,再更新调用端的列表定义。


best regards,

Jason

> On Jul 4, 2018, at 15:12, Zhanhui Li <li...@gmail.com> wrote:
> 
> 1. 建议通过一个寻址URL, 返回可用的Name server列表:
> <PastedGraphic-1.png>
> 
> RocketMQ的组件, 会缓存并定期访问这个URL来更新Name Server列表. 通过修改这个URL的返回值, 可以达到动态增加和减少Name Server服务器.
> 
> Name Server一般两个实例就够了. Name Server对资源的要求很低, 可以混部.
> 
> 一个集群支持很多Broker Set. 几百组没问题. 生产上, 建议多Cluster的模式(共用一组name server). 这样隔离性更好.  注意一点, 即便是多Cluster, 因为共用同一组name server. Topic名称也不允许冲突. 生产环境, 建议关闭自动Topic和Consumer Group创建. 开发一个简单的Web Portal来创建更合适. Topic 和 Consumer Group最要有命名约定. 比如 T_部门简称_产品简称_模块名. 
> 
> 2. Broker最内存需求大一些. CPU基本没什么消耗. 磁盘的话, 如果配置了主备机, 建议主机SSD, 备机随意. 如果只是主机, 建议SSD. 具体单机能支持到多少消息每秒, 有很多影响因素: 比如消息体大小, 磁盘类型, 内存大小等. 8C 32G + SSD可以作为一个初始话的配置起点, 然后根据需要修改. 推荐SSD, 主要是因为发生大规模堆积的时候, 系统更从容.  正常情况, 机械盘可以满足读写需求.
> 
> 3. 如果是想利用多次盘, 个人建议通过Docker的方式, 启动多个container实例, mount磁盘做更好的资源隔离来利用起来多磁盘.
> 
> 以上.
> 
> 李战辉
> 
>> 在 2018年7月4日,上午11:19,shen hui <shenhui0509@outlook.com <ma...@outlook.com>> 写道:
>> 
>> 请教一下各位,在生产环境下使用RocketMQ,部署方面有什么经验可以参考,包括以下几个方面:
>> 集群容量,一个集群最多能支撑多少broker set;以及一个集群namesrv一般是几台
>> broker机器选型,主要是cpu、内存和磁盘,对于ssd是不是有非常强烈的需求,单个broker实例需要多少core和内存才能充分发挥性能
>> 如果一台机器挂多个磁盘,是否推荐起多个实例 利用多个磁盘
>> 🙏
>> 
>> 发件人: shen hui <shenhui0509@outlook.com <ma...@outlook.com>>
>> 发送时间: 2018年7月4日 10:47
>> 收件人: users@rocketmq.apache.org <ma...@rocketmq.apache.org>
>> 抄送: andy.xning@gmail.com <ma...@gmail.com>
>> 主题: RocketMQ部署问题
>>  
>> 请教一下各位,在生产环境下使用RocketMQ,部署方面有什么经验可以参考,包括以下几个方面:
>> 集群容量,一个集群最多能支撑多少broker set;以及一个集群namesrv一般是几台
>> broker机器选型,主要是cpu、内存和磁盘,对于ssd是不是有非常强烈的需求,单个broker实例需要多少core和内存才能充分发挥性能
>> 如果一台机器挂多个磁盘,是否推荐起多个实例 利用多个磁盘
>> 🙏
>