A Load Balancing Thing?

May 14, 2014 1.6k views
Hi everyone, I hope that someone could show me the right direction to do this, I'm planning to run a new WebApp with sessions, user files, etc. For that I'm planning to have one droplet on NYC, another one on Amsterdam and at Singapore. I want my users and visitors to be directed to the nearest VPS, and if a user makes a change on his account, update the data on all the VPS. I've read some articles about load balancing and it seems a good technique, but I need to redirect the users to the nearest VPS and not just balance the visitors flow. Any help to show me the right path to take? Thank you! P.D: We'll be using NGINX and NodeJS
3 Answers
We have a number of tutorials that should help point you in the right direction:

An intro to using nginx as a load balancer.

Assuming you are using Mysql as your database, you'll want to look into setting up Mysql master to master replication.

Though, redirecting to the nearest server from your load balancer sometimes might not be the best option. You'll still have a single server a user will have to hit first. So there is a bit of a bottleneck. You might want to look into an Anycast DNS provider. That way, the redirection happens much sooner. CDN services like Cloudflare offer it.
by Etel Sverdlov
This article covers how to set up a simple load balancer on a DigitalOcean droplet with nginx. The tutorial covers setting up a round robin loadbalancer that can then direct site visitors to one of a set of IPs
Thank you @Andrew! Much appreciated!

I'm in the middle of working on the same thing. It can actually get quite complex depending on what all you're trying to do.

I started out with a plan to do DNS round-robin to a 'Gateway Layer' of servers, which would then determine the GeoIP origin of the request and 301 Redirect the request to an appropriate load balancer, which would then route the request to any of the app servers (with sticky sessions).

You can see more detail in this Stack Overflow question:

I've since pretty much abandoned that approach when I discovered that AWS Route53 offers a few options for DNS routing that will send the request to a close IP based on whichever 'routing policy' you choose. You can see more info here: http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html

Now I'm trying to figure out how to use Route53 or CloudFront for SSL termination which would essentially turn Route53 into my load-balancing layer.

Have another answer? Share your knowledge.