I'm about to deploy a cluster of RabbitMQ nodes in AWS. I expect there would be 100k+ (possibly 1m+) clients - IoT devices - which will connect to the RabbitMQ cluster over MQTT and will stay connected 24/7/365.
Now the question is: how to distribute the TCP connections from clients to individual nodes comprising the RabbitMQ cluster? I see a couple of options:
- Use AWS Elastic Load Balancer
- Use HAProxy on AWS EC2
- Use DNS round-robin
- Use DNS SRV (e.g. like in SIP service deployments)
- Use a custom hand-written client-side load balancing algorithm, based on a list of addresses obtained from a server or hard-coded into the device
Which solution from the ones listed above would you recommend given the amount of load and the expected duration each connection? Or maybe a combination of these? Or is there any other solution worth knowing?
Aucun commentaire:
Enregistrer un commentaire