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 Detail

      • DNSMembershipProvider

        public DNSMembershipProvider()
    • Method Detail

      • start

        public void start​(int level)
                   throws java.lang.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:
        java.lang.Exception - if an error occurs
      • stop

        public boolean stop​(int level)
                     throws java.lang.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:
        java.lang.Exception - if an error occurs
      • accept

        public boolean accept​(java.io.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