ServerIron ADX Server Load Balancing Guide
Release 12.0.00
June 15, 2009

Table of Contents Previous Next Print


Server Load Balancing > IP Load Balancing

IP Load Balancing
IP Load Balancing (LB) implements a generic mechanism that load balances all IP traffic, irrespective of the transport protocol. This feature inspects only the IP header and is completely transparent to upper layer protocols. IP LB is designed to be a stateless solution. That is, it does not track traffic flows and has no intelligence about connection establishment/termination.
Enable this feature at the virtual server configuration level. A virtual server is bound to a set of real servers for IP LB, and all IP traffic destined to the virtual server IP address will be load balanced across the real servers. The configuration or binding of virtual ports to real ports has no meaning in the context of IP LB, and all binding is at a server level (as opposed to the traditional binding of ports).
Hashing Mechanism
The load balancing scheme is based on a hash of the source IP address. Each virtual server is associated with a hash table (size 256) for IP LB. To begin with, the hash table is empty, and any client request will go through the server selection process (the only supported load balancing metric for IP LB is round-robin). After a server is selected, a reference to the server is placed in the hash bucket corresponding to the client IP address. All subsequent requests from that source IP address (or any other source IP hashing to the same hash bucket) will be directed to this real server, as long as the server is "healthy". In this way, the hash table is populated and is ensured that all packets originating from a specific client are load balanced to the same real server. Client persistence is implicit for IP LB.
Since this feature is completely hash based, it is essential that the state of the hash table always be consistent with the state of the real servers associated with the virtual server. For example, a hash bucket should not be pointing to a real server that is down due to health check. For this purpose, the ServerIron ADX identifies and handles the following cases:
Server deletion/unbinding—When a real server is deleted or unbound from a virtual server, all references from the virtual server hash table to that real server are deleted.
Server down due to health check—When a client-request hashes to a real server that is down, the system chooses a new real server and updates the hash bucket to point to the newly selected server. This process is done "on demand." The ServerIron ADX does not explicitly detect the "server down" case and clean up the hash table references.
Adding a new server—When a new server is bound to the virtual server, the new server must be accommodated in the hash table. However, it is possible for all hash buckets to be filled up already with existing servers that are serviceable, resulting in the newly added real server to never be selected for load balancing. To address this issue, the ServerIron ADX clears the entire hash table and starts afresh when a server is detected as "up" due to health check.This behavior applies to a new server being added, or an existing server going down and coming back up again.
IP Load Balancing vs Regular Load Balancing
If a VIP is enabled for IP load balancing, it cannot be enabled for regular load balancing. If a VIP is enabled for regular TCP/UDP load balancing, it cannot be enabled for IP load balancing. These two features are mutually exclusive.
NOTE: UDP and TCP applications can be IP load balanced as well, but they cannot be combined with traditional Layer 4 load balancing or Layer 7 switching.
Feature Interoperability
Since IP LB is a stateless feature, it cannot operate in conjunction with any other Layer 4 features supported by the ServerIron ADX (such as syn proxy, ACLs, Transaction Rate Limiting, and so on). The reason is all other ServerIron ADX features are stateful and act on flows.
Specifications of IP LB:
High Availability
IP LB supports all high availability mechanisms: hot standby, symmetric, and sym-active.
The way these mechanisms work remains the same as in previous releases, and IP LB does not mandate any change to these features. For maintaining persistence across a fail over, the IP LB hash table is synchronized to the peer ServerIron ADX. This sync is done only for hot standby and symmetric SLB setup, not for sym-active configuration. The reason is for sym-active, both the SIs can be taking traffic for the same virtual IP, and synchronizing the hash table to each device means overriding each device's hashing decision.
Minimum Required Configuration
You can bind a real server to a virtual server for IP LB. The procedure of configuring virtual servers and configuring real servers remains the same as earlier releases.
To bind a real server to a virtual server for IP LB, enter commands such as the following:
ServerIronADX(config)# server virtual-name-or-ip vs1
ServerIronADX(config-vs-vs1)#ip-load-balance bind rs1
Syntax: ip-load-balance bind <real-servername> +
The "+" means you can list up to four <real-servername> on the same command line under the virtual server.
Load Balancing Specific IP Protocols
By default, a virtual server configured for IP LB balances all IP traffic. Optionally, you can specify an optional list of IP protocols to load balance. The balancing will be restricted to only these protocols.
To specify an optional list of IP protocols to load balance, enter commands such as the following:
ServerIronADX(config)#server virtual-name-or-ip vs1
ServerIronADX(config-vs-vs1)#ip-load-balance protocol-list 06
Syntax: ip-load-balance protocol-list <protocol-number> +
The "+" means you can list up to four IP <protocol-number> on the same command line under the virtual server.
Displaying Load Balancing and Hash Distribution Statistics
To display load-balancing information, enter the following command:
ServerIron# show server ip-load-balancing bind
IP Load balancing binding information:
Virtual server: vip1 Status: enabled IP: 4.4.4.202
rs1: 4.4.4.101 (Enabled)
rs2: 4.4.4.108 (Enabled)
rs16: 4.4.4.116 (Enabled)
rs17: 4.4.4.117 (Enabled)
rs18: 4.4.4.118 (Enabled)
rs19: 4.4.4.119 (Enabled)
rs20: 4.4.4.120 (Enabled)
 
Virtual server: vip3 Status: enabled IP: 3.3.3.200
rs3: 4.4.4.102 (Enabled)
rs4: 4.4.4.103 (Enabled)
rs11: 4.4.4.111 (Enabled)
rs12: 4.4.4.112 (Enabled)
rs13: 4.4.4.113 (Enabled)
rs14: 4.4.4.114 (Enabled)
rs15: 4.4.4.115 (Enabled)
rs10: 4.4.4.110 (Enabled)
 
Syntax: show server ip-load-balancing bind <vserver-name>
The <vserver-name> parameter is the name of a virtual server.
To display hash distribution statistics, enter the following command:
Syntax: show server ip-load-balancing hash-distribution <vserver-name>
The <vserver-name> parameter is the name of a virtual server.

Server Load Balancing > IP Load Balancing

Table of Contents Previous Next Print
Copyright © 2009 Brocade Communications Systems, Inc.