検索

第4章 Red Hat Ceph Storage ストレッチクラスターの設定

download PDF

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 がアービターノード、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

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

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.