OpenShift ワークロード用の OpenShift Data Foundation Disaster Recovery の設定


Red Hat OpenShift Data Foundation 4.11

テクノロジープレビュー: このソリューションはテクノロジープレビュー機能であり、運用環境での実行を意図したものではありません。

Red Hat Storage Documentation Team

概要

このソリューションガイドの目的は、災害復旧向けに OpenShift Data Foundation を Advanced Cluster Management と共にデプロイするのに必要な手順の詳細を提供し、可用性の高いストレージインフラストラクチャーを実現することです。
重要
Configuring OpenShift Data Foundation Disaster Recovery solution is a Technology Preview feature. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があれば、ぜひお知らせください。

フィードバックを送信するには、Bugzilla チケットを作成します。

  1. Bugzilla の Web サイトに移動します。
  2. Component セクションで、documentation を選択します。
  3. Description フィールドに、ドキュメントの改善に向けたご提案を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  4. Submit Bug をクリックします。

第1章 OpenShift Data Foundation 災害復旧の概要

障害復旧 (DR) は、自然災害または人為的災害からビジネスクリティカルなアプリケーションを回復し、継続する機能です。これは、重大な有害事象の発生時に事業の継続性を維持するために設計されている、主要な組織における事業継続ストラテジー全体の設定要素です。

OpenShift Data Foundation の DR 機能は、複数の Red Hat OpenShift Container Platform クラスターにわたる DR を可能にし、次のように分類されます。

  • Metro-DR

    Metro-DR は、データセンターが利用できない場合でも、データを失うことなくビジネスの継続性を保証します。パブリッククラウドでは、これらはアベイラビリティーゾーンの障害からの保護に似ています。

  • Regional-DR

    Regional-DR は、地理的な地域が利用できない場合でもビジネス継続性を確保し、予測可能な量のデータの損失を受け入れます。パブリッククラウドでは、これはリージョンの障害からの保護と似ています。

Metro-DR のゾーン障害と Regional-DR のリージョン障害は、通常、目標復旧時点 (RPO)目標復旧時間 (RTO) という用語を使用して表現されます。

  • RPO は、永続データのバックアップまたはスナップショットを作成する頻度の尺度です。実際には、RPO は、停止後に失われるか、再入力する必要があるデータの量を示します。
  • RTO は、企業が許容できるダウンタイムの量です。RTO は、ビジネスの中断が通知されてから、システムが回復するまでにどれくらいかかるか? という質問に答えます。

このガイドの目的は、ある OpenShift Container Platform クラスターから別のクラスターにアプリケーションをフェイルオーバーし、同じアプリケーションを元のプライマリークラスターに再配置するために必要な災害復旧の手順とコマンドについて詳しく説明することです。

第2章 障害復旧サブスクリプションの要件

Red Hat OpenShift Data Foundation でサポートされる障害復旧機能では、障害復旧ソリューションを正常に実装するために以下の前提条件をすべて満たす必要があります。

  • 有効な Red Hat OpenShift Data Foundation Advanced エンタイトルメント
  • 有効な Red Hat Advanced Cluster Management for Kubernetes サブスクリプション

ソースまたは宛先としてアクティブレプリケーションに参加している PV を含む Red Hat OpenShift Data Foundation クラスターには、OpenShift Data Foundation Advanced エンタイトルメントが必要です。このサブスクリプションは、ソースクラスターと宛先クラスターの両方でアクティブにする必要があります。

OpenShift Data Foundation のサブスクリプションの仕組みを確認するには、OpenShift Data Foundation subscriptions に関するナレッジベースの記事 を参照してください。

第3章 OpenShift Data Foundation の地域 DR ソリューション

3.1. Regional-DR ソリューションのコンポーネント

Regional-DR は Red Hat Advanced Cluster Management for Kubernetes と OpenShift Data Foundation コンポーネントで設定され、Red Hat OpenShift Container Platform クラスター間でアプリケーションとデータの移動を提供します。

Red Hat Advanced Cluster Management for Kubernetes

Red Hat Advanced Cluster Management (RHACM)) は、複数のクラスターとアプリケーションのライフサイクルを管理する機能を提供します。したがって、マルチクラスター環境でのコントロールプレーンとして機能します。

RHACM は 2 つの部分に分かれています。

  • RHACM ハブ: マルチクラスターコントロールプレーンで実行されるコンポーネントが含まれます。
  • マネージドクラスター: マネージドクラスターには、マネージドクラスターで実行されるコンポーネントが含まれます。

この製品の詳細については、RHACM のドキュメント および RHACM のアプリケーションの管理 を参照してください。

OpenShift Data Foundation

OpenShift Data Foundation は、OpenShift Container Platform クラスターでステートフルなアプリケーション用のストレージをプロビジョニングし、管理する機能を提供します。

OpenShift Data Foundation はストレージプロバイダーとして Ceph をベースとしていて、そのライフサイクルは OpenShift Data Foundation コンポーネントスタックの Rook によって管理されます。Ceph-CSI は、ステートフルなアプリケーション用の永続ボリュームのプロビジョニングと管理を提供します。

OpenShift Data Foundation スタックは、以下の災害復旧機能で強化されました。

  • OpenShift Data Foundation インスタンス (クラスター) 間でのミラーリングのために RBD ブロックプールを有効にします。
  • RBD ブロックプール内の特定のイメージをミラーリングする機能
  • Persistent Volume Claim (PVC) ミラーリングごとに管理する csi アドオンを提供します

OpenShift DR

OpenShift DR は、RHACM を使用して管理される一連のピア OpenShift クラスター全体でステートフルアプリケーションを設定および管理するための一連のオーケストレーターであり、永続ボリューム上のアプリケーションの状態のライフサイクルを調整するためのクラウドネイティブインターフェイスを提供します。これには以下が含まれます。

  • OpenShift クラスター全体でアプリケーションとその状態関係を保護する
  • アプリケーションとその状態をピアクラスターにフェイルオーバーする
  • アプリケーションとその状態を以前にデプロイされたクラスターに再配置する

OpenShift DR は 3 つのコンポーネントに分類されます。

  • ODF マルチクラスターオーケストレーター: マルチクラスターコントロールプレーン (RHACM ハブ) にインストールされ、メトロおよびリージョナル DR 関係のために OpenShift Data Foundation クラスターの設定とピアリングを調整します。
  • OpenShift DR Hub Operator: ハブクラスターに ODF Multicluster Orchestrator インストールの一部として自動的にインストールされ、DR 対応アプリケーションのフェイルオーバーまたは再配置を調整します。
  • OpenShift DR Cluster Operator : Metro および Regional DR 関係の一部である各管理対象クラスターに自動的にインストールされ、アプリケーションのすべての PVC のライフサイクルを管理します。

3.2. Regional-DR デプロイメントワークフロー

このセクションでは、Red Hat OpenShift Data Foundation の最新バージョンを使用して、2 つの異なる OpenShift Container Platform クラスター間で Regional-DR 機能を設定およびデプロイするために必要な手順の概要を説明します。Red Hat Advanced Cluster Management (RHACM) をデプロイするには、2 つの管理対象クラスターに加えて、3 つ目の OpenShift Container Platform クラスターが必要になります。

インフラストラクチャーを設定するには、指定した順序で以下の手順を実行します。

  1. DR ソリューションの一部であるハブ、プライマリー、およびセカンダリー Openshift Container Platform クラスターの 3 つの要件が満たされていることを確認します。Regional-DR を有効にするための要件を参照してください。
  2. OpenShift Data Foundation operator をインストールし、プライマリーおよびセカンダリーのマネージドクラスターにストレージシステムを作成します。管理対象クラスターでの OpenShift Data Foundation クラスターの作成 を参照してください。
  3. ハブクラスターに ODF マルチクラスターオーケストレーターをインストールします。Hub クラスターへの ODF Multicluster Orchestrator のインストール を参照してください。
  4. ハブ、プライマリー、およびセカンダリークラスター間の SSL アクセスを設定します。クラスター間での SSL アクセスの設定 を参照してください。
  5. Web コンソールを有効にします。マルチクラスター Web コンソールの有効化
  6. プライマリークラスターとセカンダリークラスター全体で DR 保護を必要とするアプリケーションで使用する DRPolicy リソースを作成します。Creating Disaster Recovery Policy on Hub cluster を参照してください。

    注記

    複数のポリシーが存在する場合があります。

災害復旧ソリューションをテストするには:

3.3. Regional-DR を有効にするための要件

Red Hat OpenShift Data Foundation でサポートされる障害復旧機能では、障害復旧ソリューションを正常に実装するために以下の前提条件をすべて満たす必要があります。

  • 相互にネットワーク接続が可能な 3 つの OpenShift クラスターが必要です。

    • Red Hat Advanced Cluster Management for Kubernetes (RHACM Operator) がインストールされている ハブクラスター
    • OpenShift Data Foundation がインストールされているプライマリー 管理対象クラスター
    • OpenShift Data Foundation がインストールされている セカンダリーマネージドクラスター
  • RHACM Operator と Multiclusterhub がハブクラスターにインストールされていることを確認します。手順については、RHACM インストールガイド を参照してください。

    • OpenShift 認証情報を使用して RHACM コンソールにログインします。
    • RHACM コンソール用に作成されたルートを見つけます。

      $ oc get route multicloud-console -n open-cluster-management -o jsonpath --template="https://{.spec.host}/multicloud/clusters{'\n'}"

      出力例:

      https://multicloud-console.apps.perf3.example.com/multicloud/clusters
    • 出力リンクをブラウザーで開き、OpenShift 資格情報でログインします。インポートされた local-cluster が表示されるはずです。
重要

アプリケーショントラフィックのルーティングとリダイレクトが適切に設定されていることを確認するのは、ユーザーの責任です。アプリケーショントラフィックルートの設定と更新は現在サポートされていません。

  • RHACM コンソールを使用して、プライマリーマネージドクラスター および セカンダリーマネージドクラスター をインポートまたは作成していることを確認します。手順については、クラスターの作成 および ターゲットのマネージドクラスターをハブクラスターにインポートする を参照してください。
  • マネージドクラスターには、重複しないネットワークが必要です。

    Submariner アドオンを使用してマネージド OpenShift クラスターとサービスネットワークを接続するには、マネージドクラスターごとに次のコマンドを実行して、2 つのクラスターに重複しないネットワークがあることを検証する必要があります。

    注記

    RHACM 2.5 クラスターアドオンを使用してインストールされたバージョン 0.12 の Submariner は、OpenShift OVNKubernetes CNI プラグインをサポートしません。RHACM 2.5 リリースノート を参照してください。

    $ oc get networks.config.openshift.io cluster -o json | jq .spec

    プライマリークラスターの出力例:

    {
      "clusterNetwork": [
        {
          "cidr": "10.5.0.0/16",
          "hostPrefix": 23
        }
      ],
      "externalIP": {
        "policy": {}
      },
      "networkType": "OpenShiftSDN",
      "serviceNetwork": [
        "10.15.0.0/16"
      ]
    }

    二次クラスターの出力例:

    {
      "clusterNetwork": [
        {
          "cidr": "10.6.0.0/16",
          "hostPrefix": 23
        }
      ],
      "externalIP": {
        "policy": {}
      },
      "networkType": "OpenShiftSDN",
      "serviceNetwork": [
        "10.16.0.0/16"
      ]
    }

    詳細は、Submariner add-ons documentation ドキュメントを参照してください。

  • マネージドクラスターが Submariner アドオン を使用して接続できる必要があります。クラスターおよびサービスネットワークに重複しない範囲が設定されていることを確認した後に、RHACM コンソールおよび Cluster sets を使用して、各マネージドクラスターに Submariner アドオン をインストールします。手順は、Submariner のドキュメント を参照してください。

    注意

    マネージドクラスターのクラスターネットワークとサービスネットワークが重複しているため、Globalnet を有効にするを選択しないでください。Globalnet の 使用は、現在、Regional Disaster Recovery ではサポートされていません。次に進む前に、クラスターおよびサービスネットワークが重複していないことを確認します。

3.4. 管理対象クラスターでの OpenShift Data Foundation クラスターの作成

2 つの OpenShift Container Platform クラスター間のストレージレプリケーションを設定するには、OpenShift Data Foundation Operator をインストールした後に OpenShift Data Foundation ストレージシステムを作成します。

注記

インフラストラクチャー (AWS、VMware、BM、Azure など) に固有の OpenShift Data Foundation デプロイメントガイドと手順を参照してください。

手順

  1. 各管理対象クラスターに最新の OpenShift Data Foundation クラスターをインストールして設定します。

    OpenShift Data Foundation のデプロイメントについては、インフラストラクチャー固有のデプロイメントガイド (AWS、VMware、ベアメタル、Azure など) を参照してください。

  2. 以下のコマンドを使用して、各管理対象クラスターで OpenShift Data Foundation が正常にデプロイされたことを検証します。

    $ oc get storagecluster -n openshift-storage ocs-storagecluster -o jsonpath='{.status.phase}{"\n"}'

    Multicloud Gateway (MCG) の場合:

    $ oc get noobaa -n openshift-storage noobaa -o jsonpath='{.status.phase}{"\n"}'

    ステータス結果が Primary managed clusterSecondary managed cluster の両方のクエリーに対して Ready である場合は、次の手順に進みます。

注記

OpenShift Web コンソールで、Installed Operators → OpenShift Data Foundation → Storage System → ocs-storagecluster-storagesystem → Resources に移動し、StorageClusterStatusReady で、横に緑色のチェックマークがあることを確認します。

3.5. OpenShift Data Foundation Multicluster Orchestrator Operator のインストール

OpenShift Data Foundation のマルチクラスターオーケストレーターは、ハブクラスターの OpenShift Container Platform の OperatorHub からインストールされるコントローラーです。

