第3章 既存の Ceph Storage Cluster のオーバークラウドとの統合
本章では、オーバークラウドを作成して、既存の Ceph Storage Cluster と統合する方法について説明します。オーバークラウドの作成方法と既存の Ceph Storage Cluster との統合方法に関する説明はいずれも、「2章Ceph Storage ノードでのオーバークラウドの作成」を参照してください。
本章のシナリオでは、オーバークラウドは 6 台のノードで構成されます。
- 高可用性のコントローラーノード 3 台
- コンピュートノード 3 台
director は、別個の Ceph Storage Cluster と独自のノードをオーバークラウドに統合します。このクラスターは、オーバークラウドから独立して、管理されます。たとえば、Ceph Storage Cluster は、OpenStack Platform director ではなく Ceph 管理ツールを使用してスケーリングします。
すべての OpenStack マシンは、電源管理に IPMI を使用したベアメタルマシンです。director により Red Hat Enterprise Linux 7 のイメージが各ノードにコピーされるため、これらのノードではオペレーティングシステムは必要ありません。
director は、イントロスペクションおよびプロビジョニングプロセス中に、プロビジョニングネットワークを使用してコントローラーノードとコンピュートノードと通信します。すべてのノードは、ネイティブの VLAN 経由でネットワークに接続します。この例では、以下の IP アドレスの割り当てで、プロビジョニングサブネットとして 192.0.2.0/24 を使用します。
| ノード名 | IP アドレス | MAC アドレス | IPMI IP アドレス | |
|---|---|---|---|---|
|
director |
192.0.2.1 |
aa:aa:aa:aa:aa:aa | ||
|
コントローラー 1 |
定義済みの DHCP |
b1:b1:b1:b1:b1:b1 |
192.0.2.205 | |
|
コントローラー 2 |
定義済みの DHCP |
b2:b2:b2:b2:b2:b2 |
192.0.2.206 | |
|
コントローラー 3 |
定義済みの DHCP |
b3:b3:b3:b3:b3:b3 |
192.0.2.207 | |
|
コンピュート 1 |
定義済みの DHCP |
c1:c1:c1:c1:c1:c1 |
192.0.2.208 | |
|
コンピュート 2 |
定義済みの DHCP |
c2:c2:c2:c2:c2:c2 |
192.0.2.209 | |
|
コンピュート 3 |
定義済みの DHCP |
c3:c3:c3:c3:c3:c3 |
192.0.2.210 |
3.1. 既存の Ceph Storage Cluster の設定 リンクのコピーリンクがクリップボードにコピーされました!
お使いの環境に適した 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 を使用することを推奨します。
-
Ceph クラスターに、以下のケーパビリティーを指定して
client.openstackユーザーを作成します。-
cap_mon:
allow r cap_osd:
allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rwx pool=images, allow rwx pool=backups, allow rwx pool=metrics以下のコマンドは指標として使用してください。
ceph auth add client.openstack mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rwx pool=images, allow rwx pool=backups, allow rwx pool=metrics'
[root@ceph ~]# ceph auth add client.openstack mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rwx pool=images, allow rwx pool=backups, allow rwx pool=metrics'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
cap_mon:
次に、
client.openstackユーザー向けに作成された Ceph client key をメモします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでの
keyの値は (AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ==)、Ceph のクライアントキーです。最後に、Ceph Storage Cluster の file system 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 Cluster の設定ファイルに関する詳しい情報は、『Red Hat Ceph Storage Configuration Guide』の「Configuration Reference」を参照してください。
Ceph クライアントキーおよびファイルシステム ID はいずれも、「既存の Ceph Storage Cluster との統合の有効化」で後ほど使用します。
3.2. stack ユーザーの初期化 リンクのコピーリンクがクリップボードにコピーされました!
stack ユーザーとして director ホストにログインし、以下のコマンドを実行して director の設定を初期化します。
source ~/stackrc
$ source ~/stackrc
このコマンドでは、director の CLI ツールにアクセスする認証情報が含まれる環境変数を設定します。
3.3. ノードの登録 リンクのコピーリンクがクリップボードにコピーされました!
ノード定義のテンプレート (instackenv.json) は JSON ファイル形式で、ノード登録用のハードウェアおよび電源管理の情報が含まれています。以下に例を示します。
テンプレートの作成後に、stack ユーザーのホームディレクトリー (/home/stack/instackenv.json) にファイルを保存してから、director にインポートします。これには、以下のコマンドを実行します。
openstack baremetal import --json ~/instackenv.json
$ openstack baremetal import --json ~/instackenv.json
このコマンドでテンプレートをインポートして、テンプレートから director に各ノードを登録します。
カーネルと ramdisk イメージを全ノードに割り当てます。
openstack baremetal configure boot
$ openstack baremetal configure boot
director でのノードの登録、設定が完了しました。
3.4. ノードのハードウェアの検査 リンクのコピーリンクがクリップボードにコピーされました!
ノードの登録後には、各ノードのハードウェア属性を検査します。各ノードのハードウェア属性を検査するには、以下のコマンドを実行します。
openstack baremetal introspection bulk start
$ openstack baremetal introspection bulk start
このプロセスが最後まで実行されて正常に終了したことを確認してください。ベアメタルの場合には、通常 15 分ほどかかります。
3.5. ノードの手動でのタグ付け リンクのコピーリンクがクリップボードにコピーされました!
各ノードのハードウェアを登録、検査した後には、特定のプロファイルにノードをタグ付けします。これらのプロファイルタグによりノードとフレーバーが照合され、フレーバーがデプロイメントロールに割り当てられます。
ノード一覧を取得して UUID を識別します。
ironic node-list
$ ironic node-list
特定のプロファイルにノードを手動でタグ付けする場合には、各ノードの properties/capabilities パラメーターに profile オプションを追加します。たとえば、2 台のノードをタグ付けしてコントローラープロファイルとコンピュートプロファイルをそれぞれ使用するには、以下のコマンドを実行します。
profile オプションを追加すると、適切なプロファイルにノードをタグ付けします。
手動でのタグ付けの代わりに、Automated Health Check (AHC) ツールを使用し、ベンチマークデータに基づいて、多数のノードに自動でタグ付けします。
3.6. 既存の Ceph Storage Cluster との統合の有効化 リンクのコピーリンクがクリップボードにコピーされました!
stack ユーザーのホームディレクトリー内のディレクトリーに /usr/share/openstack-tripleo-heat-templates/environments/puppet-ceph-external.yaml のコピーを作成します。
mkdir templates cp /usr/share/openstack-tripleo-heat-templates/environments/puppet-ceph-external.yaml ~/templates/.
[stack@director ~]# mkdir templates
[stack@director ~]# cp /usr/share/openstack-tripleo-heat-templates/environments/puppet-ceph-external.yaml ~/templates/.
このファイルを編集して、下記のパラメーターを設定します。
-
絶対パスに
CephExternalのリソース定義を設定します。
OS::TripleO::Services::CephExternal: /usr/share/openstack-tripleo-heat-templates/puppet/services/ceph-external.yaml
OS::TripleO::Services::CephExternal: /usr/share/openstack-tripleo-heat-templates/puppet/services/ceph-external.yaml
Ceph Storage 環境の情報を使用して、以下の 3 つのパラメーターを設定します。
-
CephClientKey: Ceph Storage Cluster の Ceph クライアントキー。これは、「既存の Ceph Storage Cluster の設定」で先ほど取得したkeyの値です (例:AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ==)。 -
CephExternalMonHost: Ceph Storage Cluster の全 MON ホストの IP をコンマ区切りにしたリスト -
CephClusterFSID: Ceph Storage Cluster のファイルシステム ID。これは、「既存の Ceph Storage Cluster の設定」で先ほど取得した Ceph Storage Cluster の設定ファイルにあるfsidの値です (例:4b5c8c0a-ff60-454b-a1b4-9747aa737d19)。
-
必要な場合は、以下のパラメーターと値を使用して、OpenStack プールとクライアントユーザーの名前を設定します。
-
CephClientUserName: openstack -
NovaRbdPoolName: vms -
CinderRbdPoolName: volumes -
GlanceRbdPoolName: images -
CinderBackupRbdPoolName: backups -
GnocchiRbdPoolName: metrics
-
3.7. 以前の Red Hat Ceph Storage バージョンとの後方互換性 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform が、以前のバージョン(Red Hat Ceph Storage 1.3) の外部の Ceph Storage Cluster と統合されている場合には、後方互換性を有効にする必要があります。そのためには、最初に環境ファイル (例: /home/stack/templates/ceph-backwards-compatibility.yaml) を作成して、以下の内容を記載します。
parameter_defaults:
ExtraConfig:
ceph::conf::args:
client/rbd_default_features:
value: "1"
parameter_defaults:
ExtraConfig:
ceph::conf::args:
client/rbd_default_features:
value: "1"
「オーバークラウドの作成」に記載のとおりに、オーバークラウドのデプロイメントにこのファイルを追加します。
3.8. オーバークラウドの作成 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドの作成には、openstack overcloud deploy コマンドに追加の引数を指定する必要があります。以下に例を示します。
openstack overcloud deploy --templates -e /home/stack/templates/puppet-ceph-external.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 0 --control-flavor control --compute-flavor compute --neutron-network-type vxlan --ntp-server pool.ntp.org
$ openstack overcloud deploy --templates -e /home/stack/templates/puppet-ceph-external.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 0 --control-flavor control --compute-flavor compute --neutron-network-type vxlan --ntp-server pool.ntp.org
上記のコマンドは、以下のオプションを使用します。
-
--templates: デフォルトの Heat テンプレートコレクションからオーバークラウドを作成します。 -
-e /home/stack/templates/puppet-ceph-external.yaml: 別の環境ファイルをオーバークラウドデプロイメントに追加します。この場合は、既存の Ceph Storage Cluster の設定を含むストレージ環境ファイルです。 -
--control-scale 3: コントローラーノードを 3 台にスケーリングします。 -
--compute-scale 3: コンピュートノードを 3 台にスケーリングします。 -
--ceph-storage-scale 0: Ceph Storage ノードを 0 にスケーリングします。このように指定すると、director により Ceph Storage ノードが作成されないようになります。 -
--control-flavor control: 対象のコントローラーノードに特定のフレーバーを使用します。 -
--compute-flavor compute: コンピュートノードに特定のフレーバーを使用します。 -
--neutron-network-type vxlan: ネットワーク種別をneutronに設定します。 -
--ntp-server pool.ntp.org: NTP サーバーを設定します。
オプションの完全な一覧を表示するには、以下を実行します。
openstack help overcloud deploy
$ openstack help overcloud deploy
詳しい情報は、『director のインストールと使用方法』ガイドの「オーバークラウドのパラメーター設定」を参照してください。
オーバークラウドの作成プロセスが開始され、director によりノードがプロビジョニングされます。このプロセスは完了するまで多少時間がかかります。オーバークラウドの作成のステータスを確認するには、stack ユーザーとして別のターミナルを開き、以下を実行します。
source ~/stackrc heat stack-list --show-nested
$ source ~/stackrc
$ heat stack-list --show-nested
この設定では、オーバークラウドが外部の Ceph Storage Cluster を使用するように設定します。このクラスターは、オーバークラウドから独立して、管理される点に注意してください。たとえば、Ceph Storage Cluster は、OpenStack Platform director ではなく Ceph 管理ツールを使用してスケーリングします。
3.9. オーバークラウドへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
director は、director ホストがオーバークラウドと対話するための設定と認証を行うスクリプトを生成します。このファイル (overcloudrc) は、stack ユーザーのホームディレクトリーに保存されます。このファイルを使用するには、以下のコマンドを実行します。
source ~/overcloudrc
$ source ~/overcloudrc
これにより、director ホストの CLI からオーバークラウドと対話するために必要な環境変数が読み込まれます。director ホストとの対話に戻るには、以下のコマンドを実行します。
source ~/stackrc
$ source ~/stackrc