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
ゾーングループのデフォルトで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
私の小さなメモが、同様の問題を解決する間に誰かの時間を節約することを願っています。