3.5. Red Hat Ceph Storage のデプロイ
3.5.1. ノードのデプロイ前の手順 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ceph Storage Ceph クラスターをインストールする前に、必要なすべての要件を満たすために、以下の手順を実施します。
全ノードを Red Hat Network または Red Hat Satellite に登録し、有効なプールにサブスクライブします。
subscription-manager register subscription-manager subscribe --pool=8a8XXXXXX9e0
subscription-manager register subscription-manager subscribe --pool=8a8XXXXXX9e0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のリポジトリーの Ceph クラスター内のすべてのノードへのアクセスを有効にします。
-
rhel9-for-x86_64-baseos-rpms
rhel9-for-x86_64-appstream-rpms
subscription-manager repos --disable="*" --enable="rhel9-for-x86_64-baseos-rpms" --enable="rhel9-for-x86_64-appstream-rpms"
subscription-manager repos --disable="*" --enable="rhel9-for-x86_64-baseos-rpms" --enable="rhel9-for-x86_64-appstream-rpms"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
オペレーティングシステムの RPM を最新バージョンに更新し、必要に応じて再起動します。
dnf update -y reboot
dnf update -y reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターからノードを選択して、ブートストラップノードにします。
ceph1
は、この例の今後のブートストラップノードです。ブートストラップノード
ceph1
でのみ、ansible-2.9-for-rhel-9-x86_64-rpms
およびrhceph-6-tools-for-rhel-9-x86_64-rpms
リポジトリーを有効にします。subscription-manager repos --enable="ansible-2.9-for-rhel-9-x86_64-rpms" --enable="rhceph-6-tools-for-rhel-9-x86_64-rpms"
subscription-manager repos --enable="ansible-2.9-for-rhel-9-x86_64-rpms" --enable="rhceph-6-tools-for-rhel-9-x86_64-rpms"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのホストでベア/短縮ホスト名を使用して
hostname
を設定します。hostnamectl set-hostname <short_name>
hostnamectl set-hostname <short_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Ceph Storage を使用して Red Hat Ceph Storage をデプロイするためのホスト名設定を確認します。
hostname
$ hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
ceph1
ceph1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/hosts ファイルを変更し、DNS ドメイン名を使用して DOMAIN 変数を設定して、fqdn エントリーを 127.0.0.1IP に追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hostname -f
オプションを使用して、fqdn
の長いホスト名を確認します。hostname -f
$ hostname -f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
ceph1.example.domain.com
ceph1.example.domain.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記これらの変更が必要な理由の詳細は、完全修飾ドメイン名とベアホスト名 を参照してください。
ブートストラップノードで次の手順を実行します。この例では、ブートストラップノードは
ceph1
です。cephadm-ansible
RPM パッケージをインストールします。sudo dnf install -y cephadm-ansible
$ sudo dnf install -y cephadm-ansible
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Ansible Playbook を実行するには、Red Hat Ceph Storage クラスターに設定されているすべてのノードに
ssh
パスワードなしでアクセスできる必要があります。設定されたユーザー (たとえば、deployment-user
) が、パスワードを必要とせずにsudo
コマンドを呼び出すための root 権限を持っていることを確認してください。カスタムキーを使用するには、選択したユーザー (たとえば、
deployment-user
) の ssh 設定ファイルを設定して、ssh 経由でノードに接続するために使用される ID/キーを指定します。cat <<EOF > ~/.ssh/config Host ceph* User deployment-user IdentityFile ~/.ssh/ceph.pem EOF
cat <<EOF > ~/.ssh/config Host ceph* User deployment-user IdentityFile ~/.ssh/ceph.pem EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible インベントリーを構築します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ここでは、2 つの異なるデータセンターに属するホスト (
Ceph1
およびCeph4
) が、インベントリーファイルの [admin] グループの一部として設定され、cephadm
によって_admin
としてタグ付けされています。これらの各管理ノードは、ブートストラッププロセス中に admin ceph キーリングを受信するため、1 つのデータセンターがダウンしたときに、他の使用可能な管理ノードを使用して確認できます。プリフライト Playbook を実行する前に、
ansible
が ping モジュールを使用してすべてのノードにアクセスできることを確認します。ansible -i /usr/share/cephadm-ansible/inventory -m ping all -b
$ ansible -i /usr/share/cephadm-ansible/inventory -m ping all -b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
/usr/share/cephadm-ansible
ディレクトリーに移動します。 ansible-playbook を、相対ファイルパスを指定して実行します。
ansible-playbook -i /usr/share/cephadm-ansible/inventory /usr/share/cephadm-ansible/cephadm-preflight.yml --extra-vars "ceph_origin=rhcs"
$ ansible-playbook -i /usr/share/cephadm-ansible/inventory /usr/share/cephadm-ansible/cephadm-preflight.yml --extra-vars "ceph_origin=rhcs"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プリフライト Playbook は RHCS
dnf
リポジトリーを設定し、ブートストラップ用にストレージクラスターを準備します。また、podman、lvm2、chronyd、および cephadm もインストールします。cephadm-ansible
およびcephadm-
preflight.yml のデフォルトの場所は/usr/share/cephadm-ansible
です。詳細は、プリフライト Playbook の実行 を参照してください。
3.5.2. Cephadm ユーティリティーを使用したクラスターのブートストラップとサービスのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
cephadm ユーティリティーは、cephadm ブートストラップコマンドが実行されているローカルノード上に、新しい Red Hat Ceph Storage クラスターの単一の Ceph Monitor デーモンと Ceph Manager デーモンをインストールし、開始します。
このガイドでは、クラスター仕様の yaml ファイルを使用して、クラスターをブートストラップし、必要なすべての Red Hat Ceph Storage サービスをワンステップでデプロイします。
展開中に問題が見つかった場合は、展開を 2 つの手順に分割することで、エラーのトラブルシューティングが容易になる場合があります。
- ブートストラップ
- サービスの展開
ブートストラッププロセスの詳細は、新規ストレージクラスターのブートストラップ を参照してください。
手順
次のように、json ファイルを使用してコンテナーレジストリーに対して認証を行うための json ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Ceph Storage クラスターにノードを追加する
cluster-spec.yaml
を作成し、表 3.1 に従ってサービスを実行する場所に特定のラベルを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブートストラップノードから設定された Red Hat Ceph Storage パブリックネットワークで NIC の IP を取得します。
10.0.40.0
を ceph パブリックネットワークで定義したサブネットに置き換えた後、次のコマンドを実行します。ip a | grep 10.0.40
$ ip a | grep 10.0.40
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
10.0.40.78
10.0.40.78
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター内の最初の Monitor ノードとなるノードで、root ユーザーとして
cephadm
bootstrap コマンドを実行します。IP_ADDRESS
オプションは、cephadm bootstrap
コマンドの実行に使用しているノードの IP アドレスです。注記パスワードなしの SSH アクセス用に
root
ではなく別のユーザーを設定した場合は、cepadm bootstrap
コマンドで--ssh-user=
フラグを使用します。default/id_rsa ssh キー名以外を使用している場合は、
cephadm
コマンドで--ssh-private-key
および--ssh-public-key
オプションを使用します。cephadm bootstrap --ssh-user=deployment-user --mon-ip 10.0.40.78 --apply-spec /root/cluster-spec.yaml --registry-json /root/registry.json
$ cephadm bootstrap --ssh-user=deployment-user --mon-ip 10.0.40.78 --apply-spec /root/cluster-spec.yaml --registry-json /root/registry.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ローカルノードが完全修飾ドメイン名 (FQDN) を使用する場合は、コマンドラインで
--allow-fqdn-hostname
オプションをcephadm bootstrap
に追加します。ブートストラップが終了すると、前の cephadm bootstrap コマンドから次の出力が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph1 の Ceph CLI クライアントを使用して、Red Hat Ceph Storage クラスターデプロイメントのステータスを確認します。
ceph -s
$ ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記すべてのサービスが開始されるまでに数分かかる場合があります。
OSD が設定されていないときに、グローバルリカバリーイベントが発生するのは正常です。
ceph orch ps
およびceph orch ls
を使用して、サービスのステータスをさらに確認できます。すべてのノードが
cephadm
クラスターの一部であるかどうかを確認します。ceph orch host ls
$ ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ceph1
は [admin] グループの一部としてcephadm-ansible
インベントリーで設定されているため、ホストから Ceph コマンドを直接実行できます。Ceph 管理キーは、cephadm bootstrap
プロセス中にホストにコピーされました。データセンターでの Ceph モニターサービスの現在の配置を確認します。
ceph orch ps | grep mon | awk '{print $1 " " $2}'
$ ceph orch ps | grep mon | awk '{print $1 " " $2}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
mon.ceph1 ceph1 mon.ceph2 ceph2 mon.ceph4 ceph4 mon.ceph5 ceph5 mon.ceph7 ceph7
mon.ceph1 ceph1 mon.ceph2 ceph2 mon.ceph4 ceph4 mon.ceph5 ceph5 mon.ceph7 ceph7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データセンターでの Ceph 管理サービスの現在の配置を確認します。
ceph orch ps | grep mgr | awk '{print $1 " " $2}'
$ ceph orch ps | grep mgr | awk '{print $1 " " $2}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
mgr.ceph2.ycgwyz ceph2 mgr.ceph5.kremtt ceph5
mgr.ceph2.ycgwyz ceph2 mgr.ceph5.kremtt ceph5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph osd クラッシュマップレイアウトをチェックして、各ホストに 1 つの OSD が設定され、そのステータスが
UP
であることを確認します。また、表 3.1 で指定されているように、各ノードが適切なデータセンターバケットの下にあることを再確認してください。ceph osd tree
$ ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい RDB ブロックプールを作成して有効にします。
ceph osd pool create 32 32 ceph osd pool application enable rbdpool rbd
$ ceph osd pool create 32 32 $ ceph osd pool application enable rbdpool rbd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記コマンドの最後にある 32 という数字は、このプールに割り当てられている PG の数です。PG の数は、クラスター内の OSD の数、プールの予想使用率など、いくつかの要因によって異なります。次の計算機を使用して、必要な PG の数を決定できます。プール計算機ごとの Ceph 配置グループ (PG)。
RBD プールが作成されたことを確認します。
ceph osd lspools | grep rbdpool
$ ceph osd lspools | grep rbdpool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
3 rbdpool
3 rbdpool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MDS サービスがアクティブであり、各データセンターに 1 つのサービスが配置されていることを確認します。
ceph orch ps | grep mds
$ ceph orch ps | grep mds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
mds.cephfs.ceph3.cjpbqo ceph3 running (17m) 117s ago 17m 16.1M - 16.2.9 mds.cephfs.ceph6.lqmgqt ceph6 running (17m) 117s ago 17m 16.1M - 16.2.9
mds.cephfs.ceph3.cjpbqo ceph3 running (17m) 117s ago 17m 16.1M - 16.2.9 mds.cephfs.ceph6.lqmgqt ceph6 running (17m) 117s ago 17m 16.1M - 16.2.9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CephFS ボリュームを作成します。
ceph fs volume create cephfs
$ ceph fs volume create cephfs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ceph fs volume create
コマンドは、必要なデータとメタ CephFS プールも作成します。詳細は、Ceph ファイルシステムの設定とマウント を参照してください。Ceph
のステータスを確認して、MDS デーモンがどのようにデプロイされたかを確認します。状態がアクティブで、ceph6
がこのファイルシステムのプライマリー MDS で、ceph3
がセカンダリー MDS であることを確認します。ceph fs status
$ ceph fs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RGW サービスがアクティブであることを確認します。
ceph orch ps | grep rgw
$ ceph orch ps | grep rgw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rgw.objectgw.ceph3.kkmxgb ceph3 *:8080 running (7m) 3m ago 7m 52.7M - 16.2.9 rgw.objectgw.ceph6.xmnpah ceph6 *:8080 running (7m) 3m ago 7m 53.3M - 16.2.9
rgw.objectgw.ceph3.kkmxgb ceph3 *:8080 running (7m) 3m ago 7m 52.7M - 16.2.9 rgw.objectgw.ceph6.xmnpah ceph6 *:8080 running (7m) 3m ago 7m 53.3M - 16.2.9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.3. Red Hat Ceph Storage ストレッチモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
cephadm
を使用して Red Hat Ceph Storage クラスターが完全にデプロイされたら、次の手順でストレッチクラスターモードを設定します。新しいストレッチモードは、2 サイトのケースを処理するように設計されています。
手順
ceph mon dump コマンドを使用して、モニターが使用している現在の選挙戦略を確認します。ceph クラスターのデフォルトでは、接続はクラシックに設定されています。
ceph mon dump | grep election_strategy
ceph mon dump | grep election_strategy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
dumped monmap epoch 9 election_strategy: 1
dumped monmap epoch 9 election_strategy: 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow モニターの選択を接続に変更します。
ceph mon set election_strategy connectivity
ceph mon set election_strategy connectivity
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前の ceph mon dump コマンドを再度実行して、election_strategy 値を確認します。
ceph mon dump | grep election_strategy
$ ceph mon dump | grep election_strategy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
dumped monmap epoch 10 election_strategy: 3
dumped monmap epoch 10 election_strategy: 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow さまざまな選択戦略の詳細は、モニター選出ストラテジーの設定 を参照してください。
すべての 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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各モニターに適切な場所があることを確認します。
ceph mon dump
$ ceph mon dump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow crushtool
コマンドを使用するためにceph-base
RPM パッケージをインストールして、この OSD クラッシュトポロジーを利用する CRUSH ルールを作成します。dnf -y install ceph-base
$ dnf -y install ceph-base
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CRUSH ルールセットの詳細は、Ceph CRUSH ルールセット を参照してください。
コンパイルされた CRUSH マップをクラスターから取得します。
ceph osd getcrushmap > /etc/ceph/crushmap.bin
$ ceph osd getcrushmap > /etc/ceph/crushmap.bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CRUSH マップを逆コンパイルし、これをテキストファイルに変換して編集できるようにします。
crushtool -d /etc/ceph/crushmap.bin -o /etc/ceph/crushmap.txt
$ crushtool -d /etc/ceph/crushmap.bin -o /etc/ceph/crushmap.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルの末尾にあるテキストファイル
/etc/ceph/crushmap.txt
を編集して、以下のルールを CRUSH マップに追加します。vim /etc/ceph/crushmap.txt
$ vim /etc/ceph/crushmap.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例は、両方の OpenShift Container Platform クラスターのアクティブなアプリケーションに適用されます。
注記ルール
id
は一意である必要があります。この例では、id 0 のクラッシュルールがもう 1 つしかないため、id 1 を使用しています。デプロイメントにさらにルールが作成されている場合は、次の空き ID を使用します。宣言された CRUSH ルールには、次の情報が含まれています。
ルール名
- 説明: ルールを識別する一意の完全な名前。
-
値:
stretch_rule
id
- 説明: ルールを識別する一意の整数。
-
値:
1
type
- 説明: レプリケートまたはイレイジャーコーディングされたストレージドライブのルールを説明しています。
-
値:
replicated
min_size
- 説明: プールがこの数よりも小さいレプリカを使用する場合、CRUSH はこのルールを選択しません。
- 値: 1
max_size
- 説明: プールがこの数よりも大きいレプリカを使用する場合、CRUSH はこのルールを選択しません。
- 値: 10
step take default
-
説明:
default
という名のルートバケットを取得し、ツリーの下方への反復を開始します。
-
説明:
step choose firstn 0 type datacenter
- 説明: データセンターのバケットを選択し、そのサブツリーに入ります。
step chooseleaf firstn 2 type host
- 説明: 指定されたタイプのバケットの数を選択します。この場合、前のレベルで入力したデータセンターにある 2 つの異なるホストです。
step emit
- 説明: 現在の値を出力し、スタックを除算します。通常、ルールの最後に使用されますが、同じルール内の異なるツリーを選択する際に使用することもできます。
ファイル
/etc/ceph/crushmap.txt
から新しい CRUSH マップをコンパイルし、これを/etc/ceph/crushmap2.bin
というバイナリーファイルに変換します。crushtool -c /etc/ceph/crushmap.txt -o /etc/ceph/crushmap2.bin
$ crushtool -c /etc/ceph/crushmap.txt -o /etc/ceph/crushmap2.bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成した新しいクラッシュマップをクラスターに注入します。
ceph osd setcrushmap -i /etc/ceph/crushmap2.bin
$ ceph osd setcrushmap -i /etc/ceph/crushmap2.bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
17
17
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記数字の 17 はカウンターであり、クラッシュマップに加えた変更に応じて増加します (18、19 など)。
作成したストレッチルールが使用可能になったことを確認します。
ceph osd crush rule ls
ceph osd crush rule ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
replicated_rule stretch_rule
replicated_rule stretch_rule
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレッチクラスターモードを有効にします。
ceph mon enable_stretch_mode ceph7 stretch_rule datacenter
$ ceph mon enable_stretch_mode ceph7 stretch_rule datacenter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
ceph7
が arbiter ノード、stretch_rule
が前の手順で作成したクラッシュルール、datacenter
が分割バケットです。すべてのプールが、Ceph クラスターに作成した
stretch_rule
CRUSH ルールを使用していることを確認します。for pool in $(rados lspools);do echo -n "Pool: ${pool}; ";ceph osd pool get ${pool} crush_rule;done
$ for pool in $(rados lspools);do echo -n "Pool: ${pool}; ";ceph osd pool get ${pool} crush_rule;done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、arbiter モードで稼働中の Red Hat Ceph Storage ストレッチクラスターが利用可能になったことを示しています。