3.21. マルチクラスターデプロイメントのヘルスチェック
マルチクラスターデプロイメントの健全性を検証します。
OpenShift 環境で マルチクラスターデプロイメント を実行する場合は、すべてが期待どおりに稼働しているかどうかを確認するチェックを自動化する必要があります。
このページでは、Red Hat build of Keycloak のマルチクラスターセットアップを検証するために使用できる URL、OpenShift リソース、およびヘルスチェックエンドポイントの概要を示します。
3.21.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
プロアクティブなモニタリングストラテジーは、問題がユーザーに影響を与える前に検出して警告することを目的としています。このストラテジーは、Red Hat build of Keycloak の回復力と可用性を高める鍵となります。
さまざまなアーキテクチャーコンポーネント (アプリケーションの健全性、負荷分散、キャッシュ、全体的なシステムの状態など) を対象とするヘルスチェックは、次の点で重要です。
- 高可用性の確保
- すべてのサイトとロードバランサーが動作していることを確認することは、1 つのサイトがダウンした場合でもシステムがリクエストを処理できることを保証するための鍵となります。
- パフォーマンスの維持
- Red Hat build of Keycloak は、Data Grid キャッシュの健全性と分散をチェックすることで、セッションやその他の一時データを効率的に処理し、最適なパフォーマンスを維持できます。
- オペレーションの回復力
- Red Hat build of Keycloak の健全性と OpenShift 環境内の依存関係の健全性を継続的に監視することにより、システムは問題を迅速に特定し、場合によっては自動的に修復して、ダウンタイムを削減できます。
3.21.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Kubectl CLI のインストールと設定 が完了している。
- オペレーティングシステムにインストールされていない場合、jq をインストールする。
3.21.3. 特定のヘルスチェック リンクのコピーリンクがクリップボードにコピーされました!
3.21.3.1. Red Hat build of Keycloak のロードバランサーとサイト リンクのコピーリンクがクリップボードにコピーされました!
ロードバランサーと、プライマリーサイトおよびバックアップサイトの両方を通じて、Red Hat build of Keycloak の健全性を確認します。これにより、Red Hat build of Keycloak にアクセスでき、さまざまな地理的またはネットワーク上の場所をまたいで負荷分散メカニズムが正しく機能することが確保されます。
このコマンドは、Red Hat build of Keycloak アプリケーションの設定済みデータベースへの接続のヘルスステータスを返すため、データベース接続の信頼性を確認できます。このコマンドは管理ポートでのみ使用でき、外部 URL からは使用できません。OpenShift セットアップでは、Pod の準備を完了するために health/ready サブステータスが定期的にチェックされます。
curl -s https://keycloak:managementport/health
curl -s https://keycloak:managementport/health
このコマンドは、ロードバランサーの lb-check エンドポイントを検証し、Red Hat build of Keycloak アプリケーションクラスターが稼働していることを確認します。
curl -s https://keycloak-load-balancer-url/lb-check
curl -s https://keycloak-load-balancer-url/lb-check
以下のコマンドは、マルチクラスターセットアップの Red Hat build of Keycloak の Site A および Site B の実行ステータスを返します。
curl -s https://keycloak_site_a_url/lb-check curl -s https://keycloak_site_b_url/lb-check
curl -s https://keycloak_site_a_url/lb-check
curl -s https://keycloak_site_b_url/lb-check
3.21.3.2. Data Grid キャッシュの健全性 リンクのコピーリンクがクリップボードにコピーされました!
外部 Data Grid クラスター内のデフォルトのキャッシュマネージャーと個々のキャッシュの健全性を確認します。Data Grid は、Red Hat build of Keycloak のデプロイメントで分散キャッシュやセッションクラスタリングに使用されることが多いため、このチェックは Red Hat build of Keycloak のパフォーマンスと信頼性において重要です。
このコマンドは、Data Grid キャッシュマネージャーの総合的な健全性を返します。つまり、管理者ユーザーが健全性ステータスを取得するためにユーザー認証情報を提供する必要がないため便利です。
curl -s https://infinispan_rest_url/rest/v2/cache-managers/default/health/status
curl -s https://infinispan_rest_url/rest/v2/cache-managers/default/health/status
上記のヘルスチェックとは異なり、以下のヘルスチェックでは、外部 Data Grid クラスターキャッシュの全体的な健全性を確認するためのリクエストの一部として、管理者ユーザーは Data Grid ユーザーの認証情報を提供する必要があります。
curl -u <infinispan_user>:<infinispan_pwd> -s https://infinispan_rest_url/rest/v2/cache-managers/default/health \ | jq 'if .cluster_health.health_status == "HEALTHY" and (all(.cache_health[].status; . == "HEALTHY")) then "HEALTHY" else "UNHEALTHY" end'
curl -u <infinispan_user>:<infinispan_pwd> -s https://infinispan_rest_url/rest/v2/cache-managers/default/health \
| jq 'if .cluster_health.health_status == "HEALTHY" and (all(.cache_health[].status; . == "HEALTHY")) then "HEALTHY" else "UNHEALTHY" end'
jq フィルターは、個々のキャッシュの健全性に基づいて全体的な健全性を計算するのに便利です。jq フィルターなしで上記のコマンドを実行すると、すべての詳細を確認できます。
3.21.3.3. Data Grid クラスターの分散 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターの分散の健全性を評価し、クラスターのノードがデータを正しく分散していることを確認します。このステップは、キャッシュレイヤーのスケーラビリティーとフォールトトレランスにとって不可欠です。
expectedCount 3 引数を、クラスター内の合計ノード数と一致するように変更し、その健全性を検証できます。
curl <infinispan_user>:<infinispan_pwd> -s https://infinispan_rest_url/rest/v2/cluster\?action\=distribution \ | jq --argjson expectedCount 3 'if map(select(.node_addresses | length > 0)) | length == $expectedCount then "HEALTHY" else "UNHEALTHY" end'
curl <infinispan_user>:<infinispan_pwd> -s https://infinispan_rest_url/rest/v2/cluster\?action\=distribution \
| jq --argjson expectedCount 3 'if map(select(.node_addresses | length > 0)) | length == $expectedCount then "HEALTHY" else "UNHEALTHY" end'
3.21.3.4. 全体的な Data Grid システムの健全性 リンクのコピーリンクがクリップボードにコピーされました!
oc CLI ツールを使用して、指定された namespace 内の Data Grid クラスターと Red Hat build of Keycloak サービスのヘルスステータスを照会します。この包括的なチェックにより、Red Hat build of Keycloak デプロイメントのすべてのコンポーネントが OpenShift 環境内で動作し、正しく設定されていることを確認できます。
oc get infinispan -n <NAMESPACE> -o json \
| jq '.items[].status.conditions' \
| jq 'map({(.type): .status})' \
| jq 'reduce .[] as $item ([]; . + [keys[] | select($item[.] != "True")]) | if length == 0 then "HEALTHY" else "UNHEALTHY: " + (join(", ")) end'
oc get infinispan -n <NAMESPACE> -o json \
| jq '.items[].status.conditions' \
| jq 'map({(.type): .status})' \
| jq 'reduce .[] as $item ([]; . + [keys[] | select($item[.] != "True")]) | if length == 0 then "HEALTHY" else "UNHEALTHY: " + (join(", ")) end'
3.21.3.5. OpenShift における Red Hat build of Keycloak の準備状態 リンクのコピーリンクがクリップボードにコピーされました!
具体的には、OpenShift での Red Hat build of Keycloak デプロイメントの準備状態とローリング更新条件をチェックし、Red Hat build of Keycloak インスタンスが完全に動作しており、可用性に影響を与える可能性のある更新が行われていないことを確認します。
oc wait --for=condition=Ready --timeout=10s keycloaks.k8s.keycloak.org/keycloak -n <NAMESPACE> oc wait --for=condition=RollingUpdate=False --timeout=10s keycloaks.k8s.keycloak.org/keycloak -n <NAMESPACE>
oc wait --for=condition=Ready --timeout=10s keycloaks.k8s.keycloak.org/keycloak -n <NAMESPACE>
oc wait --for=condition=RollingUpdate=False --timeout=10s keycloaks.k8s.keycloak.org/keycloak -n <NAMESPACE>