领导者选举

Spring Cloud Kubernetes 领导者选举机制使用 Kubernetes ConfigMap 实现了 Spring Integration 的领导者选举 API。

多个应用实例竞争领导权,但领导权只会授予一个。当获得领导权时,领导者应用会收到一个带有领导者 ContextOnGrantedEvent 应用事件。应用会周期性地尝试获得领导权,领导权将授予第一个调用者。领导者将保持领导者身份,直到它从集群中移除,或者它放弃领导权。当领导权移除发生时,前任领导者会收到 OnRevokedEvent 应用事件。移除后,集群中的任何实例都可能成为新的领导者,包括旧的领导者。

要将其包含在您的项目中,请添加以下依赖项。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、角色以及当前应用实例是否是领导者。

示例输出

{
  "leaderElection": {
    "leaderId": "my-app-pod-1",
    "role": "my-role",
    "isLeader": true
  }
}

您可以通过在 application.[properties | yaml] 中将 management.info.leader.enabled 设置为 false 来禁用此 InfoContributor

management.info.leader.enabled=false
© . This site is unofficial and not affiliated with VMware.