第3章 既存の Ceph Storage Cluster のオーバークラウドへの統合
以下のシナリオでは、既存の Ceph Storage Cluster をオーバークラウドのバックエンドとして使用するステップを説明します。以下のシナリオでは、オーバークラウドは 6 台のノードで構成されます。
- 高可用性のコントローラーノード 3 台
- コンピュートノード 3 台
director は、別個の Ceph Storage Cluster と独自のノードをオーバークラウドに統合します。このクラスターは、オーバークラウドから独立して、管理されます。たとえば、Ceph Storage Cluster は、OpenStack Platform director ではなく Ceph 管理ツールを使用してスケーリングします。
すべてのマシンは、電源管理に 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、images、vms の 3 つのプールを作成します。以下のコマンドは指標として使用してください。
[root@ceph ~]# ceph osd pool create volumes <pg-num>
[root@ceph ~]# ceph osd pool create images <pg-num>
[root@ceph ~]# ceph osd pool create vms <pg-num>
配置グループ (pg-num) の数には現実的な値を使用します。1 OSD につき 100 程度を推奨します。たとえば、OSD の合計数を 100 で乗算して、レプリカ数で除算します (osd pool default size)。
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
以下のコマンドは指標として使用してください。
[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'
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 分ほどかかります。
3.5. ノードの手動でのタグ付け リンクのコピーリンクがクリップボードにコピーされました!
各ノードのハードウェアを登録、検査した後には、特定のプロファイルにノードをタグ付けします。これらのプロファイルタグによりノードとフレーバーが照合され、フレーバーがデプロイメントロールに割り当てられます。
ノード一覧を取得して UUID を識別します。
$ ironic node-list
特定のプロファイルにノードを手動でタグ付けする場合には、各ノードの properties/capabilities パラメーターに profile オプションを追加します。たとえば、2 台のノードをタグ付けしてコントローラープロファイルとコンピュートプロファイルをそれぞれ使用するには、以下のコマンドを実行します。
$ 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.6. 既存の Ceph Storage Cluster との統合の有効化 リンクのコピーリンクがクリップボードにコピーされました!
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/.
このファイルを編集して、下記のパラメーターを設定します。
- 絶対パスにリソース定義を設定します。
OS::TripleO::CephClusterConfig::SoftwareConfig: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/ceph/ceph-external-config.yaml
- ファイルを編集して、Ceph Storage 環境の情報を使用して、以下の 3 つのパラメーターを設定します。
-
CephClientKey -
CephExternalMonHost -
CephClusterFSID - 必要な場合は、以下のパラメーターと値を使用して、OpenStack プールとクライアントユーザーの名前を設定します。
-
CephClientUserName: openstack -
NovaRbdPoolName: vms -
CinderRbdPoolName: volumes -
GlanceRbdPoolName: images
3.7. オーバークラウドの作成 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドの作成には、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 clock.redhat.com
上記のコマンドは、以下のオプションを使用します。
-
--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 clock.redhat.com: NTP サーバーを設定します。
オプションの完全な一覧を表示するには、以下を実行します。
$ openstack help overcloud deploy
パラメーターの例については、『Red Hat OpenStack Platform 7 director インストールと使用方法』ガイドの「付録 H. デプロイメントのパラメーター」も参照してください。
オーバークラウドの作成プロセスが開始され、director によりノードがプロビジョニングされます。このプロセスは完了するまで多少時間がかかります。オーバークラウドの作成のステータスを確認するには、stack ユーザーとして別のターミナルを開き、以下を実行します。
$ source ~/stackrc
$ heat stack-list --show-nested
この設定では、オーバークラウドが外部の Ceph Storage Cluster を使用するように設定します。このクラスターは、オーバークラウドから独立して、管理される点に注意してください。たとえば、Ceph Storage Cluster は、OpenStack Platform director ではなく Ceph 管理ツールを使用してスケーリングします。
3.8. オーバークラウドへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
director は、director ホストがオーバークラウドと対話するための設定と認証を行うスクリプトを生成します。このファイル (overcloudrc) は、stack ユーザーのホームディレクトリーに保存されます。このファイルを使用するには、以下のコマンドを実行します。
$ source ~/overcloudrc
これにより、director ホストの CLI からオーバークラウドと対話するために必要な環境変数が読み込まれます。director ホストとの対話に戻るには、以下のコマンドを実行します。
$ source ~/stackrc