GlassFish Server Open Source Edition 3.1 - Loadbalancer

Scope

Feature ID Priority Description Eng Response Owner(s) Estimate (Man Days) Source of Requirement Status / Comments
LBREC-001 P1 Admin command to create load-balancer elements in domain xml Yes Yamini 20 Feature parity Admin commands : configure-lb-weight, create-http-health-checker, create-http-lb, create-http-lb-config, create-http-lb-ref, delete-http-health-checker, delete-http-lb, delete-http-lb-config, delete-http-lb-ref, disable-http-lb-application, disable-http-lb-server, enable-http-lb-application, enable-http-lb-server, list-http-lbs, list-http-lb-configs etc.
LBREC-002 P1 Admin command to generate load-balancer xml Yes Kshi tiz 10 Feature parity Admin command : export-http-lb-config
LBREC-003 P2 Installer support for Load-balancer plugin Yes Kshi tiz 5 Feature parity GlassFish Loadbalancer Configurator already exists. It need to be tested by QE.
LBREC-004 P2 Preferred fail-over instance Yes Kshi tiz 15 Feature requested by session replication team  
LBREC-005 P4 Pushing load-balancer xml over the wire to web-server Yes Kshi tiz 15 Feature parity Admin command : apply-http-lb-changes
LBREC-006 P2 Upgrade Tasks Yes Kshi tiz 15 Upgrade requirements  

One-pager

Demo Script

Load-balancer support for different editions of GlassFish

GlassFish OpenSource Edition

  • Apache + mod_jk is suggested load-balancer for community edition of GlassFish 3.1

Oracle GlassFish Server

  • Use existing native load-balancer plugin for GlassFish 3.1

Feature Overview

Administration

The administration module of GlassFish 3.1 will provide support for following commands :

  • LBREC-001 : Commands to create, edit, delete and list http load-balancer element and attributes in domain xml
    • create-http-lb
    • create-http-lb-config
    • create-http-lb-ref
    • create-http-healthchecker
    • delete-http-lb
    • delete-http-lb-config
    • delete-http-lb-ref
    • enable-http-lb-application
    • enable-http-lb-server
    • disable-http-lb-application
    • disable-http-lb-server
    • configure-lb-weight
    • list-http-lbs
    • list-http-lb-configs
  • LBREC-002 : Command to generate load-balancer xml. This file need to be manually copied to web server for proper functioning of load-balancer
    • export-http-lbconfig
  • LBREC-005 : Optional command to push load-balancer xml over the wire to web server
    • apply-http-lb-changes

LBREC-003 : Installer

In GlassFish 2.1.1, we developed a installer and configurator for load-balancer plugin. It is known as GlassFish Loadbalancer Configurator. Its beta version was made available to GlassFish user. We can leverage it for GlassFish 3.1 as well. This will act as standalone installer to install and configure load-balancer plugin on supported web servers and platforms.

We will further discuss with installer team of GlassFish 3.1 whether installer can take care of above mentioned functionality, as used to be the case in GlassFish 2.x.

LBREC-004 : Preferred fail-over instance

As of now if instance currently handling session goes down then load-balancer will select another healthy instance from the cluster and forward request to that instance. We can call this newly selected instance as fail-over instance. Since round-robin algorithm is used to select fail-over instance, it is not guaranteed that fail-over instance will have user session in its replica cache and will resort to broadcast mechanism to get user session.

If a mechanism can be developed wherein GlassFish let load-balancer know of instance which acts as replica for user session. The load-balancer can then fail-over request to preferred fail-over instance rather than using round-robin mechanism to select it. This will need certain amount of work in native load-balancer plugin code as well as GlassFish.

Another point to note here is that load-balancer does not use and expect plain instance names as cookie value. It generates instance ID for each instance using a propriety encoding mechanism. If GlassFish stamps the replica instance name, then it need to follow same mechanism to encode fail-over instance. We need to always ensure that encoding mechanism is always consistent in GlassFish and load-balancer.

We need to decide whether existing load-balancer plugin will be enhanced to include this feature.

Supported Web servers

We will continue to support web servers which were supported by load-balancer plugin in GlassFish 2.x. Below is the list of supported web servers :

  • Sun Java System Web Server 6.1SPx/7.x
  • Apache HTTP server 2.0.x/2.2.x
  • Internet Information Services(IIS) 5.0/6.0

Supported Platform

Supported platforms by load-balancer plugin will be subset of platforms supported by GlassFish 3.1. It will continue to support platforms already supported in GlassFish 2.x. No new platform support is planned as of now. Below is the list of supported platforms :

  • Solaris 9/10
  • RHEL 3/4/5
  • Windows 2003 Advanced Server Edition

We may additional support SLES 11 if existing load-balancer plugin works successfully on that platform. QE need to verify load-balancing functionality on SLES 11.

Milestone Schedule

Item # Date/Milestone Feature-ID Description QA/Docs Handover? Status / Comments
1 MS1 N.A. Load-balancer one pager describing features and implementation details No COMPLETED
2 MS3 LBREC-001 Admin command to create load-balancer elements in domain xml Yes COMPLETED
3 MS3 LBREC-002 Admin command to generate load-balancer xml Yes COMPLETED
4 MS3 LBREC-005 Pushing load-balancer xml over the wire to web-server Yes COMPLETED
5 MS4 LBREC-004 Preferred fail-over instance Yes COMPLETED
6 MS5 LBREC-003 Installer support for Load-balancer plugin Yes  
6 MS5 LBREC-006 Upgrade tasks Yes  

Task List

Task Target Milestone Start End Date Owner(s) Feature ID Status / Comments
Load-balancer one pager MS1 5/10 5/20 Kshi tiz N.A.  
Admin command to create load-balancer elements in domain xml : configure-lb-weight, create-http-health-checker, create-http-lb, create-http-lb-config, create-http-lb-ref, delete-http-health-checker, delete-http-lb, delete-http-lb-config, delete-http-lb-ref, disable-http-lb-application, disable-http-lb-server, enable-http-lb-application, enable-http-lb-server, list-http-lbs, list-http-lb-configs etc. MS3 6/7 7/19 Yamini LBREC-001 COMPLETED
Admin command to generate load-balancer xml : export-http-lb-config MS3 6/7 7/19 Kshi tiz LBREC-002 COMPLETED
Pushing load-balancer xml over the wire to web-server MS3 6/7 7/19 Kshi tiz LBREC-005 COMPLETED
Preferred fail-over instance MS4 7/20 8/16 Kshi tiz LBREC-004 COMPLETED
Installer support for Load-balancer plugin MS5 8/17 9/13 Kshi tiz LBREC-003 Already available. Probably require some minor changes. Also need to add upgrade support.
In-place upgrade for load-balancer elements in domain.xml MS5 8/17 9/13 Kshi tiz, Yamini LBREC-006 For load-balancer element, device-host and device-port need to be converted to attributes from properties. Remove auto-apply-enabled attribute with suitable warning

Dev Tests

  • Coming soon

Email Alias