1

I have some really high-availability web page content that needs to be online 24x7. So instead of relying on a single server I was wondering if I could handle one domain name with multiple servers?

Could I just set different nameservers for that domain? Would requests be automatically distributed amongst those servers? Is it that simple?

Robin Rodricks
  • 560
  • 2
  • 12
  • 27

4 Answers4

4

You absolutely do not want to use Round Robin DNS. The main issue is that it cannot balance load with any kind of intelligence, and it doesn't take into account DNS caching on the client side. DNS is just not meant to do Load Balancing. This technology is deprecated and what you really want to use is a Server Load Balancer (either Appliance or Software, but I really recommend an Appliance if you care about performance).

What happens is this:

  • You set up a domain name, and tie its IP Address to your Server Load Balancer (SLB) public IP Address, which is called a VIP (Virtual IP Address).
  • When the SLB receives a connection request, it will establish the connection between the client and itself. Your clients will then send data inside that connection (an HTTP request in your case). Some SLB can redirect the data stream to a specific server based on the type of request, but that's a bit advanced for now.
  • The SLB will then establish another connection between itself and another server. It will choose the server from a pool you specified. This is where you specify the IP Addresses of all your servers. Based on the Load Balancing rules you defined, it will choose one server or the other. Some possible rules are Round Robin (it will send the first user to the first server, the second user to the second server, and so on), Weight (if server 1 is twice more powerful than server 2, it will send twice more users to the first server), Load (if server 2 is more loaded than server 3, the SLB will send to server 3 in priority), and some others.
  • A popular way of improving performance is to use the SLBs to do the SSL termination between itself and the client, and then use clear text between itself and the server. This way you don't need SSL on your server (saving tons of performance), which most of the time is fine because you are on a private, trusted network; while still keeping the level of security needed on the public (Internet) network.

Some popular SLB vendors are F5 (my personnal favorite, but that's just me, and they tend to be more expensive - for good reasons, but that's also my opinion), RadWare, Cisco and Juniper.

Astaar
  • 448
  • 1
  • 8
  • 18
3

You really have four options:

  1. Setup a cluster and point the domain to the virutal IP of the cluster
  2. Buy a load balancing appliance
  3. Put a cluster behind the load balancing appliance
  4. Set up multiple a records with all the different server's IPs (DNS Round Robbin)

The problem with DNS round robbin is if one of your servers go down, every N requests will fail as the try to use that IP.

Only using clustering and/or a load balancer will give you true fault tolerance to hardware failure as they will stop sending requests to the down server.

Zypher
  • 37,405
  • 5
  • 53
  • 95
2

Yes, it is the basic way to assure load balancing among different servers (web servers)... it is referred as Round Robin DNS.

Pay attention that this is a load balancing technique, it does not assure any failover against single server failure, ie if a server is down and your client is getting its address by the DNS it would have a failure in the connection. Statistically reloading again and again it will have a connection with a working server, but it is not a clean solution.

drAlberT
  • 10,949
  • 7
  • 39
  • 52
2

Something to be careful with when choosing a load-balancing solution is whether your website needs to deal with sessions. If it is the case, make sure you use a load-balancing technique that won't choose servers randomly for a given client, otherwise they might just lose their session on your website by being redirected to a different server every time.

raphink
  • 11,987
  • 6
  • 37
  • 48