手順

  1. ハブクラスターOperatorHub に移動し、キーワードフィルターを使用して ODF Multicluster Orchestrator を検索します。
  2. ODF Multicluster Orchestrator タイルをクリックします。
  3. すべてのデフォルト設定をそのままにして、Install をクリックします。

    Operator のリソースが openshift-operators プロジェクトにインストールされ、すべてのnamespace で利用できることを確認してください。

    注記

    ODF Multicluster Orchestrator レーターは、依存関係として RHACM ハブクラスターに Openshift DR ハブ Operator もインストールします。

  4. Operator PodRunning 状態であることを確認します。OpenShift DR Hub Operator も同時に openshift-operators namespace にインストールされます。

    $ oc get pods -n openshift-operators

    出力例:

    NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
    odf-multicluster-console-6845b795b9-blxrn   1/1     Running      0           4d20h
    odfmo-controller-manager-f9d9dfb59-jbrsd    1/1     Running      0           4d20h
    ramen-hub-operator-6fb887f885-fss4w         2/2     Running      0           4d20h

3.6. クラスター全体での SSL アクセスの設定

プライマリークラスターとセカンダリークラスター 間のネットワーク (SSL) アクセスを設定して、メタデータを代替クラスターのマルチクラウドゲートウェイ (MCG) object bucket に安全なトランスポートプロトコルを使用して格納し、ハブクラスター に格納してオブジェクトバケットへのアクセスを検証できるようにします。

注記

すべての OpenShift クラスターが環境の署名済みの有効な証明書セットを使用してデプロイされる場合は、このセクションを省略できます。

手順

  1. プライマリーマネージドクラスター の Ingress 証明書を展開し、出力を primary.crt に保存します。

    $ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > primary.crt
  2. セカンダリーマネージドクラスターの Ingress 証明書を抽出し、出力を secondary.crt に保存します。

    $ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > secondary.crt
  3. リモートクラスターの証明書バンドルを保持する新しい ConfigMap ファイルを、ファイル名 cm-clusters-crt.yaml で作成します。

    注記

    この例のように、クラスターごとに 3 つ以上の証明書が存在する可能性があります。また、以前作成した primary.crt ファイルおよび secondary.crt ファイルから、証明書の内容をコピーして貼り付けた後に、証明書の内容が正しくインデントされていることを確認します。

    apiVersion: v1
    data:
      ca-bundle.crt: |
        -----BEGIN CERTIFICATE-----
        <copy contents of cert1 from primary.crt here>
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert2 from primary.crt here>
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert3 primary.crt here>
        -----END CERTIFICATE----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert1 from secondary.crt here>
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert2 from secondary.crt here>
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert3 from secondary.crt here>
        -----END CERTIFICATE-----
    kind: ConfigMap
    metadata:
      name: user-ca-bundle
      namespace: openshift-config
  4. プライマリーマネージドクラスターセカンダリーマネージドクラスターハブクラスターConfigMap を作成します。

    $ oc create -f cm-clusters-crt.yaml

    出力例:

    configmap/user-ca-bundle created
  5. プライマリーマネージドクラスターセカンダリーマネージドクラスター、および ハブクラスター 上のデフォルトのプロキシーリソースにパッチを適用します。

    $ oc patch proxy cluster --type=merge  --patch='{"spec":{"trustedCA":{"name":"user-ca-bundle"}}}'

    出力例:

    proxy.config.openshift.io/cluster patched

3.7. マルチクラスター Web コンソールの有効化

これは、データポリシーまたは DRPolicy を作成する前に必要な新しい機能です。Hub クラスター でのみ必要で、RHACM 2.5 をインストールする必要があります。

重要

マルチクラスターコンソールは、テクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

手順

  1. 管理クラスター設定設定FeatureGate に移動します。
  2. YAML テンプレートを次のように編集します。

    [...]
    spec:
      featureSet: TechPreviewNoUpgrade
  3. Save をクリックして、RHACM コンソール内のすべてのクラスターに対してマルチクラスターコンソールを有効にします。Nodes が Ready になるまで待ちます。
  4. Web コンソールを更新し、管理対象クラスター名が All Clusters の下にリストされていることを確認します。
警告

このフィーチャーゲートは実稼働クラスターで設定しないでください。機能ゲートの適用後にクラスターのアップグレードはできず、元に戻すことはできません。

3.8. ハブクラスターでの障害復旧ポリシーの作成

Openshift 災害復旧ポリシー (DRPolicy) リソースは、災害復旧ソリューションに参加する OpenShift Container Platform クラスターと目的のレプリケーション間隔を指定します。DRPolicy は、ユーザーが障害復旧ソリューションを必要とするアプリケーションに適用できるクラスタースコープのリソースです。

ODF MultiCluster Orchestrator Operator は、Multicluster Web コンソール を介して、各 DRPolicy および対応する DRClusters の作成を容易にします。

前提条件

  • 2 つのマネージドクラスターの最小セットがあることを確認します。
  • マルチクラスター Web コンソール からすべてのクラスターにログインしてください。

    • すべてのクラスター をクリックして、管理対象クラスターのリストを展開します。
    • すべてのクラスター の下に一覧表示されている管理対象クラスターごとに、<cluster_name> をクリックし、選択したクラスターの資格情報を使用してログインできるログイン画面が表示されるまで待ちます。

手順

  1. OpenShift コンソール で、すべてのクラスター に移動します。

    マルチクラスターコンソールのデータポリシー
  2. Data Services に移動し、データポリシー をクリックします。
  3. DR ポリシーの作成 をクリックします。
  4. ポリシー名 を入力します。各 DRPolicy に一意の名前があることを確認します (例: ocp4bos1-ocp4bos2-5m)。
  5. この新しいポリシーが関連付けられる管理対象クラスターのリストから 2 つのクラスターを選択します。
  6. レプリケーションポリシー は、選択した OpenShift クラスターに基づいて自動的に 非同期 (async) に設定され、同期スケジュール オプションが使用可能になります。
  7. 同期スケジュール を設定します。

    重要

    必要なレプリケーション間隔ごとに、新しい DRPolicy を一意の名前 (例: ocp4bos1-ocp4bos2-10m) で作成する必要があります。同じクラスターを選択できますが、同期スケジュール は、分/時間/日単位の異なるレプリケーション間隔で設定できます。最小値は 1 分です。

  8. Create をクリックします。
  9. DRPolicy が正常に作成されたことを確認します。作成された DRPolicy リソースごとに、Hub クラスター でこのコマンドを実行します。

    注記

    <drpolicy_name> を一意の名前に置き換えます。

    $ oc get drpolicy <drpolicy_name> -o jsonpath='{.status.conditions[].reason}{"\n"}'

    出力例:

    Succeeded
    注記

    DRPolicy が作成されると、それに伴って 2 つの DRCluster リソースも作成されます。3 つのリソースすべてが検証され、ステータスが Succeeded と表示されるまで、最大 10 分かかる場合があります。

  10. ハブクラスター から プライマリーマネージドクラスターセカンダリーマネージドクラスター の両方へのオブジェクトバケットアクセスを確認します。

    1. ハブクラスター上の DRClusters の名前を取得します。

      $ oc get drclusters

      出力例:

      NAME        AGE
      ocp4bos1   4m42s
      ocp4bos2   4m42s
    2. この DRCluster 検証コマンドを使用して、各マネージドクラスターで作成された各バケットへの S3 アクセスを確認します。

      注記

      <drcluster_name> を一意の名前に置き換えます。

      $ oc get drcluster <drcluster_name> -o jsonpath='{.status.conditions[2].reason}{"\n"}'

      出力例:

      Succeeded
      注記

      ハブクラスター の両方の DRClusters に対してコマンドを実行してください。

  11. OpenShift DR Cluster Operator のインストールが プライマリー管理対象クラスター および セカンダリー管理対象 クラスターで成功したことを確認します。

    $ oc get csv,pod -n openshift-dr-system

    出力例:

    NAME                                                                      DISPLAY                         VERSION   REPLACES   PHASE
    clusterserviceversion.operators.coreos.com/odr-cluster-operator.v4.11.0   Openshift DR Cluster Operator   4.11.0               Succeeded
    
    NAME                                             READY   STATUS    RESTARTS   AGE
    pod/ramen-dr-cluster-operator-5564f9d669-f6lbc   2/2     Running   0          5m32s

    各管理対象クラスターの OperatorHubOpenShift DR Cluster Operator が正常にインストールされていることを確認することもできます。

  12. 1 次管理対象クラスター および 2 次管理 対象クラスター上の ODF ミラーリング デーモン の正常性の状況を確認します。

    $ oc get cephblockpool ocs-storagecluster-cephblockpool -n openshift-storage -o jsonpath='{.status.mirroringStatus.summary}{"\n"}'

    出力例:

    {"daemon_health":"OK","health":"OK","image_health":"OK","states":{}}
    注意

    daemon_healthhealthWarning から OK になるまで、最大 10 分かかる場合があります。最終的にステータスが OK にならない場合は、RHACM コンソールを使用して、管理対象クラスター間の Submariner 接続がまだ正常な状態であることを確認します。すべての値が OK になるまで先に進まないでください。

3.9. 障害復旧ソリューションをテストするためのサンプルアプリケーションを作成する

OpenShift Data Foundation 災害復旧 (DR) ソリューションは、RHACM によって管理されるアプリケーションの災害復旧をサポートします。詳細については、アプリケーションの管理 を参照してください。

このソリューションは、アプリケーションがフェイルオーバーまたは再配置の要件のために DRPolicy 内のクラスター間で移動されるときに、PlacementRule を使用して RHACM アプリケーションの配置を調整します。

以下のセクションでは、DRPolicy をアプリケーションに適用する方法と、クラスターが使用不可の間およびその後にアプリケーションの配置ライフサイクルを管理する方法について詳しく説明します。

注記

OpenShift Data Foundation DR ソリューションは、ArgoCD 経由でデプロイされるアプリケーションに必要な ApplicationSet をサポートしていません。

3.9.1. サンプルアプリケーションの作成

プライマリーマネージドクラスターからセカンダリーマネージドクラスターおよび replocate への failover およびフェイルバックをテストするには、単純なアプリケーションが必要です。

前提条件

  • 一般消費用のアプリケーションを作成する場合は、次のことを確認してください。

    • アプリケーションは 1 つのクラスターのみにデプロイされます。
    • アプリケーションは、DRPolicy をアプリケーションに適用する前にデプロイされます。
  • busybox というサンプルアプリケーションを例として使用します。
  • アプリケーションのすべての外部ルートが、アプリケーションがフェイルオーバーまたは再配置されたときのトラフィックリダイレクト用に Global Traffic Manager (GTM) または Global Server Load Balancing (GLSB) サービスを使用して設定されていることを確認します。

手順

  1. まだログインしていない場合は、OpenShift 認証情報を使用して RHACM コンソールにログインします。

    $ oc get route multicloud-console -n open-cluster-management -o jsonpath --template="https://{.spec.host}/multicloud/applications{'\n'}"

    出力例:

    https://multicloud-console.apps.perf3.example.com/multicloud/applications
  2. Applications に移動し、Create application をクリックします。
  3. 種類は Subscriptionを選択します。
  4. アプリケーションの Name (busybox など) および Namespace (busybox-sample など) を入力します。
  5. Repository location for resources セクションで Repository type Git を選択します。
  6. サンプルアプリケーションの github Branch および Path で、 Git リポジトリー URL を入力します。リソース busybox Pod および PVC が作成されます。

    サンプルアプリケーションリポジトリーを https://github.com/red-hat-storage/ocm-ramen-samples/tree/release-4.11 として使用します。BranchmainPathbusybox-odr です。

  7. 指定されたラベルに一致するクラスターにのみアプリケーションリソースをデプロイする が表示されるまでフォームを下にスクロールし、RHACM クラスターリストビューの プライマリー管理対象クラスター 名に値が設定されたラベルを追加します。

    デプロイする ACM Select クラスター
  8. 右上隅にある 作成 をクリックします。

    後続の画面で、Topology タブに移動します。アプリケーショントポロジーのチェックマークがすべて緑であることが確認できるはずです。

    注記

    詳細な情報を表示するには、トポロジー要素のいずれかをクリックすると、トポロジービューの右側にウィンドウが表示されます。

  9. サンプルアプリケーションのデプロイを検証しています。

    busybox アプリケーションが優先クラスターにデプロイされたので、デプロイを検証できます。

    busybox が RHACM によってデプロイされたマネージドクラスターにログオンします。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    NAME          READY   STATUS    RESTARTS   AGE
    pod/busybox   1/1     Running   0          6m
    
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/busybox-pvc   Bound    pvc-a56c138a-a1a9-4465-927f-af02afbbff37   5Gi        RWO            ocs-storagecluster-ceph-rbd   6m

3.9.2. DRPolicy をサンプルアプリケーションに適用する

  1. ハブクラスターで、マルチクラスター Web コンソールに戻り、All Clusters に移動します。
  2. All Clusters の下にリストされているすべてのクラスターにログインします。
  3. Data Services に移動し、Data policies をクリックします。
  4. DRPolicy の最後にあるアクションメニューをクリックして、使用可能なアクションのリストを表示します。

    DRPolicy の適用
  5. Apply DRPolicy をクリックします。
  6. Apply DRPolicy モーダルが表示されたら、busybox アプリケーションを選択し、PVC ラベルappname=busybox として入力します。

    注記

    同じアプリケーションまたは複数のアプリケーションで複数の配置ルールが選択されている場合は、アプリケーションの namespace 内のすべての PVC がデフォルトで保護されます。

  7. Apply をクリックします。
  8. DRPlacementControl または DRPCハブクラスターbusybox-sample namespace に作成され、CURRENTSTATEDeployed として表示されていることを確認します。このリソースは、このアプリケーションのフェイルオーバーと再配置の両方のアクションに使用されます。

    $ oc get drpc -n busybox-sample

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE
    busybox-placement-1-drpc   6m59s   ocp4bos1                                            Deployed

3.9.3. サンプルアプリケーションの削除

