最新の安定バージョンについては、Spring Cloud Kubernetes 5.0.1 を使用してください! |
リーダー選出
Spring Cloud Kubernetes リーダー選出メカニズムは、Kubernetes ConfigMap を使用して Spring Integration のリーダー選出 API を実装します。
複数のアプリケーションインスタンスがリーダーシップをめぐって競合しますが、リーダーシップが与えられるのは 1 つだけです。リーダーシップが付与されると、リーダーアプリケーションはリーダーシップ Context を持つ OnGrantedEvent アプリケーションイベントを受け取ります。アプリケーションは定期的にリーダーシップを獲得しようとし、最初の呼び出し元にリーダーシップが与えられます。リーダーは、クラスターから削除されるか、リーダーシップを放棄するまで、リーダーであり続けます。リーダーの削除が発生すると、前のリーダーは OnRevokedEvent アプリケーションイベントを受け取ります。削除後は、古いリーダーを含め、クラスター内のすべてのインスタンスが新しいリーダーになる可能性があります。
これをプロジェクトに含めるには、次の依存関係を追加します。Fabric8 リーダーの実装
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-fabric8-leader</artifactId>
</dependency>リーダーの選択に使用される構成マップの名前を指定するには、次のプロパティを使用します。
spring.cloud.kubernetes.leader.config-map-name=leaderリーダー選出情報コントリビューター
Spring Cloud Kubernetes Leader には、Spring Boot の /actuator/info エンドポイントにリーダー選出情報を追加する InfoContributor が含まれています。このコントリビューターは、リーダー 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