GlassFish Server Open Source Edition 3.2 - GMS

Introduction

Shoal GMS is a clustering framework that provides infrastructure to build fault tolerance, reliability and availability.

Feature Overview

The clustering framework provides the following functionality to GlassFish services and user applications:

  • GMS event notification
    • register callback for GMS event notification
    • GMS runtime notifies when changes in group membership occur.
  • Cluster-wide Messaging
    • send a message to one, sub list or broadcast to all members of cluster
    • register message callback to process messages sent by other group members.
  • GMS status methods
    • list of all members or just list of CORE members
    • request a member status on any member in cluster
  • GMS Group Configuration
    • configure multicast address and port used by a group
    • configure alternative transport settings when UDP multicast will not be used (new feature for GF 3.2)
    • ability to configure GMS listener BIND_INTERFACE_ADDRESS (IP address of network interface) to use on a multihome machine

Feature List and Schedule

(Features and priorities not yet final.)

Feature ID Priority Description Eng Response Owner(s) Estimate (Man Days) Source of Requirement JIRA Link   QA/Docs Handover?   Status / Comments
GMS-1.0.01 P1 Administrators shall be able to configure a GMS group discovery mechanism for a site.   Bobby     GLASSFISH-16413        
GMS-1.0.02 P1 Administrator shall be able to configure a cluster to not require UDP multicast   Bobby     GLASSFISH-16414        
GMS-1.0.03 P2 Administrator shall be able to configure GMS TCP point to point messages to use SSL.   Joe     GLASSFISH-14664        
GMS-1.0.04 P2 Administrators shall be able to configure clustered instances to potentially be separated by a firewall.   Joe     GLASSFISH-16415        
GMS-1.0.05 N/A (previously deleted)
                 
GMS-1.0.06 P2 GMS monitoring stats provider   Joe, Bobby
    GLASSFISH-12194        
GMS-1.0.07 P3 Administrator shall be able to create up to 10 instances in a cluster                  
GMS-1.0.08 P3 Administrator shall be able to create 20 clusters in a domain.                  
GMS-1.0.09 P2 Administrator shall be able to configure heartbeats to be sent over UDP unicast transport when multicast is disabled.   Joe
    GLASSFISH-16416        
GMS-1.0.10 P3 asadmin get-health needs to work in self configuring(ad hoc clusters) cluster env         GLASSFISH-16417        
GMS-1.0.11 P1 New heartbeat failure detection implementation optimized for non-multicast and no DAS   Joe
    GLASSFISH-16418        
GMS-1.0.12 P3 Support for OS configured with IPv6 only         Workaround in GLASSFISH-16103        
GMS-1.0.13 P2 Virtual multicast optimization to send messages concurrently.   Bobby
    GLASSFISH-16419        
GMS-1.0.14 P1 New GMS configuration info on cluster and group-management-service element in domain.xml   Bobby
    GLASSFISH-16420        
GMS-1.0.15 P3 GMS Member authentication when member is joining.         GLASSFISH-14663        
GMS-1.0.16 P1 Factor Shoal GMS grizzly transport dependent classes into shoal-gms-grizzly-1_9.jar and shoal-gms-grizzly-2_0.jar.   Joe
    GLASSFISH-16421        
GMS-1.0.17 P3 Support secure communications with discovery service.
                 

Out of Scope

# Description Comments
GMS-1.1.1 Will not support network interface changes while cluster is running. Will be identifying IPV4 only, IPV6 only or dual stack at startup and work for that mode.
GMS-1.1.2 Will not support network fragmentation that isolates group discovery service from clustered instances. There should be a group discovery service per subnet if it is a concern that routers/network can fail.
GMS-1.1.3 Will not support hybrid approach of using UDP multicast within subnets and unicast between subnets. Simplification to consider all members reachable by UDP multicast or to consider all members communicating via unicast.
GMS-1.1.4 For no DAS case (self-configuring clusters) when there are no instances running,
supporting multiple GMS clustered instances all being started concurrently.
DAS always was first instance in cluster started and it would become master before any other clustered instances were started. Thus, GMS Master Collision Resolution technique has never been tested in glassfish environment. There are no existing tests for this case.  To support this, tests would need to be written and this is the type of concurrent, non-repeatable testing scenario where something like this would work most of time and intermittently fail.  Thus, this is a simplifying non-requirement request. If one simply ensures that after the first instance in cluster is started, that there is a 2 second delay before the next instance is started, it would avoid the chance of issues in the master collision resolution algorithm.
GMS-1.1.5 Will not support hybrid list of master discovery services. It is not expected that the GMS_DISCOVERY_REGISTRY_URI_LIST cluster property will contain the address of one or more REST discovery services and an Amazon S3 service. We will not try to synchronize our master discovery information with an S3 bucket.