RHACM コンソールを使用してサンプルアプリケーション busybox を削除できます。

注記

サンプルアプリケーションを削除する手順は、フェイルオーバーと再配置のテストが完了し、アプリケーションを RHACM とマネージドクラスターから削除する準備ができるまで実行しないでください。

手順

  1. RHACM コンソールで、Applications に移動します。
  2. 削除するサンプルアプリケーションを検索します (例: busybox)。
  3. 削除するアプリケーションの横にある Action メニュー (⋮) をクリックします。
  4. Delete application をクリックします。

    Delete application を選択すると、アプリケーション関連のリソースも削除すべきかどうかを求める新規画面が表示されます。

  5. Remove application related resources チェックボックスを選択して、Subscription および PlacementRule を削除します。
  6. Delete をクリックします。これにより、Primary マネージドクラスター (またはアプリケーションが実行しているクラスター) の busybox アプリケーションが削除されます。
  7. RHACM コンソールを使用して削除されたリソースのほかに、busybox アプリケーションの削除後にDRPlacementControl も削除する必要があります。

    1. ハブクラスターの OpenShift Web コンソールにログインし、プロジェクト busybox-sample の Installed Operators に移動します。
    2. OpenShift DR Hub Operator をクリックした後、DRPlacementControl タブをクリックします。
    3. 削除する busybox アプリケーション DRPlacementControl の横にあるアクションメニュー (⋮) をクリックします。
    4. Delete DRPlacementControl をクリックします。
    5. Delete をクリックします。
注記

このプロセスを使用して、DRPlacementControl リソースでアプリケーションを削除できます。

3.10. マネージドクラスター間のアプリケーションのフェイルオーバー

フェイルオーバーは、何らかの理由で管理対象クラスターが使用できなくなったときに実行されます。

本セクションでは、busybox サンプルアプリケーションをフェイルオーバーする方法を説明します。フェイルオーバー方式はアプリケーションベースです。この方法で保護される各アプリケーションは、アプリケーション名前空間に対応する DRPlacementControl リソースを持っている必要があります。

3.10.1. DRPlacementControl を変更してフェイルオーバーする

前提条件

  • フェイルオーバーを開始する前に、ハブクラスターbusybox-sample 名前空間の DRPlacementControl または DRPC の PEER READY が True であることを確認します。

    $ oc get drpc -n busybox-sample -o wide

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE    PROGRESSION   START TIME         	DURATION      	PEER READY
    busybox-placement-1-drpc   6m59s   ocp4bos1                                            Deployed        Completed 	 <timestamp>            <duration>  	True
注記

PEER READY が true でない場合は、可能な回避策について、リリースノート に記載されているディザスタリカバリー関連の既知の問題を参照してください。

手順

  1. Hub クラスターで、Installed Operators に移動し、Openshift DR Hub Operator をクリックします。
  2. DRPlacementControl タブをクリックします。

    注記

    busybox-sample 名前空間にいることを確認してください。

  3. DRPC busybox-placement-1-drpc をクリックしてから、YAML ビューをクリックします。
  4. 以下のスクリーンショットに示すように、アクションfailoverCluster の詳細を追加します。

    DRPlacementControl add action Failover

    Image show where to add the action Failover in the YAML view

    failoverCluster は、二次管理クラスター の RHACM クラスター名である必要があります。

  5. Save をクリックします。
  6. Hub クラスターbusybox -sample 名前空間にある DRPlacementControl または DRPC の CURRENTSTATE が FailedOver であることを確認します。

    $ oc get drpc -n busybox-sample

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE
    busybox-placement-1-drpc   6m59s   ocp4bos1           ocp4bos2          Failover       FailedOver
  7. YAML ファイルで指定されているフェールオーバークラスター ocp4bos2 について、アプリケーションの busyboxセカンダリーマネージドクラスター で実行されていることを確認します。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    NAME          READY   STATUS    RESTARTS   AGE
    pod/busybox   1/1     Running   0          35s
    
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/busybox-pvc   Bound    pvc-79f2a74d-6e2c-48fb-9ed9-666b74cfa1bb   5Gi        RWO            ocs-storagecluster-ceph-rbd   35s
  8. プライマリーマネージドクラスターbusybox が実行されているかどうかを確認します。busybox アプリケーションは、このマネージドクラスターで実行されていないはずです。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    No resources found in busybox-sample namespace.
  9. アプリケーションの DNS ルートが正しく設定されているかどうかを確認します。外部ルートが設定されていない場合は、Global Traffic Manager (GTM) または Global Server Load Balancing (GLSB) サービスを使用してルートを再設定できます。
重要

リリースノートの 既知の問題 セクションに記載されている既知の DR の問題に注意してください。

3.11. マネージドクラスター間のアプリケーションの再配置

再配置操作はフェイルオーバーと非常に似ています。再配置はアプリケーションベースで、DRPlacementControl を使用して再配置をトリガーします。

障害が発生したクラスターが使用可能になり、障害が発生したクラスターでアプリケーションリソースがクリーンアップされると、再配置が実行されます。

この場合、アクションは preferredCluster に戻って Relocate となります。

3.11.1. DRPlacementControl を Relocate に変更します。

前提条件

  • 再配置を開始する前に、ハブクラスターbusybox-sample 名前空間の DRPlacementControl または DRPC の PEER READY が True であることを確認します。

    $ oc get drpc -n busybox-sample -o wide

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE    PROGRESSION   START TIME         	DURATION      	PEER READY
    busybox-placement-1-drpc   6m59s   ocp4bos1           ocp4bos2          Failover       FailedOver      Completed     <timestamp>            <duration>  	True
注記

PEER READY が true でない場合は、可能な回避策について、リリースノート に記載されているディザスタリカバリー関連の既知の問題を参照してください。

手順

  1. Hub クラスターで、Installed Operators に移動し、Openshift DR Hub Operator をクリックします。
  2. DRPlacementControl タブをクリックします。
  3. DRPC busybox-placement-1-drpc をクリックしてから、YAML ビューをクリックします。
  4. actionRelocate に変更します

    DRPlacementControl modify action to Relocate

    Image show where to modify the action in the YAML view

  5. Save をクリックします。
  6. Hub クラスターbusybox-sample 名前空間にある DRPlacementControl または DRPC の CURRENTSTATE が Relocated であることを確認します。

    $ oc get drpc -n busybox-sample

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE
    busybox-placement-1-drpc   6m59s   ocp4bos1           ocp4bos2          Relocate       Relocated
  7. アプリケーションの busybox が現在 プライマリーマネージドクラスター で実行されているかどうかを確認します。再配置は、YAML ファイルで指定された preferredCluster ocp4bos1 に対して行われます。これは、フェイルオーバー操作の前にアプリケーションが実行されていた場所です。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    NAME          READY   STATUS    RESTARTS   AGE
    pod/busybox   1/1     Running   0          60s
    
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/busybox-pvc   Bound    pvc-79f2a74d-6e2c-48fb-9ed9-666b74cfa1bb   5Gi        RWO            ocs-storagecluster-ceph-rbd   61s
  8. busyboxセカンダリーマネージドクラスターで実行しているかどうかを確認します。busybox アプリケーションは、このマネージドクラスターで実行されていないはずです。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    No resources found in busybox-sample namespace.
  9. アプリケーションの DNS ルートが正しく設定されているかどうかを確認します。外部ルートが設定されていない場合は、Global Traffic Manager (GTM) または Global Server Load Balancing (GLSB) サービスを使用してルートを再設定できます。
重要

リリースノートの 既知の問題 セクションに記載されている既知の DR の問題に注意してください。

第4章 OpenShift Data Foundation 向けの Metro-DR ソリューション

4.1. Metro-DR ソリューションのコンポーネント

Metro-DR は、Red Hat Advanced Cluster Management for Kubernetes、Red Hat Ceph Storage、および OpenShift Data Foundation コンポーネントで設定され、OpenShift Container Platform クラスター全体でアプリケーションとデータのモビリティを提供します。

Red Hat Advanced Cluster Management for Kubernetes

Red Hat Advanced Cluster Management (RHACM) は、複数のクラスターとアプリケーションのライフサイクルを管理する機能を提供します。したがって、マルチクラスター環境でのコントロールプレーンとして機能します。

RHACM は 2 つの部分に分かれています。

  • RHACM Hub: マルチクラスターコントロールプレーンで実行されるコンポーネント
  • マネージドクラスター: マネージドクラスターで実行されるコンポーネント

この製品の詳細については、RHACM のドキュメント および RHACM のアプリケーションの管理 を参照してください。

Red Hat Ceph Storage

Red Hat Ceph Storage は、非常にスケーラブルでオープンなソフトウェア定義のストレージプラットフォームであり、最も安定したバージョンの Ceph ストレージシステムと Ceph 管理プラットフォーム、デプロイメントユーティリティー、およびサポートサービスを組み合わせたものです。エンタープライズデータの保存コストを大幅に削減し、組織が指数関数的なデータの成長を管理できるようにします。このソフトウェアは、パブリックまたはプライベートのクラウドデプロイメント向けの堅牢かつ最新のペタバイトスケールのストレージプラットフォームです。

詳細な製品情報については、Red Hat Ceph Storage を参照してください。

OpenShift Data Foundation

OpenShift Data Foundation は、OpenShift Container Platform クラスターでステートフルなアプリケーション用のストレージをプロビジョニングし、管理する機能を提供します。これは、OpenShift Data Foundation コンポーネントスタックで Rook によって管理されるストレージプロバイダーとして Ceph によってサポートされ、Ceph-CSI はステートフルアプリケーションの永続ボリュームのプロビジョニングおよび管理を行います。

OpenShift DR

OpenShift DR は、RHACM を使用してデプロイおよび管理される一連のピア OpenShift クラスター全体のステートフルアプリケーションの障害復旧オーケストレーターであり、永続ボリュームでのアプリケーションの状態のライフサイクルのオーケストレーションを行うためのクラウドネイティブインターフェイスを提供します。これには以下が含まれます。

  • OpenShift クラスター全体でアプリケーションとその状態関係を保護する
  • アプリケーションとその状態をピアクラスターにフェイルオーバーする
  • アプリケーションとその状態を以前にデプロイされたクラスターに再配置する

OpenShift DR は 3 つのコンポーネントに分類されます。

  • ODF マルチクラスターオーケストレーター: マルチクラスターコントロールプレーン (RHACM ハブ) にインストールされ、メトロおよびリージョナル DR 関係のために OpenShift Data Foundation クラスターの設定とピアリングを調整します。
  • OpenShift DR Hub Operator: ハブクラスターに ODF Multicluster Orchestrator インストールの一部として自動的にインストールされ、DR 対応アプリケーションのフェイルオーバーまたは再配置を調整します。
  • OpenShift DR Cluster Operator : Metro および Regional DR 関係の一部である各管理対象クラスターに自動的にインストールされ、アプリケーションのすべての PVC のライフサイクルを管理します。

4.2. Metro-DR デプロイメントワークフロー

このセクションでは、最新バージョンの Red Hat OpenShift Data Foundation、Red Hat Ceph Storage (RHCS)、および Red Hat Advanced Cluster Management (RHACM) を使用して、2 つの異なる OpenShift Container Platform クラスターにわたって Metro-DR 機能を設定およびデプロイするために必要な手順の概要を示します。.2 つのマネージドクラスターに加えて、Advanced Cluster Management をデプロイするのに、3 つ目の OpenShift Container Platform クラスターが必要です。

インフラストラクチャーを設定するには、指定した順序で以下の手順を実行します。

  1. DR ソリューションの一部であるハブ、プライマリー、およびセカンダリー Openshift Container Platform クラスターの 3 つの要件が満たされていることを確認します。Metro-DR を有効にするための要件 を 参照してください。
  2. arbiter を使用して Red Hat Ceph Storage ストレッチクラスターをデプロイするための要件を満たしていることを確認してください。Red Hat Ceph Storage をデプロイするための要件 を参照してください。
  3. Red Hat Ceph Storage ストレッチモードをデプロイして設定します。拡張モード機能を使用して 2 つの異なるデータセンターで Ceph クラスターを有効にする手順については、Red Hat Ceph Storage のデプロイ を参照してください。
  4. OpenShift Data Foundation operator をインストールし、プライマリーおよびセカンダリーのマネージドクラスターにストレージシステムを作成します。管理対象クラスターでの OpenShift Data Foundation クラスターの作成 を参照してください。
  5. ハブクラスターに ODF マルチクラスターオーケストレーターをインストールします。Hub クラスターへの ODF Multicluster Orchestrator のインストール を参照してください。
  6. ハブ、プライマリー、およびセカンダリークラスター間の SSL アクセスを設定します。クラスター間での SSL アクセスの設定 を参照してください。
  7. Web コンソールを有効にします。マルチクラスター Web コンソールの有効化
  8. プライマリークラスターとセカンダリークラスター全体で DR 保護を必要とするアプリケーションで使用する DRPolicy リソースを作成します。Creating Disaster Recovery Policy on Hub cluster を参照してください。

    注記

    複数のポリシーが存在する場合があります。

災害復旧ソリューションをテストするには:

4.3. Metro-DR を有効にする要件

Red Hat OpenShift Data Foundation でサポートされる障害復旧機能では、障害復旧ソリューションを正常に実装するために以下の前提条件をすべて満たす必要があります。

  • 相互にネットワーク接続が可能な 3 つの OpenShift クラスターが必要です。

    • Red Hat Advanced Cluster Management for Kubernetes (RHACM Operator) がインストールされている ハブクラスター
    • OpenShift Data Foundation がインストールされているプライマリー 管理対象クラスター
    • OpenShift Data Foundation がインストールされている セカンダリーマネージドクラスター
  • RHACM Operator と Multiclusterhub がハブクラスターにインストールされていることを確認します。手順については、RHACM インストールガイド を参照してください。

    • OpenShift 認証情報を使用して RHACM コンソールにログインします。
    • RHACM コンソール用に作成されたルートを見つけます。

      $ oc get route multicloud-console -n open-cluster-management -o jsonpath --template="https://{.spec.host}/multicloud/clusters{'\n'}"

      出力例:

      https://multicloud-console.apps.perf3.example.com/multicloud/clusters
    • 出力リンクをブラウザーで開き、OpenShift 資格情報でログインします。インポートされた local-cluster が表示されるはずです。
