Wednesday 3 April 2013

Pramati Nex Gen LB

              Pramati NexGen LB is a software web load balancer which comes with greatest features compared to any typical LB.   Pramati NexGen LB can be put in front of any Web Container which can support standard Proxy headers.

Some of the salient features of Pramati NexGen LB are:

Protocols Support   

Supports HTTP, HTTPS and AJP protocol.

Better Configuration Support

  • Allows sourcing entire LB configuration from Custom source. For Ex, the LB configuration can be provided form Database using DBConfiguration.   
  • Allows dynamically configuring and reloading LB Configuration without requiring any downtime. 

Effective Handling of Slow Clients

Sometimes clients with slower I/O can hold the backend server resources for long time making the server less available. This is effectively handled in NexGen LB using the byte sink. Before dispatching the request to the actual backend node, the request body is first read to local file sink. Once the entire request body is read to sink, the request is dispatched to backend node by serving the request body from the file sink. Similarly, the response from the backend node is first written to file sink and later written to the actual client.

Advanced SSL

Supports the following advanced SSL features such as:
    • Configuring separate certificate for  each virtual host.
    • Dynamically reloading certificate without restarting the LB.

Advanced Node Selection mechanisms

Comes with wide range of pre-defined Node selection algorithms. Some of them are:
    • Round Robin : Uses round robin strategy for selecting the backend node
    • Weighted Round Robin: Same as round robin but gives weightage to nodes based on the weights assigned to nodes. For ex, the weights can be assigned based on the number of CPU's each node has.
    • Fastest: Selects the node which has the fastest request processing time.
    • Min-Requests: Selects the node which has processed the minimum number of requests.
    • Max-Requests: Selects the node which has processed the maximum number of requests.

Supports wide range of Stickiness Mechanisms

Provides stickiness while node selection using the following stickiness mechanisms:
    • Servlet Session: Node which has previously processed the same JSESSION id.
    • User Name: Node which has previously processed the same user. This is supported for BASIC authentication only which send the user name encoded in Authentication header.
    • Cookie : Node which has previously processed the same cookie and value.
    • Client Address : Node which has processed the same client address previously.
    • HTTP Header: Node which has previously processed the same header and value.
    • HTTP Parameter: Node which has previously processed the same http parameter and value.
    • Query Parameter: Node which has previously processed the same query parameter and value.
    • Cookie Affinity: The node name which processes the request is sent as Cookie to the client. All the further requests are dispatched to the node based on the Cookie value.

Supports Custom Node Selection

Allows writing custom node selection mechanism in Java or JavaScript. The JavaScript node selector's can be modified at runtime which will be applied automatically.

Serving Content from Other Sources

 Content Handlers helps us serving the content from other locations such as:
    • Static content from the LB local file system
    • Content from any remote location.

Rewriting headers

Allows rewriting upstream headers while forwarding the requests to backend. Similarly does rewriting downstream headers. The following operations can be performed on the upstream/downstream header:
    • Add
    • Modify
    • Delete