Class DNSMembershipProvider
java.lang.Object
org.apache.catalina.tribes.membership.MembershipProviderBase
org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
org.apache.catalina.tribes.membership.cloud.DNSMembershipProvider
- All Implemented Interfaces:
ChannelListener, Heartbeat, MembershipProvider
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 selectordns-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 configurationDNS_MEMBERSHIP_SERVICE_NAME=my-tomcat-app-membership
-
Field Summary
Fields inherited from class CloudMembershipProvider
connectionTimeout, CUSTOM_ENV_PREFIX, expirationTime, headers, localIp, md5, port, readTimeout, sm, startTime, streamProvider, url
Fields inherited from class MembershipProviderBase
executor, membership, membershipListener, service
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
accept
(Serializable msg, Member sender) Invoked by the channel to determine if the listener will process this message or not.protected Member[]
Fetch current cluster members from the cloud orchestration.void
start
(int level) Start the membership provider.boolean
stop
(int level) Stop the membership provider.Methods inherited from class CloudMembershipProvider
getEnv, getNamespace, heartbeat, init, messageReceived, updateMember
Methods inherited from class MembershipProviderBase
getMember, getMembers, hasMembers, setMembershipListener, setMembershipService
-
Constructor Details
-
DNSMembershipProvider
public DNSMembershipProvider()
-
-
Method Details
-
start
Description copied from interface:MembershipProvider
Start the membership provider.- Specified by:
start
in interfaceMembershipProvider
- Overrides:
start
in classCloudMembershipProvider
- 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
Description copied from interface:MembershipProvider
Stop the membership provider.- Specified by:
stop
in interfaceMembershipProvider
- Overrides:
stop
in classCloudMembershipProvider
- 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
Description copied from class:CloudMembershipProvider
Fetch current cluster members from the cloud orchestration.- Specified by:
fetchMembers
in classCloudMembershipProvider
- Returns:
- the member array
-
accept
Description copied from interface:ChannelListener
Invoked by the channel to determine if the listener will process this message or not.- Specified by:
accept
in interfaceChannelListener
- Overrides:
accept
in classCloudMembershipProvider
- Parameters:
msg
- Serializablesender
- Member- Returns:
- boolean
-