重要

アプリケーショントラフィックのルーティングとリダイレクトが適切に設定されていることを確認するのは、ユーザーの責任です。アプリケーショントラフィックルートの設定と更新は現在サポートされていません。

  • RHACM コンソールを使用して、プライマリーマネージドクラスターおよびセカンダリーマネージドクラスターをインポートまたは作成してください。環境に適したオプションを選択します。マネージドクラスターが正常に作成またはインポートされると、コンソールでインポートまたは作成されたクラスターの一覧を確認できます。手順については、クラスターの作成 および ターゲットのマネージドクラスターをハブクラスターにインポートする を参照してください。
警告

OpenShift Container Platform 管理対象クラスターが存在する場所と RHCS ノードの間に距離制限があります。サイト間のネットワーク遅延は、10 ミリ秒の往復時間 (RTT) 未満である必要があります。

4.4. arbiter を使用して Red Hat Ceph Storage ストレッチクラスターをデプロイするための要件

Red Hat Ceph Storage は、標準的で経済的なサーバーおよびディスク上で統一されたソフトウェア定義ストレージを提供するオープンソースエンタープライズプラットフォームです。ブロック、オブジェクト、ファイルストレージを 1 つのプラットフォームに統合することで、Red Hat Ceph Storage はすべてのデータを効率的かつ自動的に管理します。そのため、それを使用するアプリケーションおよびワークロードに集中することができます。

このセクションでは、Red Hat Ceph Storage デプロイメントの基本的な概要を説明します。より複雑なデプロイメントについては 、Red Hat Ceph Storage 5 の公式ドキュメントガイド を参照してください。

注記

劣化すると min_size=1 で実行されるため、Flash メディアのみがサポートされています。ストレッチモードは、オールフラッシュ OSD でのみ使用してください。オールフラッシュ OSD を使用すると、接続が復元された後の回復に必要な時間が最小限に抑えられるため、データ損失の可能性が最小限に抑えられます。

重要

イレイジャーコーディングされたプールは、ストレッチモードでは使用できません。

4.4.1. ハードウェア要件

Red Hat Ceph Storage をデプロイするための最小ハードウェア要件については、Minimum hardware recommendations for containerized Ceph を参照してください。

表4.1 Red Hat Ceph Storage クラスターデプロイメントの物理サーバーの場所と Ceph コンポーネントのレイアウト:
ノード名データセンターCeph コンポーネント

ceph1

DC1

OSD+MON+MGR

ceph2

DC1

OSD+MON

ceph3

DC1

OSD+MDS+RGW

ceph4

DC2

OSD+MON+MGR

ceph5

DC2

OSD+MON

ceph6

DC2

OSD+MDS+RGW

ceph7

DC3

MON

4.4.2. ソフトウェア要件

Red Hat Ceph Storage 5 の最新のソフトウェアバージョンを使用してください。

Red Hat Ceph Storage でサポートされているオペレーティングシステムのバージョンの詳細については、Red Hat Ceph Storage: Supported configurations に関するナレッジベースの記事を参照してください。

4.4.3. ネットワーク設定要件

推奨される Red Hat Ceph Storage 設定は次のとおりです。

  • パブリックネットワークとプライベートネットワークを 1 つずつ、合計 2 つのネットワークが必要です。
  • すべてのデータセンターの Cephs プライベートネットワークとパブリックネットワークの VLAN とサブネットをサポートする 3 つの異なるデータセンターが必要です。

    注記

    データセンターごとに異なるサブネットを使用できます。

  • Red Hat Ceph Storage Object Storage Devices (OSD) を実行している 2 つのデータセンター間のレイテンシーは、RTT で 10 ミリ秒を超えることはできません。arbiter データセンターの場合、これは、他の 2 つの OSD データセンターに対して最大 100 ミリ秒の RTT という高い値でテストされました。

このガイドで使用した基本的なネットワーク設定の例を次に示します。

  • DC1: Ceph パブリック/プライベートネットワーク: 10.0.40.0/24
  • DC2: Ceph パブリック/プライベートネットワーク: 10.0.40.0/24
  • DC3: Ceph パブリック/プライベートネットワーク: 10.0.40.0/24

必要なネットワーク環境の詳細については、Ceph network configuration を参照してください。

4.5. Red Hat Ceph Storage の導入

4.5.1. ノードのデプロイ前の手順

Red Hat Ceph Storage Ceph クラスターをインストールする前に、必要なすべての要件を満たすために、以下の手順を実施します。

  1. 全ノードを Red Hat Network または Red Hat Satellite に登録し、有効なプールにサブスクライブします。

    subscription-manager register
    subscription-manager subscribe --pool=8a8XXXXXX9e0
  2. 次のリポジトリーの Ceph クラスター内のすべてのノードへのアクセスを有効にします。

    • rhel-8-for-x86_64-baseos-rpms
    • rhel-8-for-x86_64-appstream-rpms

      subscription-manager repos --disable="*" --enable="rhel-8-for-x86_64-baseos-rpms" --enable="rhel-8-for-x86_64-appstream-rpms"
  3. オペレーティングシステムの RPM を最新バージョンに更新し、必要に応じて再起動します。

    dnf update -y
    reboot
  4. クラスターからノードを選択して、ブートストラップノードにします。ceph1 は、この例の今後のブートストラップノードです。

    ブートストラップノード ceph1 でのみ、ansible-2.9-for-rhel-8-x86_64-rpms および rhceph-5-tools-for-rhel-8-x86_64-rpms リポジトリーを有効にします。

    subscription-manager repos --enable="ansible-2.9-for-rhel-8-x86_64-rpms" --enable="rhceph-5-tools-for-rhel-8-x86_64-rpms"
  5. すべてのホストでベア/短縮ホスト名を使用して hostname を設定します。

    hostnamectl set-hostname <short_name>
  6. Red Hat Ceph Storage を使用して Red Hat Ceph Storage をデプロイするためのホスト名設定を確認します。

    $ hostname

    出力例:

    ceph1
  7. /etc/hosts ファイルを変更し、DNS ドメイン名を使用して DOMAIN 変数を設定して、fqdn エントリーを 127.0.0.1IP に追加します。

    DOMAIN="example.domain.com"
    
    cat <<EOF >/etc/hosts
    127.0.0.1 $(hostname).${DOMAIN} $(hostname) localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1       $(hostname).${DOMAIN} $(hostname) localhost6 localhost6.localdomain6
    EOF
  8. hostname -f オプションを使用して、fqdn の長いホスト名を確認します。

    $ hostname -f

    出力例:

    ceph1.example.domain.com

    注: これらの変更が必要な理由の詳細については、完全修飾ドメイン名とベアホスト名 を参照してください。

  9. ブートストラップノードで次の手順を実行します。この例では、ブートストラップノードは ceph1 です。

    1. cephadm-ansible RPM パッケージをインストールします。

      $ sudo dnf install -y cephadm-ansible
      重要

      Ansible Playbook を実行するには、Red Hat Ceph Storage クラスターに設定されているすべてのノードに ssh パスワードなしでアクセスできる必要があります。設定されたユーザー (たとえば、deployment-user) が、パスワードを必要とせずに sudo コマンドを呼び出すための root 権限を持っていることを確認してください。

    2. カスタムキーを使用するには、選択したユーザー (たとえば、deployment-user) の ssh 設定ファイルを設定して、ssh 経由でノードに接続するために使用される ID/キーを指定します。

      cat <<EOF > ~/.ssh/config
      Host ceph*
         User deployment-user
         IdentityFile ~/.ssh/ceph.pem
      EOF
    3. Ansible インベントリーを構築します。

      cat <<EOF > /usr/share/cephadm-ansible/inventory
      ceph1
      ceph2
      ceph3
      ceph4
      ceph5
      ceph6
      ceph7
      [admin]
      ceph1
      EOF
      注記

      インベントリーファイルの admin グループの一部として設定されたホストは、cephadm によって _admin としてタグ付けされるため、ブートストラッププロセス中に admin ceph キーリングを受け取ります。

    4. プリフライト Playbook を実行する前に、ansible が ping モジュールを使用してすべてのノードにアクセスできることを確認します。

      $ ansible -i /usr/share/cephadm-ansible/inventory -m ping all -b

      出力例:

      ceph6 | SUCCESS => {
          "ansible_facts": {
              "discovered_interpreter_python": "/usr/libexec/platform-python"
          },
          "changed": false,
          "ping": "pong"
      }
      ceph4 | SUCCESS => {
          "ansible_facts": {
              "discovered_interpreter_python": "/usr/libexec/platform-python"
          },
          "changed": false,
          "ping": "pong"
      }
      ceph3 | SUCCESS => {
          "ansible_facts": {
              "discovered_interpreter_python": "/usr/libexec/platform-python"
          },
          "changed": false,
          "ping": "pong"
      }
      ceph2 | SUCCESS => {
          "ansible_facts": {
              "discovered_interpreter_python": "/usr/libexec/platform-python"
          },
          "changed": false,
          "ping": "pong"
      }
      ceph5 | SUCCESS => {
          "ansible_facts": {
              "discovered_interpreter_python": "/usr/libexec/platform-python"
          },
          "changed": false,
          "ping": "pong"
      }
      ceph1 | SUCCESS => {
          "ansible_facts": {
              "discovered_interpreter_python": "/usr/libexec/platform-python"
          },
          "changed": false,
          "ping": "pong"
      }
      ceph7 | SUCCESS => {
          "ansible_facts": {
              "discovered_interpreter_python": "/usr/libexec/platform-python"
          },
          "changed": false,
          "ping": "pong"
      }
    5. 以下の Ansible Playbook を実行します。

      $ ansible-playbook -i /usr/share/cephadm-ansible/inventory /usr/share/cephadm-ansible/cephadm-preflight.yml --extra-vars "ceph_origin=rhcs"

      プリフライト Playbook は RHCS dnf リポジトリーを設定し、ブートストラップ用にストレージクラスターを準備します。また、podman、lvm2、chronyd、および cephadm もインストールします。cephadm-ansible および cephadm- preflight.yml のデフォルトの場所は /usr/share/cephadm-ansible です。

4.5.2. Cephadm を使用したクラスターのブートストラップとサービスのデプロイメント

cephadm ユーティリティーは、cephadm ブートストラップコマンドが実行されているローカルノード上に、新しい Red Hat Ceph Storage クラスターの単一の Ceph Monitor デーモンと Ceph Manager デーモンをインストールし、開始します。

このガイドでは、クラスター仕様の yaml ファイルを使用して、クラスターをブートストラップし、必要なすべての Red Hat Ceph Storage サービスをワンステップでデプロイします。

展開中に問題が見つかった場合は、展開を 2 つの手順に分割することで、エラーのトラブルシューティングが容易になる場合があります。

  1. ブートストラップ
  2. サービスの展開
注記

ブートストラッププロセスの詳細については、Bootstrapping a new storage cluster を参照してください。

