Ensemble Membership Service

This document is a part of online Ensemble documentation. See also Maestro Open Toolkit.

Ensemble Membership Service

Normally, Ensemble application groups implement their own group membership protocol. However, they have the option of using the Ensemble membership service implemented by the groupd application. groupd is a service for managing multiple process groups. It uses a core group of Ensemble processes to participate in managing these groups. Clients connect to the service via TCP connections, through which they request to join and leave groups. The service supports a simple protocol through which the clients can obtain virtual synchronous properties. The service also supports weaker properties that give faster membership notifications.

We emphasize that Ensemble applications can operate independently of a membership service.

Some of the benefits of using this service are:

  • When there are no membership changes, the clients communicate directly between themselves, so the membership service has no affect on performance.
  • The service implements group membership for multiple groups. The costs of the group membership protocols (such as failure detection) are shared over the groups.
  • Because applications are sharing the same membership service, they see consistent views and failure detections.
  • The client part of the protocol for implementing virtual synchrony is simple. Most of the complexity is in the server. This allows client programs to be implemented in languages other than ML, but save much of the programming burden because the servers handle the ``hard'' group membership protocols. The client TCP interface is described in the Ensemble reference manual.
  • Applications that do not need the full virtual synchrony properties can use weaker synchronization protocols and get faster view changes.
  • The service allows groups to scale to larger sizes. The membership servers do not need to run on all the hosts on which the clients run, so clients can be on more hosts than are normally supported by Ensemble.

    Starting Membership Service

    In order to start membership service, set the ENS_GROUPD_PORT environment variable to select the TCP port for the service to use. The membership service is executed through the groupd application program:

    % groupd

    It takes command-line arguments similar to the other Ensemble demonstration programs. Normally, each host runs a server.

    Other demo applications use the service when the -groupd command-line argument is selected. For example:

    % mtalk -groupd

    Note that you must have a groupd server running on the same host as mtalk for this to work.

    Configuration Parameters

  • -groupd_port port: sets the port that the membership groupd servers use.
  • -groupd_hosts arg: sets the hosts that the membership groupd servers use. Format is the same as for -gossip_hosts.
  • -groupd: Use the membership service on the local host. This option may override others.


    send mail to hayden@cs.cornell.edu