5.8. 障害からの復旧

ストレージ管理者は、ミラーリングが設定された別のストレージクラスターからデータを回復する方法を理解することで、致命的なハードウェアの障害に備えることができます。

この例では、プライマリーストレージクラスターは site-a と呼ばれ、セカンダリーストレージクラスターは site-b と呼ばれます。また、ストレージクラスターにはどちらも image1image2 の 2 つのイメージが含まれる data プールがあります。

5.8.1. 前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • 一方向または双方向ミラーリングが設定されている。

5.8.2. 障害回復

2 つ以上の Red Hat Ceph Storage クラスターの間でブロックデータを非同期にレプリケーションすることで、データセンターで大規模な障害が発生した場合にデータの損失を防ぎ、ダウンタイムが削減されます。このような障害の影響は 大規模な爆発半径 とも呼ばれ、広範囲にわたります。また、送配電網への影響や、天然災害などが原因となります。

顧客データはこれらのシナリオに備え、保護する必要があります。ボリュームは、Micre Recovery Pointive (RPO) および Recovery Time Objective (RTO) ターゲット内で、一貫性と効率性を使用してレプリケーションする必要があります。このソリューションは、Dnaly Area Network- Disaster Recovery (WAN-DR) と呼ばれます。

このようなシナリオでは、プライマリーシステムとデータセンターを復元することが困難です。最も簡単に復元する方法として、別の Red Hat Ceph Storage クラスター (障害回復サイト) にアプリケーションをフェイルオーバーして、利用可能な最新のデータのコピーでクラスターを稼働させることなどが挙げられます。このような障害シナリオから回復するのに使用されるソリューションは、アプリケーションによりガイドされます。

  • Recovery Point Objective (RPO): 最悪の場合にアプリケーションが許容するデータ損失量。
  • Recovery Time Objective (RTO): 利用可能なデータの最新コピーで、アプリケーションをオンラインに戻すのにかかる時間。

関連情報

  • 詳細は、Red Hat Ceph Storage ブロックデバイスガイドCeph ブロックデバイスのミラーリング セクションを参照してください。
  • 暗号化された状態のデータ転送の詳細は、Red Hat Ceph Storage データのセキュリティーおよび強化ガイド転送中での暗号化 セクションを参照してください。

5.8.3. 一方向ミラーリングを使用した障害からの復旧

一方向のミラーリングで障害から回復するには、以下の手順を使用します。以下で、プライマリークラスターを終了してからセカンダリークラスターにフェイルオーバーする方法、およびフェイルバックする方法が紹介します。シャットダウンは規定の順序で行うことも、順序関係なく行うこともできます。

重要

一方向ミラーリングは、複数のセカンダリーサイトをサポートします。追加のセカンダリークラスターを使用している場合は、セカンダリークラスターの中から 1 つ選択してフェイルオーバーします。フェイルバック中に同じクラスターから同期します。

5.8.4. 双方向ミラーリングを使用した障害からの復旧

双方向ミラーリングで障害から回復するには、以下の手順を使用します。以下で、プライマリークラスターを終了してからセカンダリークラスターのミラーリングデータにフェイルオーバーする方法、およびフェイルバックする方法が紹介します。シャットダウンは、正常でもそうでなくても構いません。

関連情報

  • イメージのデモート、プロモート、および同期の詳細は、Red Hat Ceph Storage ブロックデバイスガイドイメージでのミラーリングの設定 セクションを参照してください。

5.8.5. 正常なシャットダウン後のフェイルオーバー

正常にシャットダウンした後にセカンダリーストレージクラスターにファイルオーバーします。

前提条件

  • 少なくとも実行中の Red Hat Ceph Storage クラスターが 2 台ある。
  • ノードへのルートレベルのアクセス。
  • 一方向ミラーリング を使用して設定されるプールのミラーリングまたはイメージミラーリング。

手順

  1. プライマリーイメージを使用するクライアントをすべて停止します。この手順は、どのクライアントがイメージを使用するかにより異なります。たとえば、イメージを使用する OpenStack インスタンスからボリュームの割り当てを解除します。
  2. site-a クラスターのモニターノードで以下のコマンドを実行して、site-a クラスターにあるプライマリーイメージをデモートします。

    構文

    rbd mirror image demote POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image demote data/image1
    [root@rbd-client ~]# rbd mirror image demote data/image2

  3. site-b クラスターにあるプライマリー以外のイメージをプロモートするには、site-b クラスターのモニターノードで以下のコマンドを実行します。

    構文

    rbd mirror image promote POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image promote data/image1
    [root@rbd-client ~]# rbd mirror image promote data/image2

  4. しばらくすると、site-b クラスターのモニターノードからイメージのステータスを確認します。イメージのステータスは、up+stopped の状態を表示し、プライマリーとしてリストされているはずです。

    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-17 16:04:37
    [root@rbd-client ~]# rbd mirror image status data/image2
    image2:
      global_id:   596f41bc-874b-4cd4-aefe-4929578cc834
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-17 16:04:37
  5. イメージへのアクセスを再開します。この手順は、どのクライアントがイメージを使用するかにより異なります。