手順

  1. 次のように、json ファイルを使用してコンテナーレジストリーに対して認証を行うための json ファイルを作成します。

    $ cat <<EOF > /root/registry.json
    {
     "url":"registry.redhat.io",
     "username":"User",
     "password":"Pass"
    }
    EOF
  2. Red Hat Ceph Storage クラスターにノードを追加する cluster-spec.yaml を作成し、表 3.1 に従ってサービスを実行する場所に特定のラベルを設定します。

    cat <<EOF > /root/cluster-spec.yaml
    service_type: host
    addr: 10.0.40.78  ## <XXX.XXX.XXX.XXX>
    hostname: ceph1   ##  <ceph-hostname-1>
    location:
      root: default
      datacenter: DC1
    labels:
      - osd
      - mon
      - mgr
    ---
    service_type: host
    addr: 10.0.40.35
    hostname: ceph2
    location:
      datacenter: DC1
    labels:
      - osd
      - mon
    ---
    service_type: host
    addr: 10.0.40.24
    hostname: ceph3
    location:
      datacenter: DC1
    labels:
      - osd
      - mds
      - rgw
    ---
    service_type: host
    addr: 10.0.40.185
    hostname: ceph4
    location:
      root: default
      datacenter: DC2
    labels:
      - osd
      - mon
      - mgr
    ---
    service_type: host
    addr: 10.0.40.88
    hostname: ceph5
    location:
      datacenter: DC2
    labels:
      - osd
      - mon
    ---
    service_type: host
    addr: 10.0.40.66
    hostname: ceph6
    location:
      datacenter: DC2
    labels:
      - osd
      - mds
      - rgw
    ---
    service_type: host
    addr: 10.0.40.221
    hostname: ceph7
    labels:
      - mon
    ---
    service_type: mon
    placement:
      label: "mon"
    ---
    service_type: mds
    service_id: cephfs
    placement:
      label: "mds"
    ---
    service_type: mgr
    service_name: mgr
    placement:
      label: "mgr"
    ---
    service_type: osd
    service_id: all-available-devices
    service_name: osd.all-available-devices
    placement:
      label: "osd"
    spec:
      data_devices:
        all: true
    ---
    service_type: rgw
    service_id: objectgw
    service_name: rgw.objectgw
    placement:
      count: 2
      label: "rgw"
    spec:
      rgw_frontend_port: 8080
    EOF
  3. ブートストラップノードから設定された Red Hat Ceph Storage パブリックネットワークで NIC の IP を取得します。10.0.40.0 を ceph パブリックネットワークで定義したサブネットに置き換えた後、次のコマンドを実行します。

    $ ip a | grep 10.0.40

    出力例:

    10.0.40.78
  4. クラスター内の最初の Monitor ノードとなるノードで、root ユーザーとして Cephadm bootstrap コマンドを実行します。IP_ADDRESS オプションは、cephadm bootstrap コマンドの実行に使用しているノードの IP アドレスです。

    注記

    パスワードなしの SSH アクセス用に root ではなく別のユーザーを設定した場合は、cepadm bootstrap コマンドで --ssh-user= フラグを使用します。

    default/id_rsa ssh キー名以外を使用している場合は、cephadm コマンドで --ssh-private-key および --ssh-public-key オプションを使用します。

    $ cephadm  bootstrap --ssh-user=deployment-user --mon-ip 10.0.40.78 --apply-spec /root/cluster-spec.yaml --registry-json /root/registry.json
    重要

    ローカルノードが完全修飾ドメイン名 (FQDN) を使用する場合は、コマンドラインで --allow-fqdn-hostname オプションを cephadm bootstrap に追加します。

    ブートストラップが終了すると、前の cephadm bootstrap コマンドから次の出力が表示されます。

    You can access the Ceph CLI with:
    
    	sudo /usr/sbin/cephadm shell --fsid dd77f050-9afe-11ec-a56c-029f8148ea14 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
    
    Please consider enabling telemetry to help improve Ceph:
    
    	ceph telemetry on
    
    For more information see:
    
    	https://docs.ceph.com/docs/pacific/mgr/telemetry/
  5. ceph1 の Ceph CLI クライアントを使用して、Red Hat Ceph Storage クラスターデプロイメントのステータスを確認します。

    $ ceph -s

    出力例:

    cluster:
      id:     3a801754-e01f-11ec-b7ab-005056838602
      health: HEALTH_OK
    
    services:
      mon: 5 daemons, quorum ceph1,ceph2,ceph4,ceph5,ceph7 (age 4m)
      mgr: ceph1.khuuot(active, since 5m), standbys: ceph4.zotfsp
      osd: 12 osds: 12 up (since 3m), 12 in (since 4m)
      rgw: 2 daemons active (2 hosts, 1 zones)
    
    data:
      pools:   5 pools, 107 pgs
      objects: 191 objects, 5.3 KiB
      usage:   105 MiB used, 600 GiB / 600 GiB avail
               105 active+clean
    注記

    すべてのサービスが開始されるまでに数分かかる場合があります。

    osds が設定されていないときに、グローバルリカバリーイベントが発生するのは正常です。

    ceph orch ps および ceph orch ls を使用して、サービスのステータスをさらに確認できます。

  6. すべてのノードが cephadm クラスターの一部であるかどうかを確認します。

    $ ceph orch host ls

    出力例:

    HOST   ADDR          LABELS  STATUS
    ceph1  10.0.40.78    _admin osd mon mgr
    ceph2  10.0.40.35    osd mon
    ceph3  10.0.40.24    osd mds rgw
    ceph4  10.0.40.185   osd mon mgr
    ceph5  10.0.40.88    osd mon
    ceph6  10.0.40.66    osd mds rgw
    ceph7  10.0.40.221   mon
    注記

    ceph1 は [admin] グループの一部として cephadm-ansible インベントリーで設定されているため、ホストから Ceph コマンドを直接実行できます。Ceph 管理キーは、cephadm bootstrap プロセス中にホストにコピーされました。

  7. データセンターでの Ceph モニターサービスの現在の配置を確認します。

    $ ceph orch ps | grep mon | awk '{print $1 " " $2}'

    出力例:

    mon.ceph1 ceph1
    mon.ceph2 ceph2
    mon.ceph4 ceph4
    mon.ceph5 ceph5
    mon.ceph7 ceph7
  8. データセンターでの Ceph 管理サービスの現在の配置を確認します。

    $ ceph orch ps | grep mgr | awk '{print $1 " " $2}'

    出力例:

    mgr.ceph2.ycgwyz ceph2
    mgr.ceph5.kremtt ceph5
  9. ceph osd クラッシュマップレイアウトをチェックして、各ホストに 1 つの OSD が設定され、そのステータスが UP であることを確認します。また、表 3.1 で指定されているように、各ノードが適切なデータセンターバケットの下にあることを再確認してください。

    $ ceph osd tree

    出力例:

    ID   CLASS  WEIGHT   TYPE NAME           STATUS  REWEIGHT  PRI-AFF
    -1          0.87900  root default
    -16         0.43950      datacenter DC1
    -11         0.14650          host ceph1
      2    ssd  0.14650              osd.2       up   1.00000  1.00000
     -3         0.14650          host ceph2
      3    ssd  0.14650              osd.3       up   1.00000  1.00000
    -13         0.14650          host ceph3
      4    ssd  0.14650              osd.4       up   1.00000  1.00000
    -17         0.43950      datacenter DC2
     -5         0.14650          host ceph4
      0    ssd  0.14650              osd.0       up   1.00000  1.00000
     -9         0.14650          host ceph5
      1    ssd  0.14650              osd.1       up   1.00000  1.00000
     -7         0.14650          host ceph6
      5    ssd  0.14650              osd.5       up   1.00000  1.00000
  10. 新しい RDB ブロックプールを作成して有効にします。

    $ ceph osd pool create rbdpool 32 32
    $ ceph osd pool application enable rbdpool rbd
    注記

    コマンドの最後にある 32 という数字は、このプールに割り当てられている PG の数です。PG の数は、クラスター内の OSD の数、プールの予想使用率など、いくつかの要因によって異なります。次の計算機を使用して、必要な PG の数を決定できます。プール計算機ごとの Ceph 配置グループ (PG)

  11. RBD プールが作成されたことを確認します。

    $ ceph osd lspools | grep rbdpool

    出力例:

     3 rbdpool
  12. MDS サービスがアクティブであり、各データセンターに 1 つのサービスが配置されていることを確認します。

    $ ceph orch ps | grep mds

    出力例:

    mds.cephfs.ceph3.cjpbqo    ceph3               running (17m)   117s ago  17m    16.1M        -  16.2.9
    mds.cephfs.ceph6.lqmgqt    ceph6               running (17m)   117s ago  17m    16.1M        -  16.2.9
  13. CephFS ボリュームを作成します。

    $ ceph fs volume create cephfs
    注記

    ceph fs volume create コマンドは、必要なデータとメタ CephFS プールも作成します。詳細については、Configuring and Mounting Ceph File Systems を参照してください。

  14. Ceph のステータスを確認して、MDS デーモンがどのようにデプロイされたかを確認します。状態がアクティブで、ceph6 がこのファイルシステムのプライマリー MDS で、ceph3 がセカンダリー MDS であることを確認します。

    $ ceph fs status

    出力例:

    cephfs - 0 clients
    ======
    RANK  STATE           MDS             ACTIVITY     DNS    INOS   DIRS   CAPS
     0    active  cephfs.ceph6.ggjywj  Reqs:    0 /s    10     13     12      0
           POOL           TYPE     USED  AVAIL
    cephfs.cephfs.meta  metadata  96.0k   284G
    cephfs.cephfs.data    data       0    284G
        STANDBY MDS
    cephfs.ceph3.ogcqkl
  15. RGW サービスがアクティブであることを確認します。

    $ ceph orch ps | grep rgw

    出力例:

    rgw.objectgw.ceph3.kkmxgb  ceph3  *:8080       running (7m)      3m ago   7m    52.7M        -  16.2.9
    rgw.objectgw.ceph6.xmnpah  ceph6  *:8080       running (7m)      3m ago   7m    53.3M        -  16.2.9

4.5.3. Red Hat Ceph Storage ストレッチモードの設定

cephadm を使用して Red Hat Ceph Storage クラスターが完全にデプロイされたら、次の手順でストレッチクラスターモードを設定します。新しいストレッチモードは、2 サイトのケースを処理するように設計されています。

手順

  1. ceph mon dump コマンドを使用して、モニターが使用している現在の選挙戦略を確認します。ceph クラスターのデフォルトでは、接続はクラシックに設定されています。

    ceph mon dump | grep election_strategy

    出力例:

    dumped monmap epoch 9
    election_strategy: 1
  2. モニターの選択を接続に変更します。

    ceph mon set election_strategy connectivity
  3. 前の cephmondump コマンドを再度実行して、election_strategy 値を確認します。

    $ ceph mon dump | grep election_strategy

    出力例:

    dumped monmap epoch 10
    election_strategy: 3

    さまざまな選択戦略の詳細については、Configuring monitor election strategy を参照してください。

  4. すべての Ceph モニターの場所を設定します。

    ceph mon set_location ceph1 datacenter=DC1
    ceph mon set_location ceph2 datacenter=DC1
    ceph mon set_location ceph4 datacenter=DC2
    ceph mon set_location ceph5 datacenter=DC2
    ceph mon set_location ceph7 datacenter=DC3
  5. 各モニターに適切な場所があることを確認します。

    $ ceph mon dump

    出力例:

    epoch 17
    fsid dd77f050-9afe-11ec-a56c-029f8148ea14
    last_changed 2022-03-04T07:17:26.913330+0000
    created 2022-03-03T14:33:22.957190+0000
    min_mon_release 16 (pacific)
    election_strategy: 3
    0: [v2:10.0.143.78:3300/0,v1:10.0.143.78:6789/0] mon.ceph1; crush_location {datacenter=DC1}
    1: [v2:10.0.155.185:3300/0,v1:10.0.155.185:6789/0] mon.ceph4; crush_location {datacenter=DC2}
    2: [v2:10.0.139.88:3300/0,v1:10.0.139.88:6789/0] mon.ceph5; crush_location {datacenter=DC2}
    3: [v2:10.0.150.221:3300/0,v1:10.0.150.221:6789/0] mon.ceph7; crush_location {datacenter=DC3}
    4: [v2:10.0.155.35:3300/0,v1:10.0.155.35:6789/0] mon.ceph2; crush_location {datacenter=DC1}
  6. crushtool コマンドを使用するために ceph-base RPM パッケージをインストールして、この OSD クラッシュトポロジーを利用する CRUSH ルールを作成します。

    $ dnf -y install ceph-base

    CRUSH ルールセットの詳細については、Ceph CRUSH ruleset を参照してください。

  7. コンパイルされた CRUSH マップをクラスターから取得します。

    $ ceph osd getcrushmap > /etc/ceph/crushmap.bin
  8. CRUSH マップを逆コンパイルし、これをテキストファイルに変換して編集できるようにします。

    $ crushtool -d /etc/ceph/crushmap.bin -o /etc/ceph/crushmap.txt
  9. ファイル /etc/ceph/crushmap.txt の末尾にある CRUSH マップに次のルールを追加します。

    $ vim /etc/ceph/crushmap.txt
    rule stretch_rule {
            id 1
            type replicated
            min_size 1
            max_size 10
            step take DC1
            step chooseleaf firstn 2 type host
            step emit
            step take DC2
            step chooseleaf firstn 2 type host
            step emit
    }
    
    # end crush map
    注記

    ルール id は一意である必要があります。この例では、id 0 のクラッシュルールがもう 1 つしかないため、id 1 を使用しています。デプロイメントにさらにルールが作成されている場合は、次の空き ID を使用します。

    宣言された CRUSH ルールには、次の情報が含まれています。

    • Rule name:

      • 説明: ルールを識別する一意の完全な名前。
      • 値: stretch_rule
    • id:

      • 説明: ルールを識別する一意の整数。
      • 値: 1
    • type:

      • 説明: レプリケートまたはイレイジャーコーディングされたストレージドライブのルールを説明しています。
      • 値: replicated
    • min_size:

      • 説明: プールがこの数よりも小さいレプリカを使用する場合、CRUSH はこのルールを選択しません。
      • 値: 1
    • max_size:

      • 説明: プールがこの数よりも大きいレプリカを使用する場合、CRUSH はこのルールを選択しません。
      • 値: 10
    • step take DC1

      • 説明: バケット名 (DC1) を取り、ツリーを下ってイテレートを開始します。
    • step chooseleaf firstn 2 type host

      • 説明: 指定のタイプのバケット数を選択します。この例では、DC1 にある 2 つの異なるホストになります。
    • step emit

      • 説明: 現在の値を出力し、スタックを除算します。通常、ルールの最後に使用されますが、同じルール内の異なるツリーを選択する際に使用することもできます。
    • step take DC2

      • 説明: バケット名 (DC2) を取り、ツリーを下ってイテレートを開始します。
    • step chooseleaf firstn 2 type host

      • 説明: 指定のタイプのバケット数を選択します。この例では、DC2 にある 2 つの異なるホストになります。
    • step emit

      • 説明: 現在の値を出力し、スタックを除算します。通常、ルールの最後に使用されますが、同じルール内の異なるツリーを選択する際に使用することもできます。
  10. ファイル /etc/ceph/crushmap.txt から新しい CRUSH マップをコンパイルし、これを /etc/ceph/crushmap2.bin というバイナリーファイルに変換します。

    $ crushtool -c /etc/ceph/crushmap.txt -o /etc/ceph/crushmap2.bin
  11. 作成した新しいクラッシュマップをクラスターに注入します。

    $ ceph osd setcrushmap -i /etc/ceph/crushmap2.bin

    出力例:

    17
    注記

    数字の 17 はカウンターであり、クラッシュマップに加えた変更に応じて増加します (18、19 など)。

  12. 作成したストレッチルールが使用可能になったことを確認します。

    ceph osd crush rule ls

    出力例:

    replicated_rule
    stretch_rule
  13. ストレッチクラスターモードを有効にします。

    $ ceph mon enable_stretch_mode ceph7 stretch_rule datacenter

    この例では、ceph7 が arbiter ノード、stretch_rule が前の手順で作成したクラッシュルール、datacenter が分割バケットです。

  14. すべてのプールが、Ceph クラスターに作成した stretch_rule CRUSH ルールを使用していることを確認します。

    $ for pool in $(rados lspools);do echo -n "Pool: ${pool}; ";ceph osd pool get ${pool} crush_rule;done

    出力例:

    Pool: device_health_metrics; crush_rule: stretch_rule
    Pool: cephfs.cephfs.meta; crush_rule: stretch_rule
    Pool: cephfs.cephfs.data; crush_rule: stretch_rule
    Pool: .rgw.root; crush_rule: stretch_rule
    Pool: default.rgw.log; crush_rule: stretch_rule
    Pool: default.rgw.control; crush_rule: stretch_rule
    Pool: default.rgw.meta; crush_rule: stretch_rule
    Pool: rbdpool; crush_rule: stretch_rule

    これは、arbiter モードで稼働中の Red Hat Ceph Storage ストレッチクラスターが利用可能になったことを示しています。