Design Document

GMS One Pager for GF 3.2

Quality

  • Link to Test Plan

Documentation

  • Link to Documentation Plan

Demos

  • To be filled in as demos come up each milestone or as appropriate.

Workspace

Shoal workspace is shared by GMS and HA: http://shoal.java.net

GMS-specific parts of GlassFish are in cluster/gms-bootstrap and cluster/gms-adapter modules.

Milestone Schedule

(TBD) Milestones not assigned yet to P3 features.

For reference, here's a link to GlassFish milestone schedule

Item # Date/Milestone Feature-ID JIRA issue ID & link Description QA/Docs Handover? Status / Comments
1 3
GMS-1.0.02 GLASSFISH-16414 Administrator shall be able to configure a cluster to not require UDP multicast    
2 3
GMS-1.0.16 GLASSFISH-16421 Factor Shoal GMS grizzly transport dependent classes into shoal-gms-grizzly-1_9.jar and shoal-gms-grizzly-2_0.jar.    
3 3
GMS-1.0.14 GLASSFISH-16420 New GMS configuration info on cluster and group-management-service element in domain.xml    
4 4
GMS-1.0.01 GLASSFISH-16413 Administrators shall be able to configure a GMS group discovery mechanism for a site.    
5 5
GMS-1.0.03 GLASSFISH-14664 Administrator shall be able to configure GMS TCP point to point messages to use SSL.    
6 5
GMS-1.0.06 GLASSFISH-12194 GMS monitoring stats provider    
7 5
GMS-1.0.11 GLASSFISH-16418 New heartbeat failure detection implementation optimized for non-multicast and no DAS    
8 5
GMS-1.0.13 GLASSFISH-16419 Virtual multicast optimization to send messages concurrently.    
9 6
GMS-1.0.04 GLASSFISH-16415 Administrators shall be able to configure clustered instances to potentially be separated by a firewall.    
10 TBD (P2) GMS-1.0.09 GLASSFISH-16416 Administrator shall be able to configure heartbeats to be sent over UDP unicast transport when multicast is disabled.    
11 (P3) GMS-1.0.07   Administrator shall be able to create up to 10 instances in a cluster    
12 (P3) GMS-1.0.08   Administrator shall be able to create 20 clusters in a domain.    
13 (P3) GMS-1.0.10 GLASSFISH-16417 asadmin get-health needs to work in self configuring(ad hoc clusters) cluster env    
14 (P3) GMS-1.0.12 Workaround in GLASSFISH-16103 Support for OS configured with IPv6 only    
15 (P3) GMS-1.0.15 GLASSFISH-14663 GMS Member authentication when member is joining.    
16 (P3) GMS-1.0.17   Support secure communications with discovery service.    

Task List

Task Target Milestone Start End Date Owner(s) Feature ID Status / Comments
1
3
      GMS-1.0.02  
2
3
      GMS-1.0.16  
3
3
      GMS-1.0.14  
4
4
      GMS-1.0.01  
5
5
      GMS-1.0.03  
6
5
      GMS-1.0.06  
7
5
      GMS-1.0.11  
8
5
      GMS-1.0.13  
9
6
      GMS-1.0.04  
10
TBD
      GMS-1.0.09  
11
        GMS-1.0.07  
12
        GMS-1.0.08  
13
        GMS-1.0.10  
14
        GMS-1.0.12  
15
        GMS-1.0.15  
16
        GMS-1.0.17  

Research

References

Dev Tests

Estimates

Area When Notes

Email Alias