14.2. クラスター内の IP フェイルオーバーの設定
クラスター管理者は、クラスター全体に IP フェイルオーバーを設定することも、ラベルセレクターの定義に基づいてノードのサブセットに IP フェイルオーバーを設定することもできます。クラスター内に IP フェイルオーバーのデプロイメントを複数設定して、それぞれを相互に切り離すこともできます。
IP フェイルオーバーのデプロイメントにより、使用される制約またはラベルに一致する各ノードでフェイルオーバー Pod が実行されるようになります。
この Pod は Keepalived を実行します。これは、最初のノードがサービスまたはエンドポイントに到達できない場合に、エンドポイントを監視し、Virtual Router Redundancy Protocol (VRRP) を使用して仮想 IP (VIP) を別のノードにフェイルオーバーできます。
				実稼働環境で使用する場合は、少なくとも 2 つのノードを選択し、選択したノードの数に相当する replicas を設定する selector を設定します。
			
前提条件
- 
						cluster-admin権限を持つユーザーとしてクラスターにログインしている。
- プルシークレットを作成している。
- Red Hat OpenStack Platform (RHOSP) のみ: - ターゲット環境に RHOSP クライアント (RHCOS ドキュメント) をインストールした。
- 
								RHOSP openrc.shrc ファイル (RHCOS ドキュメント) をダウンロードした。
 
手順
- IP フェイルオーバーのサービスアカウントを作成します。 - oc create sa ipfailover - $ oc create sa ipfailover- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- hostNetworkの SCC (Security Context Constraints) を更新します。- oc adm policy add-scc-to-user privileged -z ipfailover - $ oc adm policy add-scc-to-user privileged -z ipfailover- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - oc adm policy add-scc-to-user hostnetwork -z ipfailover - $ oc adm policy add-scc-to-user hostnetwork -z ipfailover- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Red Hat OpenStack Platform (RHOSP) のみ: フェイルオーバー仮想 IP アドレスが RHOSP ポートに到達できるように、次の手順を実行します。 - RHOSP CLI を使用して、RHOSP クラスターの - allowed_address_pairsパラメーターのデフォルトの RHOSP API および仮想 IP アドレスを表示します。- openstack port show <cluster_name> -c allowed_address_pairs - $ openstack port show <cluster_name> -c allowed_address_pairs- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - *Field* *Value* allowed_address_pairs ip_address='192.168.0.5', mac_address='fa:16:3e:31:f9:cb' ip_address='192.168.0.7', mac_address='fa:16:3e:31:f9:cb'- *Field* *Value* allowed_address_pairs ip_address='192.168.0.5', mac_address='fa:16:3e:31:f9:cb' ip_address='192.168.0.7', mac_address='fa:16:3e:31:f9:cb'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- RHOSP CLI で次のコマンドを入力して、IP フェイルオーバーのデプロイメントに別の仮想 IP アドレスを設定し、RHOSP のポートでそのアドレスに到達できるようにします。デフォルトの RHOSP API および仮想 IP アドレスを、IP フェイルオーバーのデプロイメントのフェイルオーバー仮想 IP アドレスとして設定しないでください。 - 1.1.1.1フェイルオーバー IP アドレスを RHOSP ポートの許可されたアドレスとして追加する例- openstack port set <cluster_name> --allowed-address ip-address=1.1.1.1,mac-address=fa:fa:16:3e:31:f9:cb - $ openstack port set <cluster_name> --allowed-address ip-address=1.1.1.1,mac-address=fa:fa:16:3e:31:f9:cb- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- デプロイメントの IP フェイルオーバーを設定するためのデプロイメント YAML ファイルを作成します。後の手順の「IP フェイルオーバー設定のデプロイメント YAML の例」を参照してください。
- IP フェイルオーバーのデプロイメントで次の仕様を指定して、フェイルオーバー仮想 IP アドレスを - OPENSHIFT_HA_VIRTUAL_IPS環境変数に渡します。- OPENSHIFT_HA_VIRTUAL_IPSに- 1.1.1.1仮想 IP アドレスを追加する例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- IP フェイルオーバーを設定するためのデプロイメント YAML ファイルを作成します。 注記- Red Hat OpenStack Platform (RHOSP) の場合、デプロイメント YAML ファイルを再作成する必要はありません。このファイルは、以前の手順ですでに作成されています。 - IP フェイルオーバー設定のデプロイメント YAML の例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- IP フェイルオーバーデプロイメントの名前。
- 2
- レプリケートする IP アドレス範囲のリスト。これは指定する必要があります。例:1.2.3.4-6,1.2.3.9
- 3
- VRRP に作成するグループの数。これが設定されていない場合、グループはOPENSHIFT_HA_VIP_GROUPS変数で指定されている仮想 IP 範囲ごとに作成されます。
- 4
- IP フェイルオーバーが VRRP トラフィックの送信に使用するインターフェイス名。デフォルトでeth0が使用されます。
- 5
- IP フェイルオーバー Pod は、各 VIP のこのポートに対して TCP 接続を開こうとします。接続が設定されると、サービスは実行中であると見なされます。このポートが0に設定される場合、テストは常にパスします。デフォルト値は80です。
- 6
- 仮想ルーター ID の設定に使用されるオフセット値。異なるオフセット値を使用すると、複数の IP フェイルオーバー設定が同じクラスター内に存在できるようになります。デフォルトのオフセットは0で、許可される範囲は0から255までです。
- 7
- 作成するレプリカの数です。これは、IP フェイルオーバーデプロイメント設定のspec.replicas値に一致する必要があります。デフォルト値は2です。
- 8
- iptablesチェーンの名前であり、- iptablesルールを自動的に追加し、VRRP トラフィックをオンにすることを許可するために使用されます。この値が設定されていない場合、- iptablesルールは追加されません。チェーンが存在しない場合は作成されず、Keepalived はユニキャストモードで動作します。デフォルトは- INPUTです。
- 9
- 状態が変更されるたびに実行されるスクリプトの Pod ファイルシステム内の完全パス名。
- 10
- アプリケーションが動作していることを確認するために定期的に実行されるスクリプトの Pod ファイルシステム内の完全パス名。
- 11
- 新たな優先度の高いホストを処理するためのストラテジー。デフォルト値はpreempt_delay 300で、優先順位の低いマスターが VIP を保持する場合に、Keepalived インスタンスが VIP を 5 分後に引き継ぎます。
- 12
- check スクリプトが実行される期間 (秒単位)。デフォルト値は2です。
- 13
- デプロイメントを作成する前にプルシークレットを作成します。作成しない場合には、デプロイメントの作成時にエラーが発生します。