4.6. 管理対象クラスターでの OpenShift Data Foundation クラスターの作成

2 つの OpenShift Container Platform クラスター間のストレージレプリケーションを設定するには、OpenShift Data Foundation Operator をインストールした後に OpenShift Data Foundation ストレージシステムを作成します。

前提条件

  • OpenShift Data Foundation の外部デプロイメントのハードウェア要件を満たしていることを確認してください。ハードウェア要件の詳細については、エクスターナルモード要件 を参照してください。
注記

インフラストラクチャー (AWS、VMware、BM、Azure など) に固有の OpenShift Data Foundation デプロイメントガイドと手順を参照してください。

手順

  1. 各管理対象クラスターに最新の OpenShift Data Foundation クラスターをインストールして設定します。
  2. Operator をインストールした後、オプション Full デプロイメント タイプおよび Connect with external storage platform を使用して、バッキングストレージタイプRed Hat Ceph Storage である StorageSystem を作成します。

    詳しい手順は、外部モードでの OpenShift Data Foundation のデプロイ を参照してください。

    • 少なくとも、ceph-external-cluster-details-exporter.py script で次の 3 つのフラグを使用する必要があります。

      --rbd-data-pool-name
      OpenShift Container Platform の RHCS デプロイメント中に作成された RBD プールの名前を使用します。たとえば、プールを rbdpool と呼ぶことができます。
      --rgw-endpoint
      <ip_address>:<port> の形式でエンドポイントを指定します。これは、設定している OpenShift Container Platform クラスターと同じサイトで実行されている RGW デーモンの RGW IP です。
      --run-as-user
      サイトごとに異なるクライアント名を使用します。

      RHCS の展開中にデフォルト値が使用された場合、次のフラグは optional です。

      --cephfs-filesystem-name
      OpenShift Container Platform の RHCS デプロイメント中に作成した CephFS ファイルシステムの名前を使用すると、デフォルトのファイルシステム名は cephfs になります。
      --cephfs-data-pool-name
      OpenShift Container Platform の RHCS デプロイメント中に作成した CephFS データプールの名前で、デフォルトプールは cephfs.data と呼ばれます。
      --cephfs-metadata-pool-name
      OpenShift Container Platform の RHCS デプロイメント中に作成した CephFS メタデータプールの名前で、デフォルトプールは cephfs.meta と呼ばれます。
    • ブートストラップノード ceph1 で次のコマンドを実行して、datacenter1 と datacenter2 の RGW エンドポイントの IP を取得します。

      ceph orch ps | grep rgw.objectgw

      出力例:

      rgw.objectgw.ceph3.mecpzm  ceph3  *:8080       running (5d)     31s ago   7w     204M        -  16.2.7-112.el8cp
      rgw.objectgw.ceph6.mecpzm  ceph6  *:8080       running (5d)     31s ago   7w     204M        -  16.2.7-112.el8cp
      host ceph3
      host ceph6

      出力例:

      ceph3.example.com has address 10.0.40.24
      ceph6.example.com has address 10.0.40.66
    • 最初の ocp 管理クラスター cluster1 用に設定されたパラメーターを使用して、ceph-external-cluster-details-exporter.py を実行します。

      python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name rbdpool --cephfs-filesystem-name cephfs --cephfs-data-pool-name cephfs.cephfs.data  --cephfs-metadata-pool-name cephfs.cephfs.meta --rgw-endpoint 10.0.40.24:8080 --run-as-user client.odf.cluster1 > ocp-cluster1.json
    • 最初の ocp 管理クラスター cluster2 用に設定されたパラメーターを使用して、ceph-external-cluster-details-exporter.py を実行します。

      python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name rbdpool --cephfs-filesystem-name cephfs --cephfs-data-pool-name cephfs.cephfs.data  --cephfs-metadata-pool-name cephfs.cephfs.meta --rgw-endpoint 10.0.40.66:8080 --run-as-user client.odf.cluster2 > ocp-cluster2.json
    • ブートストラップクラスター (ceph1) で生成された 2 つのファイル ocp-cluster1.jsonocp-cluster2.json をローカルマシンに保存します。
    • 外部 ODF がデプロイされている cluster1 の OCP コンソールでファイル ocp-cluster1.json の内容を使用します。
    • 外部 ODF がデプロイされている cluster2 の OCP コンソールでファイル ocp-cluster2.json の内容を使用します。
  3. 設定を確認し、Create StorageSystem を選択します。
  4. 以下のコマンドを使用して、各管理対象クラスターで OpenShift Data Foundation が正常にデプロイされたことを検証します。

    $ oc get storagecluster -n openshift-storage ocs-external-storagecluster -o jsonpath='{.status.phase}{"\n"}'

    Multicloud Gateway (MCG) の場合:

    $ oc get noobaa -n openshift-storage noobaa -o jsonpath='{.status.phase}{"\n"}'

    ステータス結果が Primary managed clusterSecondary managed cluster の両方のクエリーに対して Ready である場合は、次の手順に進みます。

注記

OpenShift Web コンソールで、Installed Operators → OpenShift Data Foundation → Storage System → ocs-storagecluster-storagesystem → Resources に移動し、StorageClusterStatusReady で、横に緑色のチェックマークがあることを確認します。

4.7. OpenShift Data Foundation Multicluster Orchestrator Operator のインストール

OpenShift Data Foundation のマルチクラスターオーケストレーターは、ハブクラスターの OpenShift Container Platform の OperatorHub からインストールされるコントローラーです。

手順

  1. ハブクラスターOperatorHub に移動し、キーワードフィルターを使用して ODF Multicluster Orchestrator を検索します。
  2. ODF Multicluster Orchestrator タイルをクリックします。
  3. すべてのデフォルト設定をそのままにして、Install をクリックします。

    Operator のリソースが openshift-operators プロジェクトにインストールされ、すべてのnamespace で利用できることを確認してください。

    注記

    ODF Multicluster Orchestrator レーターは、依存関係として RHACM ハブクラスターに Openshift DR ハブ Operator もインストールします。

  4. Operator PodRunning 状態であることを確認します。OpenShift DR Hub Operator も同時に openshift-operators namespace にインストールされます。

    $ oc get pods -n openshift-operators

    出力例:

    NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
    odf-multicluster-console-6845b795b9-blxrn   1/1     Running      0           4d20h
    odfmo-controller-manager-f9d9dfb59-jbrsd    1/1     Running      0           4d20h
    ramen-hub-operator-6fb887f885-fss4w         2/2     Running      0           4d20h

4.8. クラスター全体での SSL アクセスの設定

プライマリークラスターとセカンダリークラスター 間のネットワーク (SSL) アクセスを設定して、メタデータを代替クラスターのマルチクラウドゲートウェイ (MCG) object bucket に安全なトランスポートプロトコルを使用して格納し、ハブクラスター に格納してオブジェクトバケットへのアクセスを検証できるようにします。

注記

すべての OpenShift クラスターが環境の署名済みの有効な証明書セットを使用してデプロイされる場合は、このセクションを省略できます。

手順

  1. プライマリーマネージドクラスター の Ingress 証明書を展開し、出力を primary.crt に保存します。

    $ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > primary.crt
  2. セカンダリーマネージドクラスターの Ingress 証明書を抽出し、出力を secondary.crt に保存します。

    $ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > secondary.crt
  3. リモートクラスターの証明書バンドルを保持する新しい ConfigMap ファイルを、ファイル名 cm-clusters-crt.yaml で作成します。

    注記

    この例のように、クラスターごとに 3 つ以上の証明書が存在する可能性があります。また、以前作成した primary.crt ファイルおよび secondary.crt ファイルから、証明書の内容をコピーして貼り付けた後に、証明書の内容が正しくインデントされていることを確認します。

    apiVersion: v1
    data:
      ca-bundle.crt: |
        -----BEGIN CERTIFICATE-----
        <copy contents of cert1 from primary.crt here>
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert2 from primary.crt here>
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert3 primary.crt here>
        -----END CERTIFICATE----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert1 from secondary.crt here>
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert2 from secondary.crt here>
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        <copy contents of cert3 from secondary.crt here>
        -----END CERTIFICATE-----
    kind: ConfigMap
    metadata:
      name: user-ca-bundle
      namespace: openshift-config
  4. プライマリーマネージドクラスターセカンダリーマネージドクラスターハブクラスターConfigMap を作成します。

    $ oc create -f cm-clusters-crt.yaml

    出力例:

    configmap/user-ca-bundle created
  5. プライマリーマネージドクラスターセカンダリーマネージドクラスター、および ハブクラスター 上のデフォルトのプロキシーリソースにパッチを適用します。

    $ oc patch proxy cluster --type=merge  --patch='{"spec":{"trustedCA":{"name":"user-ca-bundle"}}}'

    出力例:

    proxy.config.openshift.io/cluster patched

4.9. マルチクラスター Web コンソールの有効化

これは、データポリシーまたは DRPolicy を作成する前に必要な新しい機能です。Hub クラスター でのみ必要で、RHACM 2.5 をインストールする必要があります。

重要

マルチクラスターコンソールは、テクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

手順

  1. 管理クラスター設定設定FeatureGate に移動します。
  2. YAML テンプレートを次のように編集します。

    [...]
    spec:
      featureSet: TechPreviewNoUpgrade
  3. Save をクリックして、RHACM コンソール内のすべてのクラスターに対してマルチクラスターコンソールを有効にします。Nodes が Ready になるまで待ちます。
  4. Web コンソールを更新し、管理対象クラスター名が All Clusters の下にリストされていることを確認します。
警告

このフィーチャーゲートは実稼働クラスターで設定しないでください。機能ゲートの適用後にクラスターのアップグレードはできず、元に戻すことはできません。

4.10. ハブクラスターでの障害復旧ポリシーの作成

Openshift 災害復旧ポリシー (DRPolicy) リソースは、災害復旧ソリューションに参加する OpenShift Container Platform クラスターと目的のレプリケーション間隔を指定します。DRPolicy は、ユーザーが障害復旧ソリューションを必要とするアプリケーションに適用できるクラスタースコープのリソースです。

ODF MultiCluster Orchestrator Operator は、Multicluster Web コンソール を介して、各 DRPolicy および対応する DRClusters の作成を容易にします。

前提条件

  • 2 つのマネージドクラスターの最小セットがあることを確認します。
  • マルチクラスター Web コンソール からすべてのクラスターにログインしてください。

    • すべてのクラスター をクリックして、管理対象クラスターのリストを展開します。
    • すべてのクラスター の下に一覧表示されている管理対象クラスターごとに、<cluster_name> をクリックし、選択したクラスターの資格情報を使用してログインできるログイン画面が表示されるまで待ちます。

手順

  1. OpenShift コンソール で、すべてのクラスター に移動します。

    マルチクラスターコンソールのデータポリシー
  2. Data Services に移動し、データポリシー をクリックします。
  3. DR ポリシーの作成 をクリックします。
  4. ポリシー名 を入力します。各 DRPolicy に一意の名前が付けられていることを確認します (例: ocp4perf1-ocp4perf2)。
  5. この新しいポリシーが関連付けられる管理対象クラスターのリストから 2 つのクラスターを選択します。
  6. レプリケーションポリシー は、選択した OpenShift クラスターに基づいて sync するように自動的に設定されます。
  7. Create をクリックします。
  8. DRPolicy が正常に作成されたことを確認します。作成された DRPolicy リソースごとに、Hub クラスター でこのコマンドを実行します。

    注記

    <drpolicy_name> を一意の名前に置き換えます。

    $ oc get drpolicy <drpolicy_name> -o jsonpath='{.status.conditions[].reason}{"\n"}'

    出力例:

    Succeeded
    注記

    DRPolicy が作成されると、それに伴って 2 つの DRCluster リソースも作成されます。3 つのリソースすべてが検証され、ステータスが Succeeded と表示されるまで、最大 10 分かかる場合があります。

  9. ハブクラスター から プライマリーマネージドクラスターセカンダリーマネージドクラスター の両方へのオブジェクトバケットアクセスを確認します。

    1. ハブクラスター上の DRClusters の名前を取得します。

      $ oc get drclusters

      出力例:

      NAME        AGE
      ocp4perf1   4m42s
      ocp4perf2   4m42s
    2. この DRCluster 検証コマンドを使用して、各マネージドクラスターで作成された各バケットへの S3 アクセスを確認します。

      注記

      <drcluster_name> を一意の名前に置き換えます。

      $ oc get drcluster <drcluster_name> -o jsonpath='{.status.conditions[2].reason}{"\n"}'

      出力例:

      Succeeded
      注記

      ハブクラスター の両方の DRClusters に対してコマンドを実行してください。

  10. OpenShift DR Cluster Operator のインストールが プライマリー管理対象クラスター および セカンダリー管理対象 クラスターで成功したことを確認します。

    $ oc get csv,pod -n openshift-dr-system

    出力例:

    NAME                                                                      DISPLAY                         VERSION   REPLACES   PHASE
    clusterserviceversion.operators.coreos.com/odr-cluster-operator.v4.11.0   Openshift DR Cluster Operator   4.11.0               Succeeded
    
    NAME                                             READY   STATUS    RESTARTS   AGE
    pod/ramen-dr-cluster-operator-5564f9d669-f6lbc   2/2     Running   0          5m32s

    各管理対象クラスターの OperatorHubOpenShift DR Cluster Operator が正常にインストールされていることを確認することもできます。

