SephバケットをCeph Luminousの別のプールに広げます

Ceph Luminousで新しいクラスターをセットアップするプロセスで、異なるストレージデバイス(私の場合はSSDとHDD)に異なるS3バケットを配布するタスクがありました。 Ceph Jewelでこれを行う方法はインターネット上で多くの指示がありますが、Luminousの場合、プロセスは大きな変更を受け、古い指示は機能しなくなりました。 ただし、オフのドキュメントでは、このシナリオは説明されていません。構成プロセスはそれほど簡単ではありません。



挑戦する



もう一度タスクを説明します。クラスターの各ノードに一定数のHDDとSSDをインストールします。 S3バケットを作成するとき、どのデバイスに保存するか(HDDまたはSSD)を示すことができる必要があります。



プールを異なるデバイスに配布します



現在の複製ルールを見てみましょう。 デフォルトでは、「replicated_rule」エントリのみが存在する必要があります。



ceph osd crush rule ls
      
      





Luminous Cephの革新により、デバイス自体のタイプを判別でき、さまざまな複製ルールに従って簡単に分離できます。



 ceph osd crush rule create-replicated replicated_hdd default host hdd ceph osd crush rule create-replicated replicated_ssd default host ssd
      
      





古いデフォルトルールを削除します。



 ceph osd crush rule rm replicated_rule
      
      





次に、S3オブジェクトを格納する新しい追加のプールを作成し、SSDに配置します。



 ceph osd pool create default.rgw.buckets.data.ssd 8 8 replicated replicated_ssd
      
      





そして、デフォルトのデータプールはHDDに配置されます。



 ceph osd pool set default.rgw.buckets.data crush_rule replicated_hdd
      
      





当然、反対のことができ、SSDにデフォルトを置くことができます。



Rados Gatewayを構成する



記事が書かれた最も興味深い部分。



新規インストールでは、クラスターはデフォルトのレルムを使用しません。 これがなぜ行われるのかはあまり明確ではありません。 レルム「デフォルト」を作成し、デフォルトとして設定します。



 radosgw-admin realm create --rgw-realm=default --default
      
      





ゾーングループのデフォルトでSSDバケットの配置を追加します。



 radosgw-admin zonegroup placement add --rgw-zonegroup=default --placement-id="ssd-placement"
      
      





さらに、デフォルトゾーンに追加の配置を追加します。



 radosgw-admin zone placement add --rgw-zone=default --placement-id="ssd-placement" --data-pool="default.rgw.buckets.data.ssd" --index-pool="default.rgw.buckets.index"
      
      





1つのプール「default.rgw.buckets.index」を使用してすべてのオブジェクト(HDDとSSDの両方)のインデックスを保存しますが、インデックス用に別のプールを作成できます。



ゾーングループ「デフォルト」をレルム「デフォルト」にバインドし、変更をコミットします。



 radosgw-admin zonegroup modify --rgw-zonegroup=default --rgw-realm=default radosgw-admin period update --commit
      
      





最後の手順は、Rados Gatewayを再起動することです。



これで、SSDに新しいバケットを作成できます(コロンに注意してください。コロンがないと機能しませんでした)。

 s3cmd mb s3://test --bucket-location=:ssd-placement
      
      







または、デフォルトの配置でバケットを作成します(この場合、HDDに):

 s3cmd mb s3://test
      
      







私の小さなメモが、同様の問題を解決する間に誰かの時間を節約することを願っています。



All Articles