EMQX nginx+集群 服务器配置推荐

环境信息

  • EMQX 版本:4.4.5
  • 操作系统及版本:centos

问题描述


EMQX官网文档中提到 EMQX 自 4.2 版本以来,在一台 8 核心、32G 内存的 CentOS 服务器上,MQTT 连接压力测试可达到 130 万。

想问下我准备用3台服务器(服务器1、服务器2和服务器3)
1.服务器1:安装Nginx用于做前置服务器,实现负载均衡,将请求分发到服务器2和服务器3的EMQX
2.服务器2:安装EMQX,服务器2和服务器3为EMQX集群关系
3.服务器3:安装EMQX,服务器2和服务器3为EMQX集群关系

想请教下这3台服务器应购买怎么样的配置,可以做到百万的连接?

  1. 建议后面放奇数台 emqx,例如:3/5/7 但不要过多。
    • 奇数,为了避免脑裂成 2 个集群时,难以治愈的问题。
    • 节点数不易过多,为了降低 4.x 下集群节点数过多,带来的事务操作的性能下降
  2. 这里的 100w链接 仅表示无业务负担的情况下(例如,未开启数据转发,认证等功能)能达到 100w连接+1w 的消息吞吐。具体还得自己要去压测的,简单来说
    • 连接数和内存相关
    • 消息TPS 和 数据转发,认证能 和 CPU 相关

image
问题1:以上的配置结构,想请教下是否服务器1的内存配置等是不是相比于另外两台服务器多很多?


问题2:如果假设服务器2和服务器3不为集群关系,以上的配置结构在正常使用中是否没什么影响,只是在同一台DashBorad上不能看见两个节点及同时看见两个服务器的连接数情况,只能在两台各自的DashBorad上查看各自的连接使用情况?

  • 问题1:不需要。 Nginx 只做4层转发资源消耗不高的

  • 问题2:建议集群的,不然两台是隔离的,无法相互 pub/sub 也需要使用两个dashboard

nginx本身有访问数量的上限吧。emqx每个节点能支持5w个链接的时候,总共有3个后端节点,按道理来说有15w的接入能力。那么nginx的链接上限我查看了一下一般一核心只有5w,就需要增加cpu来增加链接数,按照代理的玩法需要5w/2=2.5w,这样需要的nginx服务的内核不上15/2.5=6cpu。成本比直接安装3个服务来的贵。 8核心的做代理,是怎么实现130w链接数的?我的疑问,有时间协助回复一下。非常感谢