4.11. フェンシングの自動化のために DRClusters を設定する

この設定は、アプリケーションのフェイルオーバーの前にフェンシングを有効にするために必要です。災害に見舞われたクラスターから永続ボリュームへの書き込みを防ぐために、OpenShift DR は Red Hat Ceph Storage (RHCS) に、クラスターのノードを RHCS 外部ストレージからフェンシングするように指示します。このセクションでは、DRCluster のノードに IP または IP 範囲を追加する方法について説明します。

4.11.1. ノード IP アドレスを DRClusters に追加する

  1. プライマリーマネージドクラスター および セカンダリーマネージドクラスター でこのコマンドを実行して、マネージドクラスター内のすべての OpenShift ノードの IP アドレス を見つけます。

    $ oc get nodes -o jsonpath='{range .items[*]}{.status.addresses[?(@.type=="ExternalIP")].address}{"\n"}{end}'

    出力例:

    10.70.56.118
    10.70.56.193
    10.70.56.154
    10.70.56.242
    10.70.56.136
    10.70.56.99

    IP addresses を取得したら、管理対象クラスターごとに DRCluster リソースを変更できます。

  2. ハブクラスターで DRCluster 名を見つけます。

    $ oc get drcluster

    出力例:

    NAME        AGE
    ocp4perf1   5m35s
    ocp4perf2   5m35s
  3. <drcluster_name> を一意の名前に置き換えた後、各 DRCluster を編集して一意の IP アドレスを追加します。

    $ oc edit drcluster <drcluster_name>
    apiVersion: ramendr.openshift.io/v1alpha1
    kind: DRCluster
    metadata:
    [...]
    spec:
      s3ProfileName: s3profile-<drcluster_name>-ocs-external-storagecluster
      ## Add this section
      cidrs:
        -  <IP_Address1>/32
        -  <IP_Address2>/32
        -  <IP_Address3>/32
        -  <IP_Address4>/32
        -  <IP_Address5>/32
        -  <IP_Address6>/32
    [...]

    出力例:

    drcluster.ramendr.openshift.io/ocp4perf1 edited
注記

6 つを超える IP アドレスが存在する可能性があります。

ピア DRCluster リソース (ocp4perf2 など) の セカンダリー管理クラスターIP addresses についても、この DRCluster 設定を変更します。

4.11.2. DRClusters にフェンシングアノテーションを追加する

次の注釈をすべての DRCluster リソースに追加します。これらの注釈には、これらの手順の後半で作成される NetworkFence リソースに必要な詳細が含まれています (アプリケーションのフェイルオーバーをテストする前に)。

注記

<drcluster_name> を一意の名前に置き換えます。

$ oc edit drcluster <drcluster_name>
apiVersion: ramendr.openshift.io/v1alpha1
kind: DRCluster
metadata:
  ## Add this section
  annotations:
    drcluster.ramendr.openshift.io/storage-clusterid: openshift-storage
    drcluster.ramendr.openshift.io/storage-driver: openshift-storage.rbd.csi.ceph.com
    drcluster.ramendr.openshift.io/storage-secret-name: rook-csi-rbd-provisioner
    drcluster.ramendr.openshift.io/storage-secret-namespace: openshift-storage
[...]

出力例:

drcluster.ramendr.openshift.io/ocp4perf1 edited

両方の DRCluster リソースにこれらのアノテーションを必ず追加してください (例: ocp4perf1ocp4perf2)。

4.12. 障害復旧ソリューションをテストするためのサンプルアプリケーションを作成する

OpenShift Data Foundation 災害復旧 (DR) ソリューションは、RHACM によって管理されるアプリケーションの災害復旧をサポートします。詳細については、アプリケーションの管理 を参照してください。

このソリューションは、アプリケーションがフェイルオーバーまたは再配置の要件のために DRPolicy 内のクラスター間で移動されるときに、PlacementRule を使用して RHACM アプリケーションの配置を調整します。

以下のセクションでは、DRPolicy をアプリケーションに適用する方法と、クラスターが使用不可の間およびその後にアプリケーションの配置ライフサイクルを管理する方法について詳しく説明します。

注記

OpenShift Data Foundation DR ソリューションは、ArgoCD 経由でデプロイされるアプリケーションに必要な ApplicationSet をサポートしていません。

4.12.1. サンプルアプリケーションの作成

プライマリーマネージドクラスターからセカンダリーマネージドクラスターおよび replocate への failover およびフェイルバックをテストするには、単純なアプリケーションが必要です。

前提条件

  • 一般消費用のアプリケーションを作成する場合は、次のことを確認してください。

    • アプリケーションは 1 つのクラスターのみにデプロイされます。
    • アプリケーションは、DRPolicy をアプリケーションに適用する前にデプロイされます。
  • busybox というサンプルアプリケーションを例として使用します。
  • アプリケーションのすべての外部ルートが、アプリケーションがフェイルオーバーまたは再配置されたときのトラフィックリダイレクト用に Global Traffic Manager (GTM) または Global Server Load Balancing (GLSB) サービスを使用して設定されていることを確認します。

手順

  1. まだログインしていない場合は、OpenShift 認証情報を使用して RHACM コンソールにログインします。

    $ oc get route multicloud-console -n open-cluster-management -o jsonpath --template="https://{.spec.host}/multicloud/applications{'\n'}"

    出力例:

    https://multicloud-console.apps.perf3.example.com/multicloud/applications
  2. Applications に移動し、Create application をクリックします。
  3. 種類は Subscriptionを選択します。
  4. アプリケーションの Name (busybox など) および Namespace (busybox-sample など) を入力します。
  5. Repository location for resources セクションで Repository type Git を選択します。
  6. サンプルアプリケーションの github Branch および Path で、 Git リポジトリー URL を入力します。リソース busybox Pod および PVC が作成されます。

    サンプルアプリケーションリポジトリーを https://github.com/red-hat-storage/ocm-ramen-samples/tree/release-4.11 として使用します。BranchmainPathbusybox-odr-metro です。

  7. 指定されたラベルに一致するクラスターにのみアプリケーションリソースをデプロイする が表示されるまでフォームを下にスクロールし、RHACM クラスターリストビューの プライマリー管理対象クラスター 名に値が設定されたラベルを追加します。

    デプロイする ACM Select クラスター
  8. 右上隅にある 作成 をクリックします。

    後続の画面で、Topology タブに移動します。アプリケーショントポロジーのチェックマークがすべて緑であることが確認できるはずです。

    注記

    詳細な情報を表示するには、トポロジー要素のいずれかをクリックすると、トポロジービューの右側にウィンドウが表示されます。

  9. サンプルアプリケーションのデプロイを検証しています。

    busybox アプリケーションが優先クラスターにデプロイされたので、デプロイを検証できます。

    busybox が RHACM によってデプロイされたマネージドクラスターにログオンします。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    NAME          READY   STATUS    RESTARTS   AGE
    pod/busybox   1/1     Running   0          6m
    
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/busybox-pvc   Bound    pvc-a56c138a-a1a9-4465-927f-af02afbbff37   5Gi        RWO            ocs-storagecluster-ceph-rbd   6m

4.12.2. DRPolicy をサンプルアプリケーションに適用する

  1. ハブクラスターで、マルチクラスター Web コンソールに戻り、All Clusters に移動します。
  2. All Clusters の下にリストされているすべてのクラスターにログインします。
  3. Data Services に移動し、Data policies をクリックします。
  4. DRPolicy の最後にあるアクションメニューをクリックして、使用可能なアクションのリストを表示します。

    DRPolicy の適用
  5. Apply DRPolicy をクリックします。
  6. Apply DRPolicy モーダルが表示されたら、busybox アプリケーションを選択し、PVC ラベルappname=busybox として入力します。

    注記

    同じアプリケーションまたは複数のアプリケーションで複数の配置ルールが選択されている場合は、アプリケーションの namespace 内のすべての PVC がデフォルトで保護されます。

  7. Apply をクリックします。
  8. DRPlacementControl または DRPCハブクラスターbusybox-sample namespace に作成され、CURRENTSTATEDeployed として表示されていることを確認します。このリソースは、このアプリケーションのフェイルオーバーと再配置の両方のアクションに使用されます。

    $ oc get drpc -n busybox-sample

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE
    busybox-placement-1-drpc   6m59s   ocp4perf1                                            Deployed

4.12.3. サンプルアプリケーションの削除

RHACM コンソールを使用してサンプルアプリケーション busybox を削除できます。

注記

サンプルアプリケーションを削除する手順は、フェイルオーバーと再配置のテストが完了し、アプリケーションを RHACM とマネージドクラスターから削除する準備ができるまで実行しないでください。

手順

  1. RHACM コンソールで、Applications に移動します。
  2. 削除するサンプルアプリケーションを検索します (例: busybox)。
  3. 削除するアプリケーションの横にある Action メニュー (⋮) をクリックします。
  4. Delete application をクリックします。

    Delete application を選択すると、アプリケーション関連のリソースも削除すべきかどうかを求める新規画面が表示されます。

  5. Remove application related resources チェックボックスを選択して、Subscription および PlacementRule を削除します。
  6. Delete をクリックします。これにより、Primary マネージドクラスター (またはアプリケーションが実行しているクラスター) の busybox アプリケーションが削除されます。
  7. RHACM コンソールを使用して削除されたリソースのほかに、busybox アプリケーションの削除後にDRPlacementControl も削除する必要があります。

    1. ハブクラスターの OpenShift Web コンソールにログインし、プロジェクト busybox-sample の Installed Operators に移動します。
    2. OpenShift DR Hub Operator をクリックした後、DRPlacementControl タブをクリックします。
    3. 削除する busybox アプリケーション DRPlacementControl の横にあるアクションメニュー (⋮) をクリックします。
    4. Delete DRPlacementControl をクリックします。
    5. Delete をクリックします。
注記

このプロセスを使用して、DRPlacementControl リソースでアプリケーションを削除できます。

4.13. マネージドクラスター間のアプリケーションのフェイルオーバー

フェイルオーバーは、何らかの理由で管理対象クラスターが使用できなくなったときに実行されます。

本セクションでは、busybox サンプルアプリケーションをフェイルオーバーする方法を説明します。フェイルオーバー方式はアプリケーションベースです。この方法で保護される各アプリケーションは、アプリケーション名前空間に対応する DRPlacementControl リソースを持っている必要があります。

前提条件

  • ターゲットクラスターのフェンシングが解除されている間に、アプリケーションが実行しているプライマリークラスターがフェンスされていることを確認します。

4.13.1. Enable fencing

アプリケーションが現在実行されている OpenShift クラスターをフェイルオーバーするには、すべてのアプリケーションを外部の OpenShift Data Foundation 外部ストレージクラスターとの通信からフェンスする必要があります。これは、両方の管理対象クラスターから同じ永続ボリュームへの同時書き込みを防ぐために必要です。

Fence への OpenShift クラスターは、アプリケーションが現在実行されているクラスターです。

手順

  1. Hub クラスター で、このクラスターの DRCluster リソース を編集します。

    注意

    管理対象クラスターがフェンシングされると、アプリケーションから OpenShift Data Foundation 外部ストレージクラスターへの すべての 通信が失敗し、現在フェンシングされているクラスターで一部の Pod が 異常 な状態になります (例: CreateContainerErrorCrashLoopBackOff)。

    注記

    <drcluster_name> を一意の名前に置き換えます。

    $ oc edit drcluster <drcluster_name>
    apiVersion: ramendr.openshift.io/v1alpha1
    kind: DRCluster
    metadata:
    [...]
    spec:
      ## Add this line
      clusterFence: Fenced
      cidrs:
      [...]
    [...]

    出力例:

    drcluster.ramendr.openshift.io/ocp4perf1 edited
  2. プライマリーマネージドクラスターハブクラスター でフェンシングの状態を確認します。

    注記

    <drcluster_name> を一意の名前に置き換えます。

    $ oc get drcluster.ramendr.openshift.io <drcluster_name> -o jsonpath='{.status.phase}{"\n"}'

    出力例:

    Fenced

4.13.2. DRPlacementControl を変更してフェイルオーバーする

前提条件

  • フェイルオーバーを開始する前に、ハブクラスターbusybox-sample 名前空間の DRPlacementControl または DRPC の PEER READY が True であることを確認します。

    $ oc get drpc -n busybox-sample -o wide

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE    PROGRESSION   START TIME         	DURATION      	PEER READY
    busybox-placement-1-drpc   6m59s   ocp4perf1                                           Deployed        Completed 	 <timestamp>            <duration>  	True
注記

PEER READY が true でない場合は、可能な回避策について、リリースノート に記載されているディザスタリカバリー関連の既知の問題を参照してください。

手順

  1. Hub クラスターで、Installed Operators に移動し、Openshift DR Hub Operator をクリックします。
  2. DRPlacementControl タブをクリックします。

    注記

    busybox-sample 名前空間にいることを確認してください。

  3. DRPC busybox-placement-1-drpc をクリックしてから、YAML ビューをクリックします。
  4. 以下のスクリーンショットに示すように、アクションfailoverCluster の詳細を追加します。

    DRPlacementControl add action Failover

    Image show where to add the action Failover in the YAML view

    failoverCluster は、二次管理クラスター の RHACM クラスター名である必要があります。

  5. Save をクリックします。
  6. Hub クラスターbusybox -sample 名前空間にある DRPlacementControl または DRPC の CURRENTSTATE が FailedOver であることを確認します。

    $ oc get drpc -n busybox-sample (update examples as required)

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE
    busybox-placement-1-drpc   6m59s   ocp4perf1          ocp4perf2         Failover       FailedOver
  7. YAML ファイルで指定されているフェールオーバークラスター ocp4perf2 について、アプリケーションの busyboxセカンダリーマネージドクラスター で実行されていることを確認します。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    NAME          READY   STATUS    RESTARTS   AGE
    pod/busybox   1/1     Running   0          35s
    
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/busybox-pvc   Bound    pvc-79f2a74d-6e2c-48fb-9ed9-666b74cfa1bb   5Gi        RWO            ocs-storagecluster-ceph-rbd   35s
  8. プライマリーマネージドクラスターbusybox が実行されているかどうかを確認します。busybox アプリケーションは、このマネージドクラスターで実行されていないはずです。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    No resources found in busybox-sample namespace.
  9. アプリケーションの DNS ルートが正しく設定されているかどうかを確認します。外部ルートが設定されていない場合は、Global Traffic Manager (GTM) または Global Server Load Balancing (GLSB) サービスを使用してルートを再設定できます。
