|
请使用 Spring Cloud Kubernetes 5.0.1(最新稳定版本)! |
领导选举
Spring Cloud Kubernetes 的领导者选举机制使用 Kubernetes ConfigMap 实现了 Spring Integration 的领导者选举 API。
多个应用实例竞争领导权,但领导权仅授予其中一个。
当获得领导权时,领导者应用将收到一个 OnGrantedEvent 应用事件,其中领导权为 Context。
应用会定期尝试获取领导权,领导权授予首个请求者。
领导者将保持其领导地位,直至其从集群中被移除或主动放弃领导权。
当领导权被移除时,前一领导者将收到 OnRevokedEvent 应用事件。
移除后,集群中的任何实例均可成为新的领导者,包括原领导者。
要将其包含在您的项目中,请添加以下依赖项。<br/>Fabric8 领导者实现
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-fabric8-leader</artifactId>
</dependency>
要指定用于领导者选举的配置映射(configmap)名称,请使用以下属性。
spring.cloud.kubernetes.leader.config-map-name=leader
领导者选举信息贡献者
Spring Cloud Kubernetes Leader 包含一个 InfoContributor,该组件将领导者选举信息添加到 Spring Boot 的 /actuator/info 端点中。此贡献者提供当前领导者的相关信息,包括领导者 ID、角色以及当前应用实例是否为领导者。
Example output:
{
"leaderElection": {
"leaderId": "my-app-pod-1",
"role": "my-role",
"isLeader": true
}
}
您可以将此 InfoContributor 禁用,方法是在 application.[properties | yaml] 中将 management.info.leader.enabled 设置为 false:
management.info.leader.enabled=false