関連情報

5.8.6. 正常にシャットダウンされなかった場合のフェイルオーバー

正常でないシャットダウン後にセカンダリーストレージクラスターにフェイルオーバーします。

前提条件

  • 少なくとも実行中の Red Hat Ceph Storage クラスターが 2 台ある。
  • ノードへのルートレベルのアクセス。
  • 一方向ミラーリング を使用して設定されるプールのミラーリングまたはイメージミラーリング。

手順

  1. プライマリーストレージクラスターが停止していることを確認します。
  2. プライマリーイメージを使用するクライアントをすべて停止します。この手順は、どのクライアントがイメージを使用するかにより異なります。たとえば、イメージを使用する OpenStack インスタンスからボリュームの割り当てを解除します。
  3. site-b ストレージクラスターの Ceph Monitor ノードからプライマリー以外のイメージをプロモートします。site-a ストレージクラスターにデモートが伝播されないので、--force オプションを使用します。

    構文

    rbd mirror image promote --force POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image promote --force data/image1
    [root@rbd-client ~]# rbd mirror image promote --force data/image2

  4. site-b ストレージクラスターの Ceph Monitor ノードからイメージのステータスを確認します。状態として、up+stopping_replay が、説明に force promoted と表示されるはずです。

    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopping_replay
      description: force promoted
      last_update: 2019-04-17 13:25:06
    [root@rbd-client ~]# rbd mirror image status data/image2
    image2:
      global_id:   596f41bc-874b-4cd4-aefe-4929578cc834
      state:       up+stopping_replay
      description: force promoted
      last_update: 2019-04-17 13:25:06

関連情報

5.8.7. フェイルバックの準備

2 つのストレージクラスターが元々、一方向ミラーリングだけ設定されていた場合に、フェイルバックするには、プライマリーストレージクラスターのミラーリングを設定して、反対方向にイメージをレプリケートできるようにします。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • ノードへのルートレベルのアクセス。

手順

  1. site-a ストレージクラスターのクライアントノードで、rbd-mirror パッケージをインストールします。

    [root@rbd-client ~]# yum install rbd-mirror
    注記

    パッケージは Red Hat Ceph Storage Tools リポジトリーによって提供されます。

  2. site-a ストレージクラスターのクライアントノードで、 CLUSTER オプションを /etc/sysconfig/ceph ファイルに追加して、ストレージクラスター名を指定します。

    CLUSTER=site-b
  3. site-b Ceph 設定ファイルおよびキーリングファイルを site-b Ceph Monitor ノードから site-a の Ceph Monitor およびクライアントノードにコピーします。

    構文

    scp /etc/ceph/ceph.conf USER@SITE_A_MON_NODE_NAME:/etc/ceph/site-b.conf
    scp /etc/ceph/site-b.client.site-b.keyring root@SITE_A_MON_NODE_NAME:/etc/ceph/
    scp /etc/ceph/ceph.conf user@SITE_A_CLIENT_NODE_NAME:/etc/ceph/site-b.conf
    scp /etc/ceph/site-b.client.site-b.keyring user@SITE_A_CLIENT_NODE_NAME:/etc/ceph/

    注記

    Ceph 設定ファイルを site-b Ceph Monitor ノードから site-a の Ceph Monitor およびクライアントノードに転送する scp コマンドをし用すると、ファイルの名前が site-a.conf に変更されます。キーリングファイル名は同じままです。

  4. site-a キーリングファイルを site-a Ceph Monitor ノードから site-a クライアントノード にコピーします。

    構文

    scp /etc/ceph/site-a.client.site-a.keyring <user>@SITE_A_CLIENT_HOST_NAME:/etc/ceph/

  5. site-a クライアントノードで rbd-mirror デーモンを有効にして起動します。

    構文

    systemctl enable ceph-rbd-mirror.target
    systemctl enable ceph-rbd-mirror@CLIENT_ID
    systemctl start ceph-rbd-mirror@CLIENT_ID

    CLIENT_ID は、rbd-mirror デーモンが使用する Ceph Storage クラスターユーザーに変更します。ユーザーには、ストレージクラスターへの適切な cephx アクセスが必要です。

    [root@rbd-client ~]# systemctl enable ceph-rbd-mirror.target
    [root@rbd-client ~]# systemctl enable ceph-rbd-mirror@site-a
    [root@rbd-client ~]# systemctl start ceph-rbd-mirror@site-a

  6. site-a クラスターのクライアントノードから、site-b クラスターをピアとして追加します。

    [root@rbd-client ~]# rbd --cluster site-a mirror pool peer add data client.site-b@site-b -n client.site-a

    複数のセカンダリーストレージクラスターを使用している場合には、フェイルオーバー先とフェイルバック元に選択されたセカンダリーストレージクラスターを追加する必要があります。

  7. site-a ストレージクラスターのモニターノードから、site-b ストレージクラスターがピアとして正常に追加されたことを確認します。

    構文

    rbd mirror pool info POOL_NAME

    [root@rbd-client ~]# rbd mirror pool info data
    Mode: image
    Site Name: site-a
    
    Peer Sites:
    
    UUID: 950ddadf-f995-47b7-9416-b9bb233f66e3
    Name: site-b
    Mirror UUID: 4696cd9d-1466-4f98-a97a-3748b6b722b3
    Direction: rx-tx
    Client: client.site-b

