4.3. check スクリプトおよび notify スクリプトの設定
OpenShift Container Platform で IP フェイルオーバーのヘルスモニタリングをカスタマイズし、仮想 IP の状態が変更されたときに通知を受け取るには、ConfigMap オブジェクトを使用してチェックおよび通知スクリプトを設定できます。
チェックおよび通知スクリプトは、IP フェイルオーバー Pod 内で実行され、ホストファイルシステムではなく Pod のファイルシステムを使用します。ホストファイルシステムは、/hosts マウントパスの下から Pod にアクセスできます。check または notify スクリプトを設定する場合は、スクリプトへの完全パスを指定する必要があります。
各 IP フェイルオーバー Pod は、Pod が実行されているノード上の 1 つ以上の仮想 IP(仮想 IP) アドレスを制御する Keepalived デーモンを管理します。Keepalived は、ノード上の各仮想 IP の状態を追跡します。VIP は、マスター、バックアップ、または 障害の いずれかになります。
チェックおよび通知スクリプトの完全なパス名は、Keepalived の設定ファイル /etc/keepalived/keepalived.conf に追加され、Keepalived が起動するたびに読み込まれます。以下のセクションで説明するように、ConfigMap オブジェクトを使用してスクリプトを Pod に追加します。
- Check script
Keepalived は、ユーザーが指定したオプションのチェックスクリプトを定期的に実行することで、アプリケーションの状態を監視します。たとえば、このスクリプトは要求を発行し、応答を検証することで web サーバーをテストします。チェックスクリプトを指定しない場合、Keepalived は TCP 接続をテストするデフォルトのスクリプトを実行します。モニターポートが
0に設定されている場合、このデフォルトテストは抑制されます。チェックスクリプトがゼロ以外の値を返した場合、ノードは
バックアップ状態に入り、ノードが保持しているすべての仮想 IP が再割り当てされます。- Notify script
クラスター管理者として、仮想 IP の状態が変更されるたびに Keepalived が呼び出す通知スクリプトをオプションで指定できます。Keepalived は、通知スクリプトに以下のパラメーターを渡します。
-
1 ドル-グループまたはインスタンス -
2 ドル—グループまたはインスタンスの名前 -
$3— 新しい状態:マスター、バックアップ、または障害
-
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてクラスターにログインしている。
手順
必要なスクリプトを作成し、それを保持する
ConfigMapオブジェクトを作成します。スクリプトには入力引数は指定されず、OKの場合は0を、failの場合は1を返す必要があります。チェックスクリプト
mycheckscript.sh:#!/bin/bash # Whatever tests are needed # E.g., send request and verify response exit 0以下のコマンドを実行して
ConfigMapオブジェクトを作成します。$ oc create configmap mycustomcheck --from-file=mycheckscript.shスクリプトを Pod に追加します。マウントされた
ConfigMapオブジェクトファイルのdefaultMode は、ocコマンドを使用するか、IP フェイルオーバー設定を編集することによって実行できる必要があります。以下のコマンドを実行して、スクリプトを Pod に追加してください。
0755(10 進数で493)という値が一般的です。以下に例を示します。$ oc set env deploy/ipfailover-keepalived \ OPENSHIFT_HA_CHECK_SCRIPT=/etc/keepalive/mycheckscript.sh$ oc set volume deploy/ipfailover-keepalived --add --overwrite \ --name=config-volume \ --mount-path=/etc/keepalive \ --source='{"configMap": { "name": "mycustomcheck", "defaultMode": 493}}'注記oc set envコマンドは空白を区別します。=記号の両側に空白を入れることはできません。または、以下のコマンドを実行して
ipfailover-keepalived の設定を編集します。$ oc edit deploy ipfailover-keepalivedipfailover-keepalived の設定例spec: containers: - env: - name: OPENSHIFT_HA_CHECK_SCRIPT value: /etc/keepalive/mycheckscript.sh ... volumeMounts: - mountPath: /etc/keepalive name: config-volume dnsPolicy: ClusterFirst ... volumes: - configMap: defaultMode: 0755 name: customrouter name: config-volume ...ここでは、以下のようになります。
spec.container.env.name-
OPENSHIFT_HA_CHECK_SCRIPT環境変数がマウントされたスクリプトファイルを指すように指定します。 spec.container.volumeMounts-
マウントポイントを作成する
spec.container.volumeMountsフィールドを指定します。 spec.volumes-
config map を参照するための新しい
spec.volumesフィールドを指定します。 spec.volumes.configMap.defaultMode-
ファイルに対する実行権限を指定します。読み取られる場合は 10 進数 (
493) で表示されます。
-
変更を保存し、エディターを終了します。これにより
、ipfailover-keepalived の設定が再起動されます。