With Node v0.12.2, the cluster module supports Round-Robin (RR) load balancing, which ensures load is more evenly distributed than the previous OS-level load balancing.
So now we are spoilt for choice:
I am aware of this excellent post as well as other answers here on SO, but none have addressed the newer Cluster module with RR mode. So the question boils down to:
Judging only on their load balancing capabilities, should I use pm2
or nginx
?
TL;DR
If you want the most mature load balancing features use
HAProxy
. It's do one thing best. You'll get SSL-termination, ACLs and it being very lightweight. I can't prove with numbers, but I feel it has the lowest hit on http requests. A good read is this.If you also need to serve (at least some) static content your goto option is
nginx
for its superior capabilities in this field. Also of your list it's the only one to provide such a feature. Except fornode
itself, but doing it very poorly.pm2
feels very heavy-weight IMO and tends to break more often. It's capabilities of process load balancing are very good and secures uptime of your node process. It abstractscluster
.cluster
feels just 'being fixed' to a bare minimum. In the past and maybe still the os-level support lead to different behaviours on different platforms. For example, bias to single processes.My current setup is:
HAProxy
for cluster wide loadbalancing, including balancing several instances of a process per machinepm2
for process load balancing