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


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

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

重要

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

前提条件

  • 2 つ以上の実行中のクラスター。
  • 一方向ミラーリングを使用して設定されるプールのミラーリングまたはイメージミラーリング。

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

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

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

    # rbd mirror image promote data/image1
    # rbd mirror image promote data/image2
  4. しばらくすると、site-b クラスターのモニターノードからイメージのステータスを確認します。up+stopped の状態が表示されるはずです。また、説明には primary が表示されるはずです。

    # 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 13:18:36
    # 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 13:18:36

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

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

    # rbd mirror image promote --force data/image1
    # rbd mirror image promote --force data/image2
  4. もう一度、site-b クラスターのモニターノードからイメージのステータスを確認します。状態として、up+stopping_replay が、説明に force promoted と表示されるはずです。

    # 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
    # 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

フェイルバックの準備

以前のプライマリークラスターが回復すると、フェイルバックを行います。

2 つのクラスターが最初に一方向ミラーリング用にのみ設定されている場合、フェイルバックを行うためにプライマリークラスターもミラーリング用に設定され、逆方向でイメージを複製する必要があります。

  1. site-a クラスターのクライアントノードで、rbd-mirror パッケージをインストールします。パッケージは Red Hat Ceph Storage Tools リポジトリーによって提供されます。

    Red Hat Enterprise Linux

    # yum install rbd-mirror

    Ubuntu

    $ sudo apt-get install rbd-mirror
  2. site-a クラスターのクライアントノードで、CLUSTER オプションを適切なファイルに追加してクラスター名を指定します。Red Hat Enterprise Linux で、/etc/sysconfig/ceph ファイルを更新し、Ubuntu で、それに応じて /etc/default/ceph ファイルを更新します。

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

    # scp /etc/ceph/ceph.conf <user>@<site-a_mon-host-name>:/etc/ceph/site-b.conf
    # scp /etc/ceph/site-b.client.site-b.keyring root@<site-a_mon-host-name>:/etc/ceph/
    # scp /etc/ceph/ceph.conf user@<site-a_client-host-name>:/etc/ceph/site-b.conf
    # scp /etc/ceph/site-b.client.site-b.keyring user@<site-a_client-host-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 アクセスが必要です。詳細は、Red Hat Ceph Storage 管理ガイド の ユーザー管理 の章を参照してください。

    site-a を使用した前述の例に基づいて、コマンドは以下のようになります。

    # systemctl enable ceph-rbd-mirror.target
    # systemctl enable ceph-rbd-mirror@site-a
    # systemctl start ceph-rbd-mirror@site-a
  6. site-a クラスターのクライアントノードから、site-b クラスターをピアとして追加します。

    # 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 -p data
    Mode: image
    Peers:
      UUID                                 NAME   CLIENT
      d2ae0594-a43b-4c67-a167-a36c646e8643 site-b client.site-b

failback

以前のプライマリークラスターが回復すると、フェイルバックを行います。

  1. site-a クラスターのモニターノードから、イメージがプライマリーかどうかを判別します。

    # rbd info data/image1
    # rbd info data/image2

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

  2. site-a クラスターのモニターノードから以下のようなコマンドを実行して、プライマリーとして一覧表示されるイメージを降格します。

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

    # rbd mirror image resync data/image1
    Flagged image for resync from primary
    # rbd mirror image resync data/image2
    Flagged image for resync from primary
    1. しばらくしたら、状態が up+replaying かをチェックして、イメージの最同期が完了していることを確認します。site-a ストレージクラスターのモニターノードで以下のコマンドを実行して、イメージの状態を確認します。

      # rbd mirror image status data/image1
      # rbd mirror image status data/image2
  4. site-b クラスターのモニターノードで以下のコマンドを実行して、site-b クラスターのイメージを降格します。

    # rbd mirror image demote data/image1
    # rbd mirror image demote data/image2
    注記

    複数のセカンダリークラスターがある場合、これは昇格されたセカンダリークラスターからのみ実行する必要があります。

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

    # rbd mirror image promote data/image1
    # rbd mirror image promote data/image2
  6. site-a クラスターの監視ノードからイメージのステータスを確認します。状態として up+stopped、説明として local image is primary と表示されるはずです。

    # 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
    # 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

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

上記の Prepare for failback セクションで、双方向ミラーリングの機能は site-b クラスターから site-a クラスターへの同期を有効にするように設定されています。フェイルバックが完了すると、これらの関数を無効にすることができます。

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

    $ rbd mirror pool peer remove data client.remote@remote --cluster local
    # 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

    以下に例を示します。

    # systemctl stop ceph-rbd-mirror@site-a
    # systemctl disable ceph-rbd-mirror@site-a
    # systemctl disable ceph-rbd-mirror.target

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.