AEM TarMK コールドスタンバイのKeepalived ヘルスチェックの設定
この記事では、Adobe Experience Manager(AEM) TarMK コールドスタンバイ環境でKeepalivedを設定して、プライマリオーサーインスタンスのみがユーザートラフィックを受信し、スタンバイノードが手動プロモーションの前にリクエストを処理できないようにする方法について説明します。
説明 description
TarMK Cold Standbyを使用したAEM オーサーのデプロイメントでは、Keepalivedは多くの場合、トラフィックをアクティブノードに誘導するVirtual IP (VIP)の管理に使用されます。 デフォルトでは、多くの設定では、VIP割り当てのヘルスチェックとして、単純なポートチェック(ポート 8443がリッスンしているかどうかの検証など)が使用されます。 ただし、このアプローチでは、プライマリに昇格されていなくても、スタンバイノードは正常と見なされ、トラフィックを受け取る資格があります。 これにより、ユーザーまたはAPI トラフィックがスタンバイノードにルーティングされる可能性があります。これは、明示的にプロモーションされるまでサポートされません。
環境
- Adobe Experience Manager(AEM)オーサーとTarMK コールドスタンバイ
- 1つのプライマリインスタンスと1つのスタンバイ(コールドスタンバイ)オーサーインスタンス
- 負荷分散のための仮想IP (VIP)の管理
症状
- APIまたはユーザートラフィックは、プライマリに昇格する前に、スタンバイノードに到達することが確認されます
- 特定のエラーメッセージは記録されませんが、トラフィックが予期せずスタンバイノードにルーティングされます
原因
ポートの可用性(ポート 8443など)のみに基づくヘルスチェックでは、プライマリロールとスタンバイロールは区別されません。 これにより、スタンバイノードはVIPの対象となり、TarMK コールドスタンバイトポロジではサポートされていないトラフィックを受け取ることができます。
解決策 resolution
問題を解決するには、次の手順に従います。
-
現在のKeepalived ヘルスチェック設定を確認します。 ポート 8443のみをチェックする場合(例:
/usr/bin/nc -w 3 -zv localhost 8443などのコマンドを使用)、ノードの役割を判断するには十分ではありません。 -
ポート チェックを、ノードがプライマリ オーサーインスタンスとして実行されているかどうかを検証するカスタム ヘルス チェック スクリプトに置き換えます。 例えば、プライマリノードにのみ存在するマーカーファイルや他の信頼性の高いインジケーターを使用できます。
-
カスタムヘルスチェックスクリプトの例(マーカーファイルを使用):
bash #!/bin/bash if [ -f /opt/aem/is_primary ] ; then exit 0 else exit 1 fiマーカーファイル (例:
/opt/aem/is_primary)がプライマリノードにのみ存在することを確認します。 手動プロモーションプロセスの一環として、このファイルを削除または作成します。 -
Keepalived設定を更新して、このカスタムスクリプトをVIPの適格性のヘルスチェックとして使用します。
-
通常の操作中に、ヘルスチェックスクリプトがプライマリノードでのみ成功を返すことを確認します。 スタンバイノードは、昇格するまでヘルスチェックに合格しません。
-
手動プロモーションの場合:
- フェールオーバーが必要な場合は、現在のプライマリノードでAEMを停止します。
- 設定を更新し、マーカーファイルを作成して、スタンバイノードをプライマリに昇格します(例:
touch /opt/aem/is_primary)。 - 新しいプライマリノードでAEMを起動します。
- ヘルスチェックスクリプトが成功し、Keepalivedが新しいプライマリでVIPをアドバタイズできるようになります。
- 高い可用性を維持するために、必要に応じてスタンバイノードを再作成または再設定します。
- 昇格後にVIPを介したアクセスをテストして、アクティブなプライマリノードのみがVIPをアドバタイズし、ユーザートラフィックを受け取ることを確認します。