4.2. クラスター内の IP フェイルオーバーの設定


OpenShift Container Platform クラスターで IP フェイルオーバーを設定し、仮想 IP アドレスの高可用性を実現するには、選択したノードで Keepalived を実行するデプロイメントを作成し、サービスを監視して、ノードが利用不能になった場合に VIP をフェイルオーバーさせることができます。

IP フェイルオーバーのデプロイメントにより、使用される制約またはラベルに一致する各ノードでフェイルオーバー Pod が実行されるようになります。Keepalived を実行する Pod は、エンドポイントを監視し、最初のノードがサービスまたはエンドポイントに到達できない場合に、Virtual Router Redundancy Protocol (VRRP) を使用して仮想 IP(仮想 IP) をあるノードから別のノードにフェイルオーバーすることができます。

実稼働環境で使用する場合は、少なくとも 2 つのノードを選択し、選択したノードの数に相当する replicas を設定する selector を設定します。

前提条件

手順

  1. IP フェイルオーバーのサービスアカウントを作成します。

    $ oc create sa ipfailover
  2. hostNetwork の Security Context Constraints (SCC) を更新します。

    $ oc adm policy add-scc-to-user privileged -z ipfailover
    $ oc adm policy add-scc-to-user hostnetwork -z ipfailover
  3. Red Hat OpenStack Platform (RHOSP) のみ: フェイルオーバー仮想 IP アドレスが RHOSP ポートに到達できるように、次の手順を実行します。

    1. RHOSP CLI を使用して、RHOSP クラスターの allowed_address_pairs パラメーターのデフォルトの RHOSP API および仮想 IP アドレスを表示します。

      $ openstack port show <cluster_name> -c allowed_address_pairs

      出力例

      *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'

    2. 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

    3. デプロイメントの IP フェイルオーバーを設定するためのデプロイメント YAML ファイルを作成します。後の手順の「IP フェイルオーバー設定のデプロイメント YAML の例」を参照してください。
    4. IP フェイルオーバーのデプロイメントで次の仕様を指定して、フェイルオーバー仮想 IP アドレスを OPENSHIFT_HA_VIRTUAL_IPS 環境変数に渡します。

      OPENSHIFT_HA_VIRTUAL_IPS1.1.1.1 仮想 IP アドレスを追加する例

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: ipfailover-keepalived
      # ...
            spec:
                env:
                - name: OPENSHIFT_HA_VIRTUAL_IPS
                value: "1.1.1.1"
      # ...

  4. IP フェイルオーバーを設定するためのデプロイメント YAML ファイルを作成します。

    注記

    Red Hat OpenStack Platform (RHOSP) の場合、デプロイメント YAML ファイルを再作成する必要はありません。このファイルは、以前の手順ですでに作成されています。

    IP フェイルオーバー設定のデプロイメント YAML の例

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ipfailover-keepalived
      labels:
        ipfailover: hello-openshift
    spec:
      strategy:
        type: Recreate
      replicas: 2
      selector:
        matchLabels:
          ipfailover: hello-openshift
      template:
        metadata:
          labels:
            ipfailover: hello-openshift
        spec:
          serviceAccountName: ipfailover
          privileged: true
          hostNetwork: true
          nodeSelector:
            node-role.kubernetes.io/worker: ""
          containers:
          - name: openshift-ipfailover
            image: registry.redhat.io/openshift4/ose-keepalived-ipfailover-rhel9:v4.20
            ports:
            - containerPort: 63000
              hostPort: 63000
            imagePullPolicy: IfNotPresent
            securityContext:
              privileged: true
            volumeMounts:
            - name: lib-modules
              mountPath: /lib/modules
              readOnly: true
            - name: host-slash
              mountPath: /host
              readOnly: true
              mountPropagation: HostToContainer
            - name: etc-sysconfig
              mountPath: /etc/sysconfig
              readOnly: true
            - name: config-volume
              mountPath: /etc/keepalive
            env:
            - name: OPENSHIFT_HA_CONFIG_NAME
              value: "ipfailover"
            - name: OPENSHIFT_HA_VIRTUAL_IPS
              value: "1.1.1.1-2"
            - name: OPENSHIFT_HA_VIP_GROUPS
              value: "10"
            - name: OPENSHIFT_HA_NETWORK_INTERFACE
              value: "ens3" #The host interface to assign the VIPs
            - name: OPENSHIFT_HA_MONITOR_PORT
              value: "30060"
            - name: OPENSHIFT_HA_VRRP_ID_OFFSET
              value: "10"
            - name: OPENSHIFT_HA_REPLICA_COUNT
              value: "2" #Must match the number of replicas in the deployment
            - name: OPENSHIFT_HA_USE_UNICAST
              value: "false"
            #- name: OPENSHIFT_HA_UNICAST_PEERS
              #value: "10.0.148.40,10.0.160.234,10.0.199.110"
            - name: OPENSHIFT_HA_IPTABLES_CHAIN
              value: "INPUT"
            #- name: OPENSHIFT_HA_NOTIFY_SCRIPT
            #  value: /etc/keepalive/mynotifyscript.sh
            - name: OPENSHIFT_HA_CHECK_SCRIPT
              value: "/etc/keepalive/mycheckscript.sh"
            - name: OPENSHIFT_HA_PREEMPTION
              value: "preempt_delay 300"
            - name: OPENSHIFT_HA_CHECK_INTERVAL
              value: "2"
            livenessProbe:
              initialDelaySeconds: 10
              exec:
                command:
                - pgrep
                - keepalived
          volumes:
          - name: lib-modules
            hostPath:
              path: /lib/modules
          - name: host-slash
            hostPath:
              path: /
          - name: etc-sysconfig
            hostPath:
              path: /etc/sysconfig
          # config-volume contains the check script
          # created with `oc create configmap keepalived-checkscript --from-file=mycheckscript.sh`
          - configMap:
              defaultMode: 0755
              name: keepalived-checkscript
            name: config-volume
          imagePullSecrets:
            - name: openshift-pull-secret

    ここでは、以下のようになります。

    IP フェイルオーバーキープ
    IP フェイルオーバーデプロイメントの名前を指定します。
    OPENSHIFT_HA_VIRTUAL_IPS
    複製する IP アドレス範囲のリストを指定します。これは指定する必要があります。例: 1.2.3.4-6,1.2.3.9
    OPENSHIFT_HA_VIP_GROUPS
    VRRP 用に作成するグループ数を指定します。これが設定されていない場合、グループは OPENSHIFT_HA_VIP_GROUPS 変数で指定されている仮想 IP 範囲ごとに作成されます。
    OPENSHIFT_HA_NETWORK_INTERFACE
    IP フェイルオーバーが VRRP トラフィックを送信するために使用するインターフェイス名を指定します。デフォルトで eth0 が使用されます。
    OPENSHIFT_HA_MONITOR_PORT
    IP フェイルオーバー Pod が、各仮想 IP 上のこのポートへの TCP 接続を開こうとすることを指定します。接続が設定されると、サービスは実行中であると見なされます。このポートが 0 に設定される場合、テストは常にパスします。デフォルト値は 80 です。
    OPENSHIFT_HA_VRRP_ID_OFFSET
    仮想ルーター ID を設定する際に使用するオフセット値を指定します。異なるオフセット値を使用すると、複数の IP フェイルオーバー設定が同じクラスター内に存在できるようになります。デフォルトのオフセットは 10 で、許可される範囲は 0 から 255 までです。
    OPENSHIFT_HA_REPLICA_COUNT
    作成するレプリカの数を指定します。これは、IP フェイルオーバー設定の spec.replicas の 値と一致する必要があります。デフォルト値は 2 です。
    OPENSHIFT_HA_USE_UNICAST
    VRRP でユニキャストモードを使用するかどうかを指定します。デフォルト値は false です。
    OPENSHIFT_HA_UNICAST_PEERS
    ユニキャストピアの IP アドレスのリストを指定します。OPENSHIFT_HA_USE_UNICASTtrue に設定されている場合は、これを提供する必要があります。
    OPENSHIFT_HA_IPTABLES_CHAIN
    VRRP トラフィックを許可するための iptables ルールを自動的に追加する iptables チェーンの名前を指定します。この値が設定されていない場合、iptables ルールは追加されません。チェーンが存在しない場合は作成されず、Keepalived はユニキャストモードで動作します。デフォルトは INPUT です。
    OPENSHIFT_HA_NOTIFY_SCRIPT
    状態が変化するたびに実行されるスクリプトの、Pod ファイルシステム内の完全なパス名を指定します。
    OPENSHIFT_HA_CHECK_SCRIPT
    アプリケーションが正常に動作していることを確認するために定期的に実行されるスクリプトの、Pod ファイルシステム内の完全なパス名を指定します。
    OPENSHIFT_HA_PREEMPTION
    優先度の高い新しいホストを処理するためのストラテジーを指定します。デフォルト値は preempt_delay 300 で、優先順位の低いマスターが VIP を保持する場合に、Keepalived インスタンスが VIP を 5 分後に引き継ぎます。
    OPENSHIFT_HA_CHECK_INTERVAL
    チェックスクリプトが実行される期間を秒単位で指定します。デフォルト値は 2 です。
    openshift-pull-secret
    IP フェイルオーバーデプロイメントに使用するプルシークレットの名前を指定します。デプロイメントを作成する前にプルシークレットを作成します。作成しない場合には、デプロイメントの作成時にエラーが発生します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る