Class DNSMembershipProvider

All Implemented Interfaces:
ChannelListener, Heartbeat, MembershipProvider

public class DNSMembershipProvider extends CloudMembershipProvider
A MembershipProvider that uses DNS to retrieve the members of a cluster.

Configuration example for Kubernetes

server.xml

<Server ...

  <Service ...

    <Engine ...

      <Host ...

        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.cloud.CloudMembershipService"
                membershipProviderClassName="org.apache.catalina.tribes.membership.cloud.DNSMembershipProvider"/>
          </Channel>
        </Cluster>
        ...
 
 
minimal example for the Service my-tomcat-app-membership, note the selector
dns-membership-service.yml

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
    description: "The service for tomcat cluster membership."
  name: my-tomcat-app-membership
spec:
  clusterIP: None
  selector:
    app: my-tomcat-app

First Tomcat pod minimal example, note the labels that must correspond to the selector in the service.
tomcat1.yml

apiVersion: v1
kind: Pod
metadata:
  name: tomcat1
  labels:
    app: my-tomcat-app
spec:
  containers:
  - name: tomcat
    image: tomcat
    ports:
    - containerPort: 8080

Environment variable configuration
DNS_MEMBERSHIP_SERVICE_NAME=my-tomcat-app-membership
  • Constructor Details

    • DNSMembershipProvider

      public DNSMembershipProvider()
  • Method Details

    • start

      public void start(int level) throws Exception
      Description copied from interface: MembershipProvider
      Start the membership provider.
      Specified by:
      start in interface MembershipProvider
      Overrides:
      start in class CloudMembershipProvider
      Parameters:
      level - the readiness level
      • Channel.DEFAULT - will start all services
      • Channel.MBR_RX_SEQ - starts the membership receiver
      • Channel.MBR_TX_SEQ - starts the membership broadcaster
      Throws:
      Exception - if an error occurs
    • stop

      public boolean stop(int level) throws Exception
      Description copied from interface: MembershipProvider
      Stop the membership provider.
      Specified by:
      stop in interface MembershipProvider
      Overrides:
      stop in class CloudMembershipProvider
      Parameters:
      level - the readiness level
      • Channel.DEFAULT - will stop all services
      • Channel.MBR_RX_SEQ - stops the membership receiver
      • Channel.MBR_TX_SEQ - stops the membership broadcaster
      Returns:
      true if successful
      Throws:
      Exception - if an error occurs
    • fetchMembers

      protected Member[] fetchMembers()
      Description copied from class: CloudMembershipProvider
      Fetch current cluster members from the cloud orchestration.
      Specified by:
      fetchMembers in class CloudMembershipProvider
      Returns:
      the member array
    • accept

      public boolean accept(Serializable msg, Member sender)
      Description copied from interface: ChannelListener
      Invoked by the channel to determine if the listener will process this message or not.
      Specified by:
      accept in interface ChannelListener
      Overrides:
      accept in class CloudMembershipProvider
      Parameters:
      msg - Serializable
      sender - Member
      Returns:
      boolean