5.4. プールで 3 つのアベイラビリティーゾーンを有効にする
この情報を使用して、一般的なストレッチクラスター設定内で 3 つのアベイラビリティーゾーンを有効にして統合します。
前提条件
始める前に、次の前提条件が満たされていることを確認してください。* ノードへの root レベルのアクセス。* CRUSH ロケーションがはホストに設定されている。
手順
最新の CRUSH マップを取得し、マップをテキストファイルに逆コンパイルします。
構文
ceph osd getcrushmap > COMPILED_CRUSHMAP_FILENAME crushtool -d COMPILED_CRUSHMAP_FILENAME -o DECOMPILED_CRUSHMAP_FILENAME例
[ceph: root@host01 /]# ceph osd getcrushmap > crush.map.bin [ceph: root@host01 /]# crushtool -d crush.map.bin -o crush.map.txt新しい CRUSH ルールを、以前の CRUSH マップファイルの逆コンパイルされた CRUSH マップファイルに追加します。この例では、ルール名は
3az_ruleです。構文
rule 3az_rule { id 1 type replicated step take default step choose firstn 3 type datacenter step chooseleaf firstn 2 type host step emit }このルールにより、配置グループは 3 つのデータセンターのそれぞれに 2 つのコピーでレプリケートされます。
CRUSH マップを注入して、クラスターでルールを使用できるようにします。
構文
crushtool -c DECOMPILED_CRUSHMAP_FILENAME -o COMPILED_CRUSHMAP_FILENAME ceph osd setcrushmap -i COMPILED_CRUSHMAP_FILENAME例
[ceph: root@host01 /]# crushtool -c crush.map.txt -o crush2.map.bin [ceph: root@host01 /]# ceph osd setcrushmap -i crush2.map.bin次の手順を使用して、ルールが正常に注入されたことを確認できます。
クラスター上のルールをリスト表示します。
構文
ceph osd crush rule ls例
[ceph: root@host01 /]# ceph osd crush rule ls replicated_rule ec86_pool 3az_rule
CRUSH ルールをダンプします。
構文
ceph osd crush rule dump CRUSH_RULE例
[ceph: root@host01 /]# ceph osd crush rule dump 3az_rule { "rule_id": 1, "rule_name": "3az_rule", "type": 1, "steps": [ { "op": "take", "item": -1, "item_name": "default" }, { "op": "choose_firstn", "num": 3, "type": "datacenter" }, { "op": "chooseleaf_firstn", "num": 2, "type": "host" }, { "op": "emit" } ] }MON 選択ストラテジーを接続性に設定します。
構文
ceph mon set election_strategy connectivity更新が正常に行われると、election_strategy は
3に更新されます。デフォルトの election_strategy は1です。オプション: 前の手順で設定した選択ストラテジーを確認します。
構文
ceph mon dumpすべての mon デーモンが出力に含まれており、正しい CRUSH ロケーションが追加されていることを確認します。
例
[ceph: root@host01 /]# ceph mon dump epoch 19 fsid b556497a-693a-11ef-b9d1-fa163e841fd7 last_changed 2024-09-03T12:47:08.419495+0000 created 2024-09-02T14:50:51.490781+0000 min_mon_release 19 (squid) election_strategy: 3 0: [v2:10.0.67.43:3300/0,v1:10.0.67.43:6789/0] mon.host01-installer; crush_location {datacenter=DC1} 1: [v2:10.0.67.20:3300/0,v1:10.0.67.20:6789/0] mon.host02; crush_location {datacenter=DC1} 2: [v2:10.0.64.242:3300/0,v1:10.0.64.242:6789/0] mon.host03; crush_location {datacenter=DC1} 3: [v2:10.0.66.17:3300/0,v1:10.0.66.17:6789/0] mon.host06; crush_location {datacenter=DC2} 4: [v2:10.0.66.228:3300/0,v1:10.0.66.228:6789/0] mon.host09; crush_location {datacenter=DC3} 5: [v2:10.0.65.125:3300/0,v1:10.0.65.125:6789/0] mon.host05; crush_location {datacenter=DC2} 6: [v2:10.0.66.252:3300/0,v1:10.0.66.252:6789/0] mon.host07; crush_location {datacenter=DC3} 7: [v2:10.0.64.145:3300/0,v1:10.0.64.145:6789/0] mon.host08; crush_location {datacenter=DC3} 8: [v2:10.0.64.125:3300/0,v1:10.0.64.125:6789/0] mon.host04; crush_location {datacenter=DC2} dumped monmap epoch 19プールを 3 つのアベイラビリティーゾーンストレッチクラスターに関連付けるように設定します。使用可能なプール値の詳細は、Red Hat Ceph Storage ストレージストラテジーガイドの プール値 を参照してください。
構文
ceph osd pool stretch set _POOL_NAME_ _PEERING_CRUSH_BUCKET_COUNT_ _PEERING_CRUSH_BUCKET_TARGET_ _PEERING_CRUSH_BUCKET_BARRIER_ _CRUSH_RULE_ _SIZE_ _MIN_SIZE_ [--yes-i-really-mean-it]変数を次のように置き換えます。
- POOL_NAME
- プールの名前。既存のプールである必要があります。このコマンドは新しいプールを作成しません。
- PEERING_CRUSH_BUCKET_COUNT
- この値は、peering_crush_bucket_barrier と合わせて使用され、選択したアクティングセットの OSD が相互にピアリングできるかどうかを判断します。これは、アクティングセット内の個別のバケット数をもとにします。
- PEERING_CRUSH_BUCKET_TARGET
- この値は、peering_crush_bucket_barrier および size とともに使用され、value bucket_max の値を算出します。この値により、同じバケット内の OSD の数を制限して、PG のアクティングセットに選ばれないようにします。
- PEERING_CRUSH_BUCKET_BARRIER
- プールを分散するバケットの種類。たとえば、ラック、行、データセンターなどです。
- CRUSH_RULE
- ストレッチプールに使用するクラッシュルール。プールのタイプは、crush_rule のタイプ (レプリケートまたはイレイジャー) と一致する必要があります。
- SIZE
- ストレッチプール内のオブジェクトのレプリカの数。
- MIN_SIZE
ストレッチプール内の I/O に必要なレプリカの最小数。
重要PEERING_CRUSH_BUCKET_COUNT と PEERING_CRUSH_BUCKET_TARGET を CRUSH マップ内のバケット数より大きく設定する場合は、`--yes-i-really-mean-it フラグが必要です。オプションのフラグを使用して、安全性チェックをバイパスし、ストレッチプールの値を設定することを確認します。
例
[ceph: root@host01 /]# ceph osd pool stretch set pool01 2 3 datacenter 3az_rule 6 3注記プールを非ストレッチクラスターに戻すには、
ceph osd pool stretch unset POOL_NAMEコマンドを使用します。このコマンドを使用しても、crush_rule、size、およびmin_sizeの値は設定解除されません。必要に応じて、これらを手動でリセットする必要があります。プールのストレッチ値が正しく設定されたことを示す成功メッセージが表示されます。
オプション:
ceph osd pool stretch showコマンドを使用して、ストレッチクラスターに関連付けられているプールを確認します。例
[ceph: root@host01 /]# ceph osd pool stretch show pool01 pool: pool01 pool_id: 1 is_stretch_pool: 1 peering_crush_bucket_count: 2 peering_crush_bucket_target: 3 peering_crush_bucket_barrier: 8 crush_rule: 3az_rule size: 6 min_size: 3