第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 管理ツールを使用してスケーリングします。詳しくは、Red Hat 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) のストレージ以下のコマンドは指標として使用してください。
[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 PGNUM
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以下のコマンドは指標として使用してください。
[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'
-
cap_mon:
次に、
client.openstackユーザー向けに作成された Ceph client key をメモします。[root@ceph ~]# ceph auth list ... client.openstack key: AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ== caps: [mon] allow r caps: [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 ...上記の出力の
keyの値 (AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ==) が Ceph のクライアントキーです。最後に、Ceph Storage Cluster の file system ID をメモします。この値は、クラスターの設定ファイルにある
fsidの設定で指定されています ([global]のセクション下)。[global] fsid = 4b5c8c0a-ff60-454b-a1b4-9747aa737d19 ...注記Ceph Storage Cluster の設定ファイルに関する詳しい情報は、『Red Hat Ceph Storage Configuration Guide』の「Configuration Reference」を参照してください。
Ceph クライアントキーおよびファイルシステム ID はいずれも、後ほど「既存の Ceph Storage クラスターとの統合」で使用します。
3.2. stack ユーザーの初期化
stack ユーザーとして director ホストにログインし、以下のコマンドを実行して director の設定を初期化します。
$ source ~/stackrc
このコマンドでは、director の CLI ツールにアクセスする認証情報が含まれる環境変数を設定します。
3.3. ノードの登録
ノード定義のテンプレート (instackenv.json) は JSON ファイル形式で、ノード登録用のハードウェアおよび電源管理の情報が含まれています。以下に例を示します。
{
"nodes":[
{
"mac":[
"bb:bb:bb:bb:bb:bb"
],
"cpu":"4",
"memory":"6144",
"disk":"40",
"arch":"x86_64",
"pm_type":"pxe_ipmitool",
"pm_user":"admin",
"pm_password":"p@55w0rd!",
"pm_addr":"192.0.2.205"
},
{
"mac":[
"cc:cc:cc:cc:cc:cc"
],
"cpu":"4",
"memory":"6144",
"disk":"40",
"arch":"x86_64",
"pm_type":"pxe_ipmitool",
"pm_user":"admin",
"pm_password":"p@55w0rd!",
"pm_addr":"192.0.2.206"
},
{
"mac":[
"dd:dd:dd:dd:dd:dd"
],
"cpu":"4",
"memory":"6144",
"disk":"40",
"arch":"x86_64",
"pm_type":"pxe_ipmitool",
"pm_user":"admin",
"pm_password":"p@55w0rd!",
"pm_addr":"192.0.2.207"
},
{
"mac":[
"ee:ee:ee:ee:ee:ee"
],
"cpu":"4",
"memory":"6144",
"disk":"40",
"arch":"x86_64",
"pm_type":"pxe_ipmitool",
"pm_user":"admin",
"pm_password":"p@55w0rd!",
"pm_addr":"192.0.2.208"
}
{
"mac":[
"ff:ff:ff:ff:ff:ff"
],
"cpu":"4",
"memory":"6144",
"disk":"40",
"arch":"x86_64",
"pm_type":"pxe_ipmitool",
"pm_user":"admin",
"pm_password":"p@55w0rd!",
"pm_addr":"192.0.2.209"
}
{
"mac":[
"gg:gg:gg:gg:gg:gg"
],
"cpu":"4",
"memory":"6144",
"disk":"40",
"arch":"x86_64",
"pm_type":"pxe_ipmitool",
"pm_user":"admin",
"pm_password":"p@55w0rd!",
"pm_addr":"192.0.2.210"
}
]
}
テンプレートの作成後に、stack ユーザーのホームディレクトリー (/home/stack/instackenv.json) にファイルを保存してから、director にインポートします。これには、以下のコマンドを実行します。
$ openstack baremetal import --json ~/instackenv.json
このコマンドでテンプレートをインポートして、テンプレートから director に各ノードを登録します。
カーネルと ramdisk イメージを全ノードに割り当てます。
$ openstack baremetal configure boot
director でのノードの登録、設定が完了しました。
3.4. ノードの手動でのタグ付け
各ノードを登録した後には、ハードウェアを検査して、ノードを特定のプロファイルにタグ付けする必要があります。プロファイルタグにより、ノードがフレーバーに照合され、そのフレーバーはデプロイメントロールに割り当てられます。
新規ノードを検査してタグ付けするには、以下のステップに従います。
ハードウェアのイントロスペクションをトリガーして、各ノードのハードウェア属性を取得します。
$ openstack baremetal introspection bulk start
重要このプロセスが最後まで実行されて正常に終了したことを確認してください。ベアメタルの場合には、通常 15 分ほどかかります。
ノード一覧を取得して UUID を識別します。
$ ironic node-list
各ノードの
properties/capabilitiesパラメーターに profile オプションを追加して、ノードを特定のプロファイルに手動でタグ付けします。たとえば、3 つのノードが
controlプロファイルを使用し、別の 3 つのノードがcomputeプロファイルを使用するようにするには、以下のコマンドを実行します。$ ironic node-update 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 add properties/capabilities='profile:control,boot_option:local' $ ironic node-update 6faba1a9-e2d8-4b7c-95a2-c7fbdc12129a add properties/capabilities='profile:control,boot_option:local' $ ironic node-update 5e3b2f50-fcd9-4404-b0a2-59d79924b38e add properties/capabilities='profile:control,boot_option:local' $ ironic node-update 484587b2-b3b3-40d5-925b-a26a2fa3036f add properties/capabilities='profile:compute,boot_option:local' $ ironic node-update d010460b-38f2-4800-9cc4-d69f0d067efe add properties/capabilities='profile:compute,boot_option:local' $ ironic node-update d930e613-3e14-44b9-8240-4f3559801ea6 add properties/capabilities='profile:compute,boot_option:local'
profile オプションを追加すると、適切なプロファイルにノードをタグ付けします。
手動でのタグ付けの代わりに、Automated Health Check (AHC) ツールを使用し、ベンチマークデータに基づいて、多数のノードに自動でタグ付けします。
3.5. 既存の Ceph Storage クラスターとの統合
stack ユーザーのホームディレクトリー内のディレクトリーに /usr/share/openstack-tripleo-heat-templates/environments/puppet-ceph-external.yaml のコピーを作成します。
[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
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)。
-
neutronネットワーク種別にvxlanを設定するには、以下のパラメーターを追加します。-
NeutronNetworkType: vxlan
-
必要な場合は、以下のパラメーターと値を使用して、OpenStack プールとクライアントユーザーの名前を設定します。
-
CephClientUserName: openstack -
NovaRbdPoolName: vms -
CinderRbdPoolName: volumes -
GlanceRbdPoolName: images -
CinderBackupRbdPoolName: backups -
GnocchiRbdPoolName: metrics
-
3.6. 以前の 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"「オーバークラウドの作成」に記載のとおりに、オーバークラウドのデプロイメントにこのファイルを追加します。
3.7. ロールへのノードとフレーバーの割り当て
オーバークラウドのデプロイメントプランニングでは、各ロールに割り当てるノード数とフレーバーを指定する必要があります。 すべての Heat テンプレートのパラメーターと同様に、これらのロールの仕様は環境ファイル (この場合は ~/templates/puppet-ceph.yaml) の parameter_defaults セクションで宣言する必要があります。
この設定には、以下のパラメーターを使用します。
表3.1 オーバークラウドノードのロールとフレーバー
| Heat テンプレートのパラメーター | 説明 |
|---|---|
|
ControllerCount |
スケールアウトするコントローラーノード数 |
|
OvercloudControlFlavor |
コントローラーノード ( |
|
ComputeCount |
スケールアウトするコンピュートノード数 |
|
OvercloudComputeFlavor |
コンピュートノード ( |
たとえば、オーバークラウドが各ロール (Controller および Compute) に 3 つずつノードをデプロイするように設定するには、 parameter_defaults に以下の設定を追加します。
parameter_defaults: ControllerCount: 3 ComputeCount: 3 OvercloudControlFlavor: control OvercloudComputeFlavor: compute
Heat テンプレートのパラメーターのより詳細な一覧は、『director のインストールと使用方法』の「CLI ツールでのオーバークラウドの作成」を参照してください。
3.8. オーバークラウドの作成
オーバークラウドの作成には、openstack overcloud deploy コマンドに追加の引数を指定する必要があります。以下に例を示します。
$ openstack overcloud deploy --templates -e -e /home/stack/templates/puppet-ceph-external.yaml --ntp-server pool.ntp.org
上記のコマンドは、以下のオプションを使用します。
-
--templates: デフォルトの Heat テンプレートコレクション (/usr/share/openstack-tripleo-heat-templates/) からオーバークラウドを作成します。 -
-e /home/stack/templates/puppet-ceph-external.yaml: 別の環境ファイルをオーバークラウドデプロイメントに追加します。この場合は、既存の Ceph Storage Cluster の設定を含むストレージ環境ファイルです。 -
--ntp-server pool.ntp.org: NTP サーバーを設定します。
/home/stack/templates/storage-environment.yaml で使用する全設定の概要については、「付録A 環境ファイルのサンプル: Ceph クラスターの作成」を参照してください。
オプションの完全な一覧を表示するには、以下を実行します。
$ openstack help overcloud deploy
詳しい情報は、「director のインストールと使用方法」ガイドの「オーバークラウドのパラメーター設定」を参照してください。
オーバークラウドの作成プロセスが開始され、director によりノードがプロビジョニングされます。このプロセスは完了するまで多少時間がかかります。オーバークラウドの作成のステータスを確認するには、stack ユーザーとして別のターミナルを開き、以下を実行します。
$ 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
これにより、director ホストの CLI からオーバークラウドと対話するために必要な環境変数が読み込まれます。director ホストとの対話に戻るには、以下のコマンドを実行します。
$ source ~/stackrc

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.