重要

リリースノートの 既知の問題 セクションに記載されている既知の DR の問題に注意してください。

4.14. マネージドクラスター間のアプリケーションの再配置

再配置操作はフェイルオーバーと非常に似ています。再配置はアプリケーションベースで、DRPlacementControl を使用して再配置をトリガーします。

障害が発生したクラスターが使用可能になり、障害が発生したクラスターでアプリケーションリソースがクリーンアップされると、再配置が実行されます。

この場合、アクションは preferredCluster に戻って Relocate となります。

前提条件

  • プライマリークラスターとターゲットクラスターの両方がフェンスされていないことを確認します。

4.14.1. フェンシングの無効化

failback または再配置アクションが成功する前に、プライマリー管理対象クラスターの DRClusterunfenced にする必要があります。

Unfenced にする OpenShift クラスターは、アプリケーションが現在実行されていないクラスターであり、以前に Fenced されたクラスターです。

手順

  1. Hub クラスターで、このクラスターの DRCluster リソース を編集します。

    注記

    <drcluster_name> を一意の名前に置き換えます。

    $ oc edit drcluster <drcluster_name>
    apiVersion: ramendr.openshift.io/v1alpha1
    kind: DRCluster
    metadata:
    [...]
    spec:
      cidrs:
      [...]
      ## Modify this line
      clusterFence: Unfenced
      [...]
    [...]

    出力例:

    drcluster.ramendr.openshift.io/ocp4perf1 edited
  2. Fenced であった OpenShift Container Platform ノードを正常に再起動します。リカバリーオーケストレーションの障害がさらに発生しないように、フェンシング解除後に I/O 操作を再開するには、再起動が必要です。ノードの 正常な再起動 の手順に従って、クラスターのすべてのワーカーノードを再起動します。

    注記

    ノードで再起動して uncordon 操作を実行する前に、すべてのノードが最初に接続解除され、ドレインされていることを確認してください。

  3. すべての OpenShift ノードが再起動され、Ready ステータスになったら、プライマリーマネージドクラスター (または Unfenced されたクラスター) でこのコマンドを実行して、すべての Pod が正常な状態であることを確認します。

    oc get pods -A | egrep -v 'Running|Completed'

    出力例:

    NAMESPACE                                          NAME                                                              READY   STATUS      RESTARTS       AGE

    次のステップに進む前に、このクエリーの出力は 0 Pod である必要があります。

    重要

    ストレージ通信が切断されたために Pod がまだ異常な状態にある場合は、続行する前にトラブルシューティングを行って解決してください。ストレージクラスターは OpenShift の外部にあるため、OpenShift アプリケーションを正常に動作させるには、サイトの停止後にストレージクラスターを適切に復元する必要もあります。

    または、OpenShift Web コンソールのダッシュボードと 概要 タブを使用して、アプリケーションと外部 ODF ストレージクラスターの正常性を評価することもできます。OpenShiftDataFoundation ダッシュボードの詳細は、Storage → Data Foundation に移動すると表示されます。

  4. Unfenced クラスターが正常な状態であることを確認します。プライマリーマネージドクラスターのハブクラスターでフェンシングの状態を確認します。

    注記

    <drcluster_name> を一意の名前に置き換えます。

    $ oc get drcluster.ramendr.openshift.io <drcluster_name> -o jsonpath='{.status.phase}{"\n"}'

    出力例:

    Unfenced

4.14.2. DRPlacementControl を Relocate に変更します。

前提条件

  • 両方のマネージドクラスターが稼働中であることを確認します。
  • 再配置を開始する前に、ハブクラスターbusybox-sample 名前空間の DRPlacementControl または DRPC の PEER READY が True であることを確認します。

    $ oc get drpc -n busybox-sample -o wide

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE    PROGRESSION   START TIME         	DURATION      	PEER READY
    busybox-placement-1-drpc   6m59s   ocp4perf1          ocp4perf2         Failover       FailedOver      Completed 	 <timestamp>            <duration>  	True
注記

PEER READY が true でない場合は、可能な回避策について、リリースノート に記載されているディザスタリカバリー関連の既知の問題を参照してください。

手順

  1. Hub クラスターで、Installed Operators に移動し、Openshift DR Hub Operator をクリックします。
  2. DRPlacementControl タブをクリックします。
  3. DRPC busybox-placement-1-drpc をクリックしてから、YAML ビューをクリックします。
  4. actionRelocate に変更します

    DRPlacementControl modify action to Relocate

    Image show where to modify the action in the YAML view

  5. Save をクリックします。
  6. Hub クラスターbusybox-sample 名前空間にある DRPlacementControl または DRPC の CURRENTSTATE が Relocated であることを確認します。

    $ oc get drpc -n busybox-sample

    出力例:

    NAME                       AGE     PREFERREDCLUSTER   FAILOVERCLUSTER   DESIREDSTATE   CURRENTSTATE
    busybox-placement-1-drpc   6m59s   ocp4perf1          ocp4perf2         Relocate       Relocated
  7. アプリケーションの busybox が現在 プライマリーマネージドクラスター で実行されているかどうかを確認します。再配置は、YAML ファイルで指定されている preferredCluster ocp4perf1 に対して行わ れます。これは、フェイルオーバー操作の前にアプリケーションが実行されていた場所です。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    NAME          READY   STATUS    RESTARTS   AGE
    pod/busybox   1/1     Running   0          60s
    
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/busybox-pvc   Bound    pvc-79f2a74d-6e2c-48fb-9ed9-666b74cfa1bb   5Gi        RWO            ocs-storagecluster-ceph-rbd   61s
  8. busyboxセカンダリーマネージドクラスターで実行しているかどうかを確認します。busybox アプリケーションは、このマネージドクラスターで実行されていないはずです。

    $ oc get pods,pvc -n busybox-sample

    出力例:

    No resources found in busybox-sample namespace.
  9. アプリケーションの DNS ルートが正しく設定されているかどうかを確認します。外部ルートが設定されていない場合は、Global Traffic Manager (GTM) または Global Server Load Balancing (GLSB) サービスを使用してルートを再設定できます。
重要

リリースノートの 既知の問題 セクションに記載されている既知の DR の問題に注意してください。

第5章 障害復旧のトラブルシューティング

5.1. Regional-DR のトラブルシューティング

5.1.1. 一部のイメージで RBD ミラーリングのスケジューリングが停止する

問題

一部のイメージで RBD ミラーリングスケジューリングが停止する一般的な原因がいくつかあります。

アプリケーションをミラーリング用にマークした後、何らかの理由で複製されない場合は、ツールボックス Pod を使用して次のコマンドを実行し、どのイメージのスケジューリングが停止されているかを確認します。

$ rbd snap ls <poolname/imagename> –all
解決方法
  • プライマリークラスターでマネージャーデーモンを再起動します。
  • プライマリークラスター上の影響を受けるイメージのミラーリングを無効にして、すぐに再度有効にします。

BZ リファレンス: 2067095 および 2121514

5.1.2. 移転失敗

問題
ピア (ターゲットクラスター) がクリーンな状態になる前に再配置が開始されると、再配置は永遠に停止します。
解決方法
  1. 次のコマンドを実行して、状態の ステータス を確認します。

    $ oc get drpc -A -o wide
  2. DRPC.Spec.ActionFailover に戻し、PeerReady 条件のステータスが TRUE になるまで待ちます。アクションを変更するには、次のコマンドを使用します。

    $ oc patch drpc <drpc_name> --type json -p "[{'op': 'add', 'path': '/spec/failoverCluster', 'value': "<failoverCluster_name>"}]" -n <application_namespace>
    
    $ oc patch drpc <drpc_name>  --type json -p "[{'op': 'add', 'path': '/spec/action', 'value': 'Failover'}]" -n <application_namespace>
  3. フェイルオーバー検証

    ワークロードがフェイルオーバーしたかどうかを確認するには、次のコマンドを実行して、DRPC リソースで利用可能な状態のステータスを確認します。

    JSONPATH='{range @.status.conditions[*]}{@.type}={@.status};{end}'  && oc get drpc busybox-drpc -n busybox-sample -o jsonpath="$JSONPATH" | grep "Available=True"

BZ リファレンス: 2056871

5.1.3. rbd-mirror デーモンのヘルスが警告状態です

問題

ミラーサービス ::get_mirror_service_statusCeph モニターを呼び出して rbd-mirror のサービスステータスを取得すると、WARNING が報告されるケースが多数あるようです。

ネットワークの切断後、rbd-mirror デーモンのヘルスは warning 状態になりますが、両方の管理対象クラスター間の接続は良好です。

解決方法

ツールボックスで次のコマンドを実行し、leader:false を探します。

rbd mirror pool status --verbose ocs-storagecluster-cephblockpool | grep 'leader:'

出力に次のように表示される場合:

leader: false

これは、デーモンの起動に問題があることを示しており、最も可能性の高い根本原因は、セカンダリークラスターへの確実な接続の問題である可能性があります。

回避策: Pod を削除するだけで rbd-mirror Pod を別のノードに移動し、別のノードで再スケジュールされていることを確認します。

leader: true または出力なし

Red Hat サポートに連絡してください

BZ リファレンス: 2118627

5.1.4. フェイルオーバー後に statefulset アプリケーションがスタックする

問題
アプリケーションは、フェイルオーバーまたは再配置後に terminating 状態にあります。
解決方法

次のコマンドを使用して、アプリケーションの persistent volume claim (PVC) を削除します。

$ oc delete pvc <namespace/name>

BZ リファレンス: 2087782

5.1.5. フェイルオーバー後にアプリケーションが実行されていない

問題
アプリケーションのフェイルオーバー後、ミラーリングされた RBD をアタッチできますが、まだ使用中のファイルシステムをマウントすることはできません。
解決方法
  1. アプリケーション Pod が上記のエラーから回復できるまで、RBD ミラーデーモンのデプロイメントを 0 にスケールダウンします。

    $ oc scale deployment rook-ceph-rbd-mirror-a -n openshift-storage --replicas=0
  2. 復旧後、RBD ミラーデーモンのデプロイメントを 1 に戻します。

    $ oc scale deployment rook-ceph-rbd-mirror-a -n openshift-storage --replicas=1

BZ リファレンス: 2007376

5.2. Metro-DR のトラブルシューティング

5.2.1. フェイルオーバー後にステートフルセットアプリケーションがスタックする

問題
アプリケーションは、フェイルオーバーまたは再配置後に終了状態にあります。
解決方法
  1. ワークロードで StatefulSets が使用されている場合は、フェイルバックまたは別のクラスターへの再配置の前に、次のコマンドを実行します。

    $ oc get drpc -n <namespace> -o wide
    • PeerReady が TRUE の場合、フェイルバックまたは再配置を続行できます。
    • PeerReady が FALSE の場合、ピアクラスターで次のコマンドを実行します。

      $ oc get pvc -n <namespace>

      StatefulSet に属する名前空間の制限付き PVC ごとに、次を実行します。

      $ oc delete pvc <pvcname> -n namespace

      すべての PVC が削除されると、ボリュームレプリケーショングループ (VRG) はセカンダリーに移行してから削除されます。

  2. 次のコマンドを再度実行します

    $ oc get drpc -n <namespace> -o wide

    数秒から数分後、PeerReady 列が TRUE に変わります。その後、フォールバックまたは再配置を続行できます。

BZ リファレンス: 2118270

5.2.2. DR ポリシーは、同じ namespace 内のすべてのアプリケーションを保護します

問題
DR ポリシーで使用するアプリケーションが 1 つだけ選択されている場合でも、同じ名前空間内のすべてのアプリケーションが保護されます。これにより、複数のワークロードで DRPlacementControl spec.pvcSelector に一致する PVC が生成されるか、すべてのワークロードでセレクターが欠落している場合、レプリケーション管理が各 PVC を複数回管理し、個々の DRPlacementControl アクションに基づいてデータの破損または無効な操作を引き起こす可能性があります。
解決方法
ワークロードに属する PVC に一意のラベルを付け、選択したラベルを DRPlacementControl spec.pvcSelector として使用して、どの DRPlacementControl がネームスペース内の PVC のどのサブセットを保護および管理するかを明確にします。ユーザーインターフェイスを使用して DRPlacementControl の spec.pvcSelector フィールドを指定することはできません。したがって、そのようなアプリケーションの DRPlacementControl を削除し、コマンドラインを使用して作成する必要があります。

BZ リファレンス: 2111163

5.2.3. アプリケーションのフェイルバック中に Relocating 状態でスタックする

問題
この問題は、アプリケーションのフェイルオーバーおよびフェイルバックを実行した後に発生する可能性があります (すべてのノードまたはクラスターが稼働中)。フェールバックアプリケーションを実行すると、PV の復元が完了する Waiting というメッセージが表示され、Relocating 状態でスタックします。
解決方法
S3 クライアントまたは同等のサービスを使用して、重複する PV オブジェクトを s3 ストアからクリーンアップします。タイムスタンプがフェールオーバーまたは再配置の時刻に近いものだけを保持します。

BZ リファレンス: 2120201

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.