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, urlFields inherited from class MembershipProviderBase
executor, membership, membershipListener, service -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanaccept(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.voidstart(int level) Start the membership provider.booleanstop(int level) Stop the membership provider.Methods inherited from class CloudMembershipProvider
getEnv, getNamespace, heartbeat, init, messageReceived, updateMemberMethods inherited from class MembershipProviderBase
getMember, getMembers, hasMembers, setMembershipListener, setMembershipService
-
Constructor Details
-
DNSMembershipProvider
public DNSMembershipProvider()
-
-
Method Details
-
start
Description copied from interface:MembershipProviderStart the membership provider.- Specified by:
startin interfaceMembershipProvider- Overrides:
startin 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:MembershipProviderStop the membership provider.- Specified by:
stopin interfaceMembershipProvider- Overrides:
stopin 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:
trueif successful- Throws:
Exception- if an error occurs
-
fetchMembers
Description copied from class:CloudMembershipProviderFetch current cluster members from the cloud orchestration.- Specified by:
fetchMembersin classCloudMembershipProvider- Returns:
- the member array
-
accept
Description copied from interface:ChannelListenerInvoked by the channel to determine if the listener will process this message or not.- Specified by:
acceptin interfaceChannelListener- Overrides:
acceptin classCloudMembershipProvider- Parameters:
msg- Serializablesender- Member- Returns:
- boolean
-