Whenever I start digging into technical details, I learn something new. A few days ago I’ve stumbled across the term anycast, which is a very interesting way to solve scalability issues:
- Deploy geographically dispersed servers using the same IP address (obviously they would also need a unique IP address or you wouldn't be able to manage them);
- Advertise your service as residing on that IP address (for example, use the IP address in NS records for DNS zones you host)
- Advertise the IP address (or corresponding IP prefix) into the Internet from multiple locations.
Anycast works best with simple request-response UDP applications (for example, DNS) and has been used for ages to implement large-scale DNS deployments (for example, root name servers).
Using anycast for TCP sessions is trickier. It works reasonably well in the global Internet where the anycast endpoints are far enough from each other and true equal-cost multipathing is rare. CloudFlare is using anycast globally and managed to tweak their TCP/IP stack to use anycast source IP addresses. LinkedIn has fewer points-of-presence and decided to use regional anycast.
Using anycast TCP endpoints in data centers is harder and requires fine-tuned interaction with network-layer multipathing as well as a bag of intricate tricks.
For more details, watch the Load Balancing and Scale-Out Architectures part of the Data Center Infrastructure for Networking Engineers webinar and the Global Accelerator video in the Amazon Web Services Networking webinar.
- Added links to UDP and TCP anycast use cases