オーバークラウドの既存 Red Hat Ceph クラスターとの統合
オーバークラウドでスタンドアロンの Red Hat Ceph Storage を使用するための設定
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 はじめに リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) director は、オーバークラウド と呼ばれるクラウド環境を作成します。director を使用して、オーバークラウドの追加機能を設定することができます。これらの追加機能の 1 つに、Red Hat Ceph Storage との統合が挙げられます。これには、director で作成した Ceph Storage クラスターおよび既存の Ceph Storage クラスターの両方が含まれます。
1.1. Ceph Storage の定義 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ceph Storage は、優れたパフォーマンス、信頼性、スケーリングを提供するように設計された、分散型のデータオブジェクトストアです。非構造化データに対応しており、クライアントが新しいタイプのオブジェクトインターフェイスと従来のインターフェイスを同時に使用できる分散型のオブジェクトストアは、今後のストレージのあるべき姿です。すべての Ceph デプロイメントの中核となる Ceph Storage クラスターは、2 種類のデーモンで設定されます。
- Ceph Object Storage デーモン
- Ceph Object Storage デーモン (OSD) は、Ceph クライアントの代わりにデータを格納します。また、Ceph OSD は Ceph ノードの CPU とメモリーを使用して、データの複製、リバランス、復旧、監視、レポート作成を実行します。
- Ceph Monitor
- Ceph モニター (MON) は、ストレージクラスターの現在の状態が含まれる Ceph Storage クラスターのマッピングのマスターコピーを管理します。
Red Hat Ceph Storage に関する詳細は、Red Hat Ceph Storage Architecture Guide を参照してください。
本ガイドでは、Block Storage を使用した Ceph の設定方法について説明します。
Ceph Object Gateway (RGW) に関する注記: この機能は、本リリースでは テクノロジープレビュー として提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト用途にのみご利用いただく機能で、実稼働環境にデプロイすべきではありません。テクノロジープレビュー機能についての詳しい情報は、対象範囲の詳細 を参照してください。
Ceph File System (CephFS) には対応していません。
1.2. シナリオの定義 リンクのコピーリンクがクリップボードにコピーされました!
本ガイドでは、既存の Ceph Storage クラスターをオーバークラウドと統合する手順について説明します。この場合、director はストレージ用途に Ceph Storage クラスターを使用するようにオーバークラウドを設定します。クラスターそのものは、オーバークラウド設定とは独立して管理およびスケーリングします。
第2章 オーバークラウドノードの準備 リンクのコピーリンクがクリップボードにコピーされました!
本章のシナリオでは、オーバークラウドは 6 台のノードで設定されます。
- 高可用性のコントローラーノード 3 台
- コンピュートノード 3 台
director は、独自のノードで設定される独立した Ceph Storage クラスターをオーバークラウドに統合します。このクラスターは、オーバークラウドとは別々に管理されます。たとえば、Ceph Storage クラスターは、OpenStack Platform director ではなく Ceph 管理ツールを使用してスケーリングします。詳しくは、Red Hat Ceph Storage のドキュメントを参照してください。
2.1. Ceph Storage のデプロイメント前の検証 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドのデプロイメントが失敗しないようにするには、必要なパッケージがサーバーに存在することを確認します。
2.1.1. ceph-ansible パッケージバージョンの確認 リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドには Ansible ベースの検証が含まれ、これを実行してオーバークラウドをデプロイする前に潜在的な問題を特定することができます。これらの検証は、典型的な問題が発生する前にそれらを特定し、オーバークラウドのデプロイメントの失敗を回避するのに役立ちます。
手順
ceph-ansible パッケージの修正バージョンがインストールされていることを確認してください。
ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/openstack-tripleo-validations/validations/ceph-ansible-installed.yaml
$ ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/openstack-tripleo-validations/validations/ceph-ansible-installed.yaml
2.1.2. 事前にプロビジョニングされたノード用のパッケージの確認 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドのデプロイメントで事前にプロビジョニングされたノードを使用する場合には、Ceph サービスをホストするオーバークラウドノードに必要なパッケージがサーバーにあることを確認することができます。
事前にプロビジョニングされたノードの詳細は、事前にプロビジョニングされたノードを使用した基本的なオーバークラウドの設定 を参照してください。
手順
サーバーに必要なパッケージが含まれていることを確認します。
ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/openstack-tripleo-validations/validations/ceph-dependencies-installed.yaml
ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/openstack-tripleo-validations/validations/ceph-dependencies-installed.yaml
2.2. 既存の Ceph Storage クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
お使いの環境に適した Ceph クラスターに以下のプールを作成します。
-
volumes: OpenStack Block Storage (cinder) のストレージ -
images: OpenStack Image Storage (glance) のストレージ -
vms: インスタンスのストレージ -
backups: OpenStack Block Storage Backup (cinder-backup) のストレージ metrics: OpenStack Telemetry Metrics (gnocchi) のストレージ以下のコマンドは指針として使用してください。
ceph osd pool create volumes PGNUM ceph osd pool create images PGNUM ceph osd pool create vms PGNUM ceph osd pool create backups PGNUM ceph osd pool create metrics PGNUM
[root@ceph ~]# ceph osd pool create volumes PGNUM [root@ceph ~]# ceph osd pool create images PGNUM [root@ceph ~]# ceph osd pool create vms PGNUM [root@ceph ~]# ceph osd pool create backups PGNUM [root@ceph ~]# ceph osd pool create metrics PGNUMCopy to Clipboard Copied! Toggle word wrap Toggle overflow PGNUM は 配置グループ の数に置き換えます。1 OSD につき 100 程度を推奨します。たとえば、OSD の合計数を 100 で乗算して、レプリカ数で除算します (
osd pool default size)。適切な値を判断するには Ceph Placement Groups (PGs) per Pool Calculator を使用することを推奨します。
-
以下の機能を指定して
client.openstackユーザーを Ceph クラスターに作成します。- cap_mgr: “allow *"
- cap_mon: profile rbd
cap_osd: profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups, profile rbd pool=metrics
以下のコマンドは指針として使用してください。
ceph auth add client.openstack mgr 'allow *' mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups, profile rbd pool=metrics'
[root@ceph ~]# ceph auth add client.openstack mgr 'allow *' mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups, profile rbd pool=metrics'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
client.openstackユーザー向けに作成された Ceph クライアントキーをメモします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例の
key値 (AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw==) は Ceph クライアントキーです。Ceph Storage クラスターの ファイルシステム ID をメモします。この値は、クラスターの設定ファイルにある
fsidの設定で指定されています ([global]のセクション下)。[global] fsid = 4b5c8c0a-ff60-454b-a1b4-9747aa737d19 ...
[global] fsid = 4b5c8c0a-ff60-454b-a1b4-9747aa737d19 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Ceph Storage クラスターの設定ファイルに関する詳しい情報は、Red Hat Ceph Storage Configuration Guide の Configuration Reference を参照してください。
Ceph クライアントキーおよびファイルシステム ID はいずれも、後ほど3章既存 Ceph クラスターとの統合で使用します。
2.3. stack ユーザーの初期化 リンクのコピーリンクがクリップボードにコピーされました!
stack ユーザーとして director ホストにログインし、以下のコマンドを実行して director の設定を初期化します。
source ~/stackrc
$ source ~/stackrc
このコマンドでは、director の CLI ツールにアクセスする認証情報が含まれる環境変数を設定します。
2.4. ノードの登録 リンクのコピーリンクがクリップボードにコピーされました!
ノード定義のテンプレート (instackenv.json) は JSON ファイル形式で、ノード登録用のハードウェアおよび電源管理の情報が含まれています。以下に例を示します。
テンプレートを作成したら、stack ユーザーのホームディレクトリーにファイルを保存します (/home/stack/instackenv.json)。stack ユーザーを初期化し、続いて instackenv.json を director にインポートします。
source ~/stackrc openstack overcloud node import ~/instackenv.json
$ source ~/stackrc
$ openstack overcloud node import ~/instackenv.json
このコマンドでテンプレートをインポートして、テンプレートから director に各ノードを登録します。
カーネルと ramdisk イメージを各ノードに割り当てます。
openstack overcloud node configure <node>
$ openstack overcloud node configure <node>
director でのノードの登録、設定が完了しました。
2.5. ノードの手動でのタグ付け リンクのコピーリンクがクリップボードにコピーされました!
各ノードを登録した後には、ハードウェアを検査して、ノードを特定のプロファイルにタグ付けする必要があります。プロファイルタグにより、ノードがフレーバーに照合され、そのフレーバーはデプロイメントロールに割り当てられます。
新規ノードを検査してタグ付けするには、以下のステップに従います。
ハードウェアのイントロスペクションをトリガーして、各ノードのハードウェア属性を取得します。
openstack overcloud node introspect --all-manageable --provide
$ openstack overcloud node introspect --all-manageable --provideCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
--all-manageableオプションは、管理状態のノードのみをイントロスペクションします。上記の例では、すべてのノードが対象です。 --provideオプションは、イントロスペクション後に全ノードをactiveの状態にリセットします。重要このプロセスが最後まで実行されて正常に終了したことを確認してください。ベアメタルノードの場合には、通常 15 分ほどかかります。
-
ノード一覧を取得して UUID を把握します。
openstack baremetal node list
$ openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 各ノードの
properties/capabilitiesパラメーターに profile オプションを追加して、ノードを特定のプロファイルに手動でタグ付けします。たとえば、3 つのノードが
controlプロファイルを使用し、別の 3 つのノードがcomputeプロファイルを使用するようにタグ付けするには、以下のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
profile オプションを追加すると、適切なプロファイルにノードをタグ付けします。
手動でのタグ付けの代わりに、Automated Health Check (AHC) ツールを使用し、ベンチマークデータに基づいて、多数のノードに自動でタグ付けします。
第3章 既存 Ceph クラスターとの統合 リンクのコピーリンクがクリップボードにコピーされました!
director の提供する heat テンプレートコレクションには、オーバークラウドをデプロイするのに必要なテンプレートおよび環境ファイルがすでに含まれます。
デプロイメント時 (「オーバークラウドのデプロイ」) にこの環境ファイルを呼び出し、デプロイ中のオーバークラウドに既存の Ceph クラスターを統合します。
-
/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml
手順
director は
ceph-ansibleを使用して既存 Ceph クラスターとの統合を行いますが、デフォルトではceph-ansibleはアンダークラウドにインストールされません。以下のコマンドを入力して、アンダークラウドに ceph-ansible パッケージをインストールしてください。sudo yum install -y ceph-ansible
sudo yum install -y ceph-ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
統合を設定するには、Ceph クラスターの詳細を director に提供する必要があります。カスタム環境ファイルを使用して、
/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yamlで使用されるデフォルト設定をオーバーライドします。 以下のカスタム環境ファイルを作成します。
/home/stack/templates/ceph-config.yamlこのファイルに
parameter_defaults:ヘッダーを追加します。parameter_defaults:
parameter_defaults:Copy to Clipboard Copied! Toggle word wrap Toggle overflow このヘッダーの下に、
/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yamlを上書きするすべてのパラメーターを設定します。少なくとも、以下のパラメーターを設定する必要があります。-
CephClientKey: Ceph Storage クラスターの Ceph クライアントキー。これは、先ほど 「既存の Ceph Storage クラスターの設定」 で取得したkeyの値です。たとえば、AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ==です。 -
CephClusterFSID: Ceph Storage クラスターのファイルシステム ID。これは、先ほど 「既存の Ceph Storage クラスターの設定」 で取得した Ceph Storage クラスター設定ファイルのfsidの値ですたとえば、4b5c8c0a-ff60-454b-a1b4-9747aa737d19です。 CephExternalMonHost: Ceph Storage クラスターの全 MON ホストの IP をコンマ区切りにしたリスト (例:172.16.1.7, 172.16.1.8)。parameter_defaults: CephClientKey: AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ== CephClusterFSID: 4b5c8c0a-ff60-454b-a1b4-9747aa737d19 CephExternalMonHost: 172.16.1.7, 172.16.1.8
parameter_defaults: CephClientKey: AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ== CephClusterFSID: 4b5c8c0a-ff60-454b-a1b4-9747aa737d19 CephExternalMonHost: 172.16.1.7, 172.16.1.8Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
必要な場合は、以下のパラメーターと値を使用して、OpenStack プールとクライアントユーザーの名前を設定します。
-
CephClientUserName: openstack -
NovaRbdPoolName: vms -
CinderRbdPoolName: volumes -
GlanceRbdPoolName: images -
CinderBackupRbdPoolName: backups -
GnocchiRbdPoolName: metrics
-
カスタム環境ファイルにオーバークラウドパラメーターを追加することもできます。たとえば、
neutronのネットワーク種別をvxlanに設定するには、parameter_defaultsに以下の設定を追加します。NeutronNetworkType: vxlan
NeutronNetworkType: vxlanCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1. Assigning Nodes and Flavors to Roles リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドのデプロイメントのプランニングでは、各ロールに割り当てるノード数とフレーバーを指定する必要があります。すべての Heat テンプレートのパラメーターと同様に、これらのロールの仕様はカスタム環境ファイル (ここでは 3章既存 Ceph クラスターとの統合 の /home/stack/templates/ceph-config) の parameter_defaults セクションで宣言する必要があります。
この設定には、以下のパラメーターを使用します。
| Heat テンプレートのパラメーター | 説明 |
|---|---|
| ControllerCount | スケールアウトするコントローラーノード数 |
| OvercloudControlFlavor |
コントローラーノードに使用するフレーバー ( |
| ComputeCount | スケールアウトするコンピュートノード数 |
| OvercloudComputeFlavor |
コンピュートノードに使用するフレーバー ( |
たとえば、オーバークラウドが各ロール (Controller および Compute) に 3 つずつノードをデプロイするように設定するには、parameter_defaults に以下の設定を追加します。
parameter_defaults: ControllerCount: 3 ComputeCount: 3 OvercloudControlFlavor: control OvercloudComputeFlavor: compute
parameter_defaults:
ControllerCount: 3
ComputeCount: 3
OvercloudControlFlavor: control
OvercloudComputeFlavor: compute
Heat テンプレートのパラメーターのより詳細な一覧は、director のインストールと使用方法 の CLI ツールを使用したオーバークラウドの作成 を参照してください。
3.2. オーバークラウドのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドのインストール時に、undercloud.conf ファイルに generate_service_certificate=false を設定します。設定しない場合は、オーバークラウドのデプロイ時にトラストアンカーを挿入する必要があります。トラストアンカーの挿入方法についての詳細は、オーバークラウドの高度なカスタマイズ ガイドの オーバークラウドのパブリックエンドポイントでの SSL/TLS の有効化 を参照してください。
オーバークラウドの作成には、openstack overcloud deploy コマンドに追加の引数を指定する必要があります。以下に例を示します。
openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \ -e /home/stack/templates/ceph-config.yaml \ -e --ntp-server pool.ntp.org \
$ openstack overcloud deploy --templates \
-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \
-e /home/stack/templates/ceph-config.yaml \
-e --ntp-server pool.ntp.org \
上記のコマンドは、以下のオプションを使用します。
-
--templates: デフォルトの Heat テンプレートコレクション (/usr/share/openstack-tripleo-heat-templates/) からオーバークラウドを作成します。 -
-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml: 既存の Ceph クラスターをオーバークラウドに統合するように director を設定します。 -
-e /home/stack/templates/ceph-config.yaml:-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yamlの設定するデフォルトを上書きするためのカスタム環境ファイルを追加します。ここでは、3章既存 Ceph クラスターとの統合で作成したカスタム環境ファイルです。 -
--ntp-server pool.ntp.org: NTP サーバーを設定します。
アンサーファイル を使用して、すべてのテンプレートおよび環境ファイルを呼び出すこともできます。たとえば、以下のコマンドを使用して、同一のオーバークラウドをデプロイすることができます。
openstack overcloud deploy \ --answers-file /home/stack/templates/answers.yaml \ --ntp-server pool.ntp.org
$ openstack overcloud deploy \
--answers-file /home/stack/templates/answers.yaml \
--ntp-server pool.ntp.org
この場合、アンサーファイル /home/stack/templates/answers.yaml の内容は以下のようになります。
templates: /usr/share/openstack-tripleo-heat-templates/ environments: - /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \ - /home/stack/templates/ceph-config.yaml \
templates: /usr/share/openstack-tripleo-heat-templates/
environments:
- /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \
- /home/stack/templates/ceph-config.yaml \
詳細は、オーバークラウド作成時の環境ファイルの追加 を参照してください。
オプションの完全な一覧を表示するには、以下を実行します。
openstack help overcloud deploy
$ openstack help overcloud deploy
詳細は、director のインストールと使用方法の CLI ツールを使用したオーバークラウドの作成 を参照してください。
オーバークラウドの作成プロセスが開始され、director によりノードがプロビジョニングされます。このプロセスは完了するまで多少時間がかかります。オーバークラウドの作成のステータスを確認するには、stack ユーザーとして別のターミナルを開き、以下のコマンドを実行します。
source ~/stackrc openstack stack list --nested
$ source ~/stackrc
$ openstack stack list --nested
この設定では、オーバークラウドが外部の Ceph Storage クラスターを使用するように設定します。このクラスターは、オーバークラウドから独立して、管理される点に注意してください。たとえば、Ceph Storage クラスターは、OpenStack Platform director ではなく Ceph 管理ツールを使用してスケーリングします。
第4章 オーバークラウドへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
director は、director ホストからオーバークラウドに対話するための設定を行い、認証をサポートするスクリプトを作成します。director は、このファイル (overcloudrc) を stack ユーザーのホームディレクトリーに保存します。このファイルを使用するには、以下のコマンドを実行します。
source ~/overcloudrc
$ source ~/overcloudrc
これにより、director ホストの CLI からオーバークラウドと対話するために必要な環境変数が読み込まれます。director のホストとの対話に戻るには、以下のコマンドを実行します。
source ~/stackrc
$ source ~/stackrc