GLB: Method
OES combines three major components to build the global load balancing service: mapping client IP addresses to desired server addresses, integrating this mapping into DNS software, and integrating service availability scanning into DNS software.
First, we build a database which maps Internet addresses to physical locations. In most cases, country of origin is sufficient, however, this system works with any resolution. Second, we build a mapping of geographical locations to the desired IP addresses which should provide service.
The mapping from the previous step must be integrated with the name server software[2] such that when an incoming request for name resolution arrives, the response is determined by the IP address of the requester.
Finally, if a server becomes unavailable for any reason, its IP address must not be used as a DNS response. Instead, the DNS software should return the next appropriate candidate. The DNS server itself determines which servers are available, and it maintains a pool of working servers. Availability means not only network connectivity, but also that the web content is as expected (i.e. nobody has hacked into the server and defaced the web site).
Procedure 1. Hypothetical Service Transaction
- The first time a user accesses the web site[3], she contacts her ISP's DNS server.
- The ISP's DNS server contacts our authoritative Global Load Balancing (GLB) DNS server and requests a DNS A-record (forward name) lookup.
- The GLB server determins the best web server to handle the client's request by selecting the nearest server which is currently in the availability pool.
- The DNS server returns the IP address of the closest web server.
- The user begins a standard TCP transaction with the appropriate server.
Updating the Availability Pool
In practice, multiple DNS servers are used for redundancy; however, the structure of the DNS and TCP transactions is the same.
[2] This technique works with any DNS server, however OES uses BIND since it is already the primary carrier of domain name service and its source code is freely available.
[3] In practice, users do name resolution through their ISP's DNS servers, and the ISPs cache the information locally. Thus if another user at the ISP makes the same request, her ISP will return the cached information. The ISP will only re-request the data once the DNS record has expired. However, this procedure is not fundamentally different from the example and only detracts from clarity.
