Amazon web services 如何将长寿命TCP连接分发到各个节点,例如集群中的RabbitMQ节点?
我将在AWS中部署一个RabbitMQ节点集群。我预计将有100k+(可能是1m+)个客户机-物联网设备-通过MQTT连接到RabbitMQ集群,并将保持24/7/365的连接 现在的问题是:如何将TCP连接从客户端分发到组成RabbitMQ集群的各个节点?我看到了几个选择:Amazon web services 如何将长寿命TCP连接分发到各个节点,例如集群中的RabbitMQ节点?,amazon-web-services,rabbitmq,load-balancing,amazon-elb,iot,Amazon Web Services,Rabbitmq,Load Balancing,Amazon Elb,Iot,我将在AWS中部署一个RabbitMQ节点集群。我预计将有100k+(可能是1m+)个客户机-物联网设备-通过MQTT连接到RabbitMQ集群,并将保持24/7/365的连接 现在的问题是:如何将TCP连接从客户端分发到组成RabbitMQ集群的各个节点?我看到了几个选择: 使用AWS弹性负载平衡器 在AWS EC2上使用HAProxy 使用DNS循环 使用DNS SRV(例如,类似于SIP服务部署) 根据从服务器获取的地址列表或硬编码到设备中的地址列表,使用自定义的手写客户端负载平衡算法 考
- 是的,当然
- 保持间隔:我在想大约1分钟
- 连接大部分空闲吗?->不,设备将报告各种传感器数据,我假设至少每分钟报告一次
- 您的MQ群集节点可以服务多少个连接,每个连接的最大连接数,以及您计划加载多少连接?->如前所述,总共有100k+甚至1m+个连接,不知道每个节点有多少个,我正要进行一些测试来检查这一点
- 此负载计划需要多少节点?->老实说,我还不知道,我假设10个足够100k+的连接,但这也取决于EC2机器的类型,对吗
- 客户机是否分布在全球,您的系统是否集中在一个区域?->该系统面向全球,但最初我只计划覆盖一个地区;最终,我希望用单独的RabbitMQ集群覆盖其他区域,并让客户端通过基于地理位置或延迟的负载平衡进行连接
编辑2:我刚刚发现了AWS ELB具有长寿命TCP连接的可能性。我还没有检查AWS ELB是否仍以这种方式运行,但它可能是我的用例的一个阻碍。是否有人对此或类似问题有任何经验?此处没有足够的信息来确定这些选项中是否有一个不在讨论范围内。您正在使用SSL吗?(可接受的答案包括“是的,当然。”)你的保持间隔是多少?连接大部分是空闲的吗?您的MQ群集节点可以服务多少个连接,每个连接的最大连接数,以及您计划加载多少连接?此负载计划需要多少个节点?客户机是否分布在全球,您的系统是否集中在一个区域?