関連情報

  • 詳細は、Red Hat Ceph Storage 管理ガイドUser Management の章を参照してください。

5.8.7.1. プライマリーストレージクラスターへのフェイルバック

以前のプライマリーストレージクラスターが復元されたら、そのクラスターがプライマリーストレージクラスターにフェイルバックされます。

前提条件

  • 少なくとも実行中の Red Hat Ceph Storage クラスターが 2 台ある。
  • ノードへのルートレベルのアクセス。
  • 一方向ミラーリング を使用して設定されるプールのミラーリングまたはイメージミラーリング。

手順

  1. もう一度、site-b クラスターのモニターノードからイメージのステータスを確認します。状態として up-stopped、説明として local image is primary と表示されるはずです。

    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-22 17:37:48
    [root@rbd-client ~]# rbd mirror image status data/image2
    image2:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-22 17:38:18

  2. site-a ストレージクラスターの Ceph Monitor ノードから、イメージがプライマリーかどうかを確認します。

    構文

    rbd info POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd info data/image1
    [root@rbd-client ~]# rbd info data/image2

    コマンドの出力で、mirroring primary: true または mirroring primary: false を検索し、状態を判断します。

  3. site-a ストレージクラスターの Ceph Monitor ノードから以下のようなコマンドを実行して、プライマリーとして表示されているイメージをデモートします。

    構文

    rbd mirror image demote POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image demote data/image1

  4. 正常にシャットダウンされなかった場合にのみ、イメージをもう一度同期します。site-a ストレージクラスターのモニターノードで以下のコマンドを実行し、イメージを site-b から site-a に再同期します。

    構文

    rbd mirror image resync POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image resync data/image1
    Flagged image for resync from primary
    [root@rbd-client ~]# rbd mirror image resync data/image2
    Flagged image for resync from primary

  5. しばらくしたら、状態が up+replaying かをチェックして、イメージの最同期が完了していることを確認します。site-a ストレージクラスターのモニターノードで以下のコマンドを実行して、イメージの状態を確認します。

    構文

    rbd mirror image status POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image status data/image1
    [root@rbd-client ~]# rbd mirror image status data/image2

  6. site-b ストレージクラスターの Ceph Monitor ノードで以下のコマンドを実行して、site-b ストレージクラスターのイメージをデモートします。

    構文

    rbd mirror image demote POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image demote data/image1
    [root@rbd-client ~]# rbd mirror image demote data/image2

    注記

    複数のセカンダリーストレージクラスターがある場合に、上記の実行は、プロモートされたセカンダリーストレージクラスターからだけで結構です。

  7. site-a ストレージクラスターの Ceph Monitor ノードで以下のコマンドを実行して、site-a ストレージクラスターに配置されていた、以前のプライマリーイメージをプロモートします。

    構文

    rbd mirror image promote POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image promote data/image1
    [root@rbd-client ~]# rbd mirror image promote data/image2

  8. site-a ストレージクラスターの Ceph Monitor ノードからイメージのステータスを確認します。状態として up+stopped、説明として local image is primary と表示されるはずです。

    構文

    rbd mirror image status POOL_NAME/IMAGE_NAME

    [root@rbd-client ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-22 11:14:51
    [root@rbd-client ~]# rbd mirror image status data/image2
    image2:
      global_id:   596f41bc-874b-4cd4-aefe-4929578cc834
      state:       up+stopped
      description: local image is primary
      last_update: 2019-04-22 11:14:51

5.8.8. 双方向ミラーリングの削除

フェイルバックが完了したら、双方向ミラーリングを削除し、Ceph ブロックデバイスのミラーリングサービスを無効にできます。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • ノードへのルートレベルのアクセス。

手順

  1. site-a ストレージクラスターから、ピアとしての site-b ストレージクラスターを削除します。

    [root@rbd-client ~]# rbd mirror pool peer remove data client.remote@remote --cluster local
    [root@rbd-client ~]# rbd --cluster site-a mirror pool peer remove data client.site-b@site-b -n client.site-a

  2. site-a クライアントで rbd-mirror デーモンを停止して無効にします。

    構文

    systemctl stop ceph-rbd-mirror@CLIENT_ID
    systemctl disable ceph-rbd-mirror@CLIENT_ID
    systemctl disable ceph-rbd-mirror.target

    [root@rbd-client ~]# systemctl stop ceph-rbd-mirror@site-a
    [root@rbd-client ~]# systemctl disable ceph-rbd-mirror@site-a
    [root@rbd-client ~]# systemctl disable ceph-rbd-mirror.target