Availability is an essential aspect of any internet-based system, with downtime often resulting in short-term loss of income and longer-term loss of users. In this blog, I will look at two quick examples of the ways that DNS can be used to improve availability of systems.
DNS as a Load Balancer Replacement
Load balancers (or application delivery controllers) are devices that route traffic to multiple servers. This can be done via simple methodologies such as just using a round-robin approach to send each request to the next server in the list, more complex ones such as the server that is currently responding quickest, or even intelligent routing based on pattern matching on the URL being requested or other elements of the header.
Load balancers, however, have a number of drawbacks:
- They are usually devices that sit within your infrastructure and therefore the traffic that is routed to them is all coming into a single point within your infrastructure.
- They have limited capacity.
- They can often only route traffic over a local LAN network.
Modern dynamic DNS can be used as a replacement for load balancers, offering more dynamic, global load-balancing solutions with the ability to balance traffic based on different criteria.
Using DNS to load-balance traffic has several advantages:
- Traffic can be balanced across multiple data centers without needing to go through a central load-balancing location.
- DNS is well suited for location-based load balancing. As long as your DNS provider offers geolocation-based resolution, then this is the ideal way to route traffic to the closest location.
DNS-based load balancing is not as feature rich as most of the load-balancing solutions available, but if you have straightforward requirements, it is an option worth considering as it is low overhead and easily configurable.
Integration with Monitoring and Alerting
DevOps very much involves a mindset shift, especially for people from a traditional operations background.
The traditional operations approach was to look for consistency of platform and therefore minimize change. The focus in that case was on planning for change and doing as much up-front mitigation as possible.
Moving to a DevOps world means moving to a system that accepts that change will constantly be happening and that errors will occur. The best way of dealing with this is by having a comprehensive approach to system monitoring: being aware at all times of the state of the system and how to deal with any failures that are seen, ideally in an automated fashion.
DNS can be integrated into this approach to ensure that when issues are seen, appropriate action is taken to remove the problem area from the public system or to reroute users to an alternative implementation or disaster recovery (DR) version of the system.
DNS sits remotely from your underlying architecture and becomes a tool that can be used for addressing issues as they arise, DNS provides the capacity for a range of actions to be taken, depending on the nature of monitoring being undertaken.