1.4. Routing Methods

Red Hat Enterprise Linux uses Network Address Translation or NAT routing for Load Balancer Add-On, which allows the administrator tremendous flexibility when utilizing available hardware and integrating the Load Balancer Add-On into an existing network.

1.4.1. NAT Routing

Figure 1.3, “Load Balancer Add-On Implemented with NAT Routing”, illustrates Load Balancer Add-On utilizing NAT routing to move requests between the Internet and a private network.
Load Balancer Add-On Implemented with NAT Routing

Figure 1.3. Load Balancer Add-On Implemented with NAT Routing

In the example, there are two NICs in the active LVS router. The NIC for the Internet has a real IP address on eth0 and has a floating IP address aliased to eth0:1. The NIC for the private network interface has a real IP address on eth1 and has a floating IP address aliased to eth1:1. In the event of failover, the virtual interface facing the Internet and the private facing virtual interface are taken-over by the backup LVS router simultaneously. All of the real servers located on the private network use the floating IP for the NAT router as their default route to communicate with the active LVS router so that their abilities to respond to requests from the Internet is not impaired.
In this example, the LVS router's public floating IP address and private NAT floating IP address are aliased to two physical NICs. While it is possible to associate each floating IP address to its own physical device on the LVS router nodes, having more than two NICs is not a requirement.
Using this topology, the active LVS router receives the request and routes it to the appropriate server. The real server then processes the request and returns the packets to the LVS router which uses network address translation to replace the address of the real server in the packets with the LVS router's public VIP address. This process is called IP masquerading because the actual IP addresses of the real servers is hidden from the requesting clients.
Using this NAT routing, the real servers may be any kind of machine running various operating systems. The main disadvantage is that the LVS router may become a bottleneck in large cluster deployments because it must process outgoing as well as incoming requests.
The ipvs modules utilize their own internal NAT routines that are independent of iptables and ip6tables NAT. This will facilitate both ipv4 and ipv6 NAT when the real server is configured for NAT as opposed to DR in the /etc/keepalived/keepalived.conf file.

1.4.2. Direct Routing

Building a Load Balancer Add-On setup that uses direct routing provides increased performance benefits compared to other Load Balancer Add-On networking topologies. Direct routing allows the real servers to process and route packets directly to a requesting user rather than passing all outgoing packets through the LVS router. Direct routing reduces the possibility of network performance issues by relegating the job of the LVS router to processing incoming packets only.
Load Balancer Add-On Implemented with Direct Routing

Figure 1.4. Load Balancer Add-On Implemented with Direct Routing

In the typical direct routing Load Balancer Add-On setup, the LVS router receives incoming server requests through the virtual IP (VIP) and uses a scheduling algorithm to route the request to the real servers. The real server processes the request and sends the response directly to the client, bypassing the LVS router. This method of routing allows for scalability in that real servers can be added without the added burden on the LVS router to route outgoing packets from the real server to the client, which can become a bottleneck under heavy network load. Direct Routing and the ARP Limitation

While there are many advantages to using direct routing in Load Balancer Add-On, there are limitations as well. The most common issue with Load Balancer Add-On by means of direct routing is with Address Resolution Protocol (ARP).
In typical situations, a client on the Internet sends a request to an IP address. Network routers typically send requests to their destination by relating IP addresses to a machine's MAC address with ARP. ARP requests are broadcast to all connected machines on a network, and the machine with the correct IP/MAC address combination receives the packet. The IP/MAC associations are stored in an ARP cache, which is cleared periodically (usually every 15 minutes) and refilled with IP/MAC associations.
The issue with ARP requests in a direct routing Load Balancer Add-On setup is that because a client request to an IP address must be associated with a MAC address for the request to be handled, the virtual IP address of the Load Balancer Add-On system must also be associated to a MAC as well. However, since both the LVS router and the real servers all have the same VIP, the ARP request will be broadcast to all the machines associated with the VIP. This can cause several problems, such as the VIP being associated directly to one of the real servers and processing requests directly, bypassing the LVS router completely and defeating the purpose of the Load Balancer Add-On setup.
To solve this issue, ensure that the incoming requests are always sent to the LVS router rather than one of the real servers. This can be done by using either the arptables_jf or the iptables packet filtering tool for the following reasons:
  • The arptables_jf prevents ARP from associating VIPs with real servers.
  • The iptables method completely sidesteps the ARP problem by not configuring VIPs on real servers in the first place.
For more information on using arptables or iptables in a direct routing Load Balancer Add-On environment, see Section 3.2.1, “Direct Routing and arptables_jf or Section 3.2.2, “Direct Routing and iptables.