The farm software clusterScalability and high availability with network load balancing and application failover
The same application runs on each server, and the load is balanced by the distribution of network activity on the different servers of the farm. Farm clusters are suited to front-end applications like web services. Apache_farm.Safe and Microsoft IIS_farm.Safe are examples of farm application modules. You can write your own farm module for your application, based on the generic module Farm.safe. Principle of a virtual IP address with network load balancingThe virtual IP address is configured locally on each server in the farm. The input traffic for this address is received by all the servers and split among them by a filter inside each server's kernel.
The load balancing algorithm inside the filter is based on the identity of the client packets (client IP address, client TCP port). Depending on the identity of the client packet input, only one filter in a server accepts the packet; the other filters in other servers reject it. Once a packet is accepted by the filter on a server, only the CPU and memory of this server are used by the application that responds to the request of the client. The output messages are sent directly from the application server to the client. If a server fails, the SafeKit membership protocol reconfigures the filters in the farm to re-balance the traffic on the remaining available servers. Load balancing for stateful or stateless web servicesWith a stateful server, there is session affinity. The same client must be connected to the same server on multiple HTTP/TCP sessions to retrieve its context on the server. In this case, the SafeKit load balancing rule is configured on the client IP address. Thus, the same client is always connected to the same server on multiple TCP sessions. And different clients are distributed across different servers in the farm. This configuration is used when there are session affinities. With a stateless server, there is no session affinity. The same client can be connected to different servers in the farm on multiple HTTP/TCP sessions; because there is no context stored locally on a server from one session to another. In this case, the SafeKit load balancing rule is configured on the TCP client session identity. This configuration is the one which is the best for distributing sessions between servers, but it requires a TCP service without session affinity. Other load balancing algorithms are available for UDP services, for firewalls... More information: |
|||