この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

障害復旧ボリューム

コンテナ化されたアプリケーションで作業する際には、データのレジリエンスを確保することが重要です。*Longhorn障害復旧(DR)ボリューム*は、セカンダリKubernetesクラスターにデータの待機コピーを維持するために設計された特別なタイプのボリュームです。これは、プライマリボリュームのバックアップから作成され、プライマリクラスターが利用できなくなった場合に迅速に復旧できるように同期されます。

DRボリュームは、地理的に分離されたデータのレプリカを保存します。バックアップの頻度は、DRボリュームがどれだけ最新であるか、したがってサイト障害が発生した場合の潜在的なデータ損失の量を決定します。

動作方法

DRボリュームの機能は、共有バックアップストアを介した非同期レプリケーションに依存しています。

共有バックアップターゲット

プライマリおよびセカンダリKubernetesクラスターは、正確に同じ外部バックアップターゲット(例えば、S3互換のオブジェクトストアまたはNFS共有)を使用するように構成する必要があります。

増分バックアップと復元

DRボリュームは、既存のバックアップから作成されます。これは、ソースボリュームからの新しいバックアップを継続的にポーリングし、それらを増分的に復元します。UIの*最終バックアップ*フィールドには、復元された最も最近のバックアップが表示されます。

DRボリュームを最新の状態に保つために、ソースボリュームで定期的な増分バックアップを実行する定期ジョブを構成します。これらの定期バックアップは、DRボリュームに新しいバックアップを提供し、災害発生時のデータ損失を最小限に抑えるのに役立ちます。

待機状態

DRボリュームは、受動的な待機状態にあります。これは、マウントされず、どのワークロードからもアクセスできないため、データの不整合を防ぎます。UIは、アイコンでボリュームの状態を示します:

  • グレーのアイコン:ボリュームはデータを復元中で、アクティブ化できません。

  • 青のアイコン:ボリュームは完全に同期されており、アクティブ化の準備が整っています。

実行

災害時には、手動でDRボリュームをアクティブ化します。このプロセスは、それを標準の書き込み可能なLonghornボリュームに変換し、リカバリークラスター内のアプリケーションに接続できるようにします。

DRボリュームの作成

SUSE Storage UIまたは`kubectl`を使用してDRボリュームを作成できます。

クラスターAとクラスターBと呼ばれる2つのKubernetesクラスターを設定します。両方のクラスターにSUSE Storageをインストールし、同じバックアップターゲットを構成します。バックアップターゲットの設定に関する支援については、バックアップターゲットの構成ページを参照してください。

SUSE Storage UIを使用して

  1. プライマリクラスターでは、ソースボリュームに少なくとも1つのバックアップがあることを確認してください。

  2. セカンダリ(リカバリー)クラスターのSUSE Storage UIで、*バックアップ*ページに移動してください。

  3. リストから希望のバックアップを選択し、「DRボリュームを作成」を選択します。元のボリュームと同じ名前を使用することをお勧めします。

  4. SUSE Storageがボリュームを作成し、*ボリューム*ページにスタンバイ状態で表示されます。

`kubectl`コマンドを使用して

  1. バックアップURLを取得する:最初に、SUSE Storage UIの*バックアップ*ページからソースバックアップの完全なURLをコピーします。このURLの形式は、構成されたバックアップターゲット(例:S3またはNFS)によって異なります。

  2. YAMLマニフェストを作成します:次の内容でファイル(例:dr-volume.yaml)を作成します。プレースホルダーURLを置き換え、名前、サイズ、`accessMode`などをソースボリュームに合わせて調整します。このファイルでは、`standby: true`フィールドがボリュームをDRスタンバイボリュームとして定義します。

apiVersion: longhorn.io/v1beta2
kind: Volume
metadata:
  name: example-dr-volume
  namespace: longhorn-system
spec:
  size: "2147483648"
  accessMode: rwo
  numberOfReplicas: 3
  fromBackup: "nfs://longhorn-nfs-server.example.com:/opt/backupstore?backup=backup-b69a1249e97f4a27&volume=pvc-33509786-92d7-427c-9b5a-b6d61d56b063"
  # This flag is essential to create a standby volume
  Standby: true
  1. マニフェストを適用します:ボリュームを作成するために、セカンダリクラスタにマニフェストを適用します。

DRボリュームのアクティベーション

フェールオーバーが必要な場合、DRボリュームをアクティブ化して書き込み可能にします。

SUSE Storageは、以下の条件下でのアクティベーションをサポートします:

  • ボリュームが正常であり、すべてのレプリカが正常な状態であることを示しています。

  • ボリュームが劣化している(いくつかのレプリカが失敗している)が、グローバル設定Allow Volume Creation with Degraded Availabilityが有効な場合のみ。

`Allow Volume Creation with Degraded Availability`設定が無効な場合、劣化したDRボリュームをアクティブにしようとすると、ボリュームが`Attached`状態に固まります。

設定を有効にした後、DRボリュームはアクティブになり、通常のボリュームに変換され、`Detached`状態のままになります。

SUSE Storage UIを使用して

  1. セカンダリクラスタのSUSE Storage UIの*ボリューム*ページに移動します。

  2. アクティブにしたいDRボリュームを選択します。

  3. *操作*ドロップダウンメニューの*DRボリュームをアクティブ化する*ボタンをクリックします。

  4. ボリュームは`Detached`状態に遷移し、ワークロードにアタッチできます。

コマンド`kubectl`を使用して

  1. DRボリュームをアクティブ化し、フロントエンドを更新するには、次のコマンドを実行します。

kubectl patch volume example-dr-volume1 -n longhorn-system --type='json' -p='[
  {"op": "replace", "path": "/spec/Standby", "value": false},
  {"op": "replace", "path": "/spec/frontend", "value": "blockdev"}
]'
  1. ボリュームは`Detached`状態に遷移し、ワークロードにアタッチできます。

制限

DRボリュームの主な目的はバックアップからデータを復元することであるため、ボリュームがアクティブになるまで以下のアクションはサポートされません。

  • スナップショットの作成、削除、または復元

  • バックアップの作成

  • 永続ボリューム(PV)の作成

  • 永続ボリュームクレーム(PVC)の作成