29.2.2. チェックおよび通知スクリプト
Keepalived は、オプションのユーザー指定のチェックスクリプトを定期的に実行してアプリケーションの正常性をモニターします。たとえば、このスクリプトは要求を発行し、応答を検証することで web サーバーをテストします。
スクリプトは oc adm ipfailover
コマンドに --check-script=<script>
オプションを指定して実行されます。このスクリプトは PASS の場合は 0
で終了するか、または FAIL の場合は 1
で終了する必要があります。
デフォルトでチェックは 2 秒ごとに実行されますが、--check-interval=<seconds>
オプションを使用して頻度を変更することができます。
チェックスクリプトが指定されない場合、TCP 接続 をテストする単純なデフォルトスクリプトが実行されます。このデフォルトテストは、モニターポートが 0
の場合は抑制されます。
それぞれの仮想 IP (VIP) について、keepalived はノードの状態を保持します。ノードの VIP は MASTER、BACKUP、または FAULT の状態になります。FAULT 状態にないノードのすべての VIP はネゴシエーションに参加し、VIP の MASTER を決定します。選ばれなかったすべてのノードは BACKUP 状態になります。MASTER での check スクリプトが失敗すると、VIP は FAULT 状態になり、再ネゴシエーションがトリガーされます。BACKUP が失敗すると、VIP は FAULT 状態になります。check スクリプトが FAULT 状態の VIP に再度渡されると、その VIP は FAULT 状態を終了して MASTER のネゴシエーションを行います。結果としてその VIP の状態は MASTER または BACKUP のいずれかになります。
管理者はオプションの notify スクリプトを提供できます。このスクリプトは状態が変更されるたびに呼び出されます。 Keepalived は以下の 3 つのパラメーターをこのスクリプトに渡します。
-
$1
- "GROUP"|"INSTANCE" -
$2
: グループまたはインスタンスの名前です。 -
$3
: 新規の状態 ("MASTER"|"BACKUP"|"FAULT") です。
これらのスクリプトは IP フェイルオーバー Pod で実行され、ホストのファイルシステムではなく Pod のファイルシステムを使用します。オプションにはスクリプトへの完全パスが必要です。管理者は Pod でスクリプトを利用可能にし、notify スクリプトを実行して結果を抽出できるようにする必要があります。スクリプトを提供する方法として、ConfigMap の使用が推奨されます。
check および notify スクリプトの完全パス名は、keepalived 設定ファイル、/etc/keepalived/keepalived.conf に追加されます。これは keepalived が起動するたびに読み込まれます。スクリプトは以下のように ConfigMap を使って Pod に追加できます。
必要なスクリプトを作成し、これを保持する ConfigMap を作成します。スクリプトには入力引数は指定されず、OK の場合は
0
を、FAIL の場合は1
を返します。check スクリプト 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 に追加する方法として、
oc
コマンドの使用またはデプロイメント設定の編集の 2 つの方法があります。どちらの場合も、マウントされたconfigMap
ファイルのdefaultMode
は実行を許可する必要があります。通常は、値0755
(493
、10 進数) が使用されます。oc
コマンドの使用:$ oc env dc/ipf-ha-router \ OPENSHIFT_HA_CHECK_SCRIPT=/etc/keepalive/mycheckscript.sh $ oc set volume dc/ipf-ha-router --add --overwrite \ --name=config-volume \ --mount-path=/etc/keepalive \ --source='{"configMap": { "name": "mycustomcheck", "defaultMode": 493}}'
ipf-ha-router デプロイメント設定の編集:
oc edit dc ipf-ha-router
を使用し、テキストエディターでルーターデプロイメント設定を編集します。... spec: containers: - env: - name: OPENSHIFT_HA_CHECK_SCRIPT 1 value: /etc/keepalive/mycheckscript.sh ... volumeMounts: 2 - mountPath: /etc/keepalive name: config-volume dnsPolicy: ClusterFirst ... volumes: 3 - configMap: defaultMode: 0755 4 name: customrouter name: config-volume ...
- 変更を保存し、エディターを終了します。これにより ipf-ha-router が再起動します。