第4章 オーバークラウドの設定
本項では、外部のロードバランサーを使用するオーバークラウドを作成するプロセスを順を追って説明します。これには、ノードの登録、ネットワークの設定、オーバークラウドの作成コマンドに必要な設定オプションが含まれます。
4.1. 環境の設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、『Red Hat OpenStack Platform director のインストールと使用方法』ガイドからのプロセスを抜粋しています。
以下のワークフローを使用して環境を設定します。
- ノード定義のテンプレートを作成して director で空のノードを登録します。
- 全ノードのハードウェアを検査します。
- 手動でロールにノードをタグ付けします。
- フレーバーを作成してロールにタグ付けします。
4.1.1. stack ユーザーの初期化 リンクのコピーリンクがクリップボードにコピーされました!
stack ユーザーとして director ホストにログインし、以下のコマンドを実行して director の設定を初期化します。
$ source ~/stackrc
このコマンドでは、director の CLI ツールにアクセスする認証情報が含まれる環境変数を設定します。
4.1.2. ノードの登録 リンクのコピーリンクがクリップボードにコピーされました!
ノード定義のテンプレート (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"
}
]
}
テンプレートの作成後に、stack ユーザーのホームディレクトリー (/home/stack/instackenv.json) にファイルを保存してから、director にインポートします。これには、以下のコマンドを実行します。
$ openstack baremetal import --json ~/instackenv.json
このコマンドでテンプレートをインポートして、テンプレートから director に各ノードを登録します。
カーネルと ramdisk イメージを全ノードに割り当てます。
$ openstack baremetal configure boot
director でのノードの登録、設定が完了しました。
4.1.3. ノードのハードウェアの検査 リンクのコピーリンクがクリップボードにコピーされました!
ノードの登録後には、各ノードのハードウェア属性を検査します。各ノードのハードウェア属性を検査するには、以下のコマンドを実行します。
$ openstack baremetal introspection bulk start
このプロセスが最後まで実行されて正常に終了したことを確認してください。ベアメタルの場合には、通常 15 分ほどかかります。
4.1.4. ノードの手動でのタグ付け リンクのコピーリンクがクリップボードにコピーされました!
各ノードのハードウェアを登録、検査した後には、特定のプロファイルにノードをタグ付けします。これらのプロファイルタグによりノードとフレーバーが照合され、フレーバーがデプロイメントロールに割り当てられます。
ノード一覧を取得して 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 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 add properties/capabilities='profile:compute,boot_option:local'
profile:compute と profile:control オプションを追加することで、この 2 つのノードがそれぞれのプロファイルにタグ付けされます。
4.2. ネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
本項では、オーバークラウドのネットワーク設定について考察します。これには、特定のネットワークトラフィックを使用するようにサービスを分離し、ロードバランシングオプションでオーバークラウドを設定する手順が含まれます。
4.2.1. ネットワークの分離 リンクのコピーリンクがクリップボードにコピーされました!
director は、分離されたオーバークラウドネットワークを設定する方法を提供します。つまり、オーバークラウド環境はネットワークトラフィック種別を異なるネットワークに分離して、個別のネットワークインターフェースまたはボンディングにネットワークトラフィックを割り当てます。分離されたネットワークを設定した後に、director は、OpenStack サービスが分離されたネットワークを使用するように設定します。分離されたネットワークが設定されていない場合には、サービスはすべて、プロビジョニングネットワーク上で実行されます。
まず最初に、オーバークラウドには、ネットワークインターフェースのテンプレートセットが必要です。これらのテンプレートをカスタマイズして、ロールごとにノードのインターフェースを設定します。このテンプレートは YAML 形式の標準の Heat テンプレートです。director にはテンプレートサンプルが含まれているので、すぐに使用を開始することができます。
- /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans: このディレクトリーには、ロールごとに VLAN が設定された単一 NIC のテンプレートが含まれます。
- /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans: ディレクトリーには、ロールごとにボンディングされた NIC の設定用のテンプレートが格納されます。
ネットワークインターフェースの設定に関する詳細は、『director のインストールと使用方法』を参照してください。
次に、ネットワーク環境ファイルを作成します。このファイルは、Heat の環境ファイルで、オーバークラウドのネットワーク環境を記述し、前のセクションのネットワークインターフェース設定テンプレートを参照します。また、IP アドレス範囲と合わせてネットワークのサブネットおよび VLAN を定義します。これらの値をローカルの環境用にカスタマイズします。
このシナリオでは、/home/stack/network-environment.yaml として保存した下記のネットワーク環境ファイルを使用します。
resource_registry:
OS::TripleO::BlockStorage::Net::SoftwareConfig: /home/stack/templates/my-overcloud/network/config/bond-with-vlans/cinder-storage.yaml
OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/my-overcloud/network/config/bond-with-vlans/compute.yaml
OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/my-overcloud/network/config/bond-with-vlans/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: /home/stack/templates/my-overcloud/network/config/bond-with-vlans/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: /home/stack/templates/my-overcloud/network/config/bond-with-vlans/ceph-storage.yaml
parameter_defaults:
InternalApiNetCidr: 172.16.20.0/24
TenantNetCidr: - 172.16.22.0/24
StorageNetCidr: 172.16.21.0/24
StorageMgmtNetCidr: 172.16.19.0/24
ExternalNetCidr: 172.16.23.0/24
InternalApiAllocationPools: [{'start': '172.16.20.10', 'end': '172.16.20.200'}]
TenantAllocationPools: [{'start': '172.16.22.10', 'end': '172.16.22.200'}]
StorageAllocationPools: [{'start': '172.16.21.10', 'end': '172.16.21.200'}]
StorageMgmtAllocationPools: [{'start': '172.16.19.10', 'end': '172.16.19.200'}]
# Leave room for floating IPs in the External allocation pool
ExternalAllocationPools: [{'start': '172.16.23.10', 'end': '172.16.23.60'}]
# Set to the router gateway on the external network
ExternalInterfaceDefaultRoute: 172.16.23.1
# Gateway router for the provisioning network (or Undercloud IP)
ControlPlaneDefaultRoute: 192.0.2.254
# The IP address of the EC2 metadata server. Generally the IP of the Undercloud
EC2MetadataIp: 192.0.2.1
# Define the DNS servers (maximum 2) for the overcloud nodes
DnsServers: ["8.8.8.8","8.8.4.4"]
InternalApiNetworkVlanID: 201
StorageNetworkVlanID: 202
StorageMgmtNetworkVlanID: 203
TenantNetworkVlanID: 204
ExternalNetworkVlanID: 100
# Set to "br-ex" if using floating IPs on native VLAN on bridge br-ex
NeutronExternalNetworkBridge: "''"
# Customize bonding options if required
BondInterfaceOvsOptions:
"bond_mode=balance-tcp lacp=active other-config:lacp-fallback-ab=true"
ネットワーク環境の設定に関する詳細は、『Red Hat OpenStack Platform director のインストールと使用方法』を参照してください。
director のホストが keystone_admin_ssh の仮想 IP に接続できるように、内部の API ネットワークにアクセスできることを確認してください。
4.2.2. ロードバランシングのオプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
director は、HAProxy が内部で管理する代わりに、外部のロードバランサーが仮想 IP をホストするように設定されたオーバークラウドを作成することができます。この構成では、オーバークラウドのデプロイメントを開始する前に、外部のロードバランサーで、分離されたネットワーク 1 つにつき仮想 IP が 1 つと、Redis サービス用に 1 つ設定済みであることを前提とします。オーバークラウドノードの NIC の設定で許可されている場合には、全く同じ仮想 IP を使用することができます。
外部のロードバランサーは、前章の設定を使用して構成が済んでいます。これらの設定には、director がオーバークラウドノードに割り当て、サービスの設定に使用する IP が含まれます。
以下は、Heat 環境ファイル (external-lb.yaml) の例です。これには、外部のロードバランサーが使用するためのオーバークラウドの設定が含まれます。
parameter_defaults:
# The VIP that the balancer holds on the ControlPlane.
ControlPlaneIP: 192.0.2.250
# The VIPs that the balancer holds for each network. These are the addresses previously binded in the load balancing configuration.
ExternalNetworkVip: 172.16.23.250
InternalApiNetworkVip: 172.16.20.250
StorageNetworkVip: 172.16.21.250
StorageMgmtNetworkVip: 172.16.19.250
# The VIP which the balancer holds, on the InternalApi, for the Redis service.
ServiceVips:
redis: 172.16.20.249
# IPs assignments for the Overcloud Controller nodes. Ensure these IPs are from each respective allocation pools defined in the network environment file.
ControllerIPs:
external:
- 172.16.23.150
- 172.16.23.151
- 172.16.23.152
internal_api:
- 172.16.20.150
- 172.16.20.151
- 172.16.20.152
storage:
- 172.16.21.150
- 172.16.21.151
- 172.16.21.152
storage_mgmt:
- 172.16.19.150
- 172.16.19.151
- 172.16.19.152
tenant:
- 172.16.22.150
- 172.16.22.151
- 172.16.22.152
# CIDRs
external_cidr: "24"
internal_api_cidr: "24"
storage_cidr: "24"
storage_mgmt_cidr: "24"
tenant_cidr: "24"
RedisPassword: p@55w0rd!
ServiceNetMap:
NeutronTenantNetwork: tenant
CeilometerApiNetwork: internal_api
MongoDbNetwork: internal_api
CinderApiNetwork: internal_api
CinderIscsiNetwork: storage
GlanceApiNetwork: storage
GlanceRegistryNetwork: internal_api
KeystoneAdminApiNetwork: internal_api
KeystonePublicApiNetwork: internal_api
NeutronApiNetwork: internal_api
HeatApiNetwork: internal_api
NovaApiNetwork: internal_api
NovaMetadataNetwork: internal_api
NovaVncProxyNetwork: internal_api
SwiftMgmtNetwork: storage_mgmt
SwiftProxyNetwork: storage
HorizonNetwork: internal_api
MemcachedNetwork: internal_api
RabbitMqNetwork: internal_api
RedisNetwork: internal_api
MysqlNetwork: internal_api
CephClusterNetwork: storage_mgmt
CephPublicNetwork: storage
ControllerHostnameResolveNetwork: internal_api
ComputeHostnameResolveNetwork: internal_api
BlockStorageHostnameResolveNetwork: internal_api
ObjectStorageHostnameResolveNetwork: internal_api
CephStorageHostnameResolveNetwork: storage
parameter_defaults セクションには、OpenStack 上の各ネットワークの 仮想 IP と IP の割り当てが含まれます。これらの設定は、ロードバランサー上の各サービスの IP 設定と一致する必要があります。このセクションでは、Redis サービスの管理パスワード (RedisPassword) も定義します。また、このセクションには、OpenStack の各サービスを特定のネットワークにマッピングする ServiceNetMap パラメーターも含まれます。ロードバランシングの設定には、このサービスを再マッピングする必要があります。
4.3. ロードバランシング向けの SSL 設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、オーバークラウドはサービスに対して暗号化されていないエンドポイントを使用します。これは、オーバークラウドの設定には、パブリック API エンドポイントの SSL/TLS を有効化するために追加の環境ファイルが必要という意味です。
外部のロードバランサーに、インストール済みの SSL 証明書と鍵のコピーがあることを確認します。
Heat テンプレートコレクションから enable-tls.yaml の環境ファイルをコピーします。
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/enable-tls.yaml ~/templates/.
ファイルを編集して、以下のステップを実行します。
-
parameter_defaultsセクションからSSLCertificate、SSLIntermediateCertificate、SSLKeyを削除します。 -
resource_registryセクションを完全に削除します。 これで、
parameter_defaultsには、EndpointMapパラメーターのみが残るはずです。EndpointMapには、HTTPS および HTTP の通信を使用するサービスのマッピングが含まれます。SSL 通信に DNS を使用する場合には、このセクションはデフォルトのままにしますが、SSL 証明書の共通名に IP アドレスを使用する場合には、CLOUDNAMEをすべてIP_ADDRESSに置き換えます。このステップを実行するには、以下のコマンドを使用します。$ sed -i 's/CLOUDNAME/IP_ADDRESS/' ~/templates/enable-tls.yaml重要IP_ADDRESSまたはCLOUDNAMEは、実際の値に置き換えないでください。Heat により、オーバークラウドの作成時にこれらの変数が適切な値に置き換えられます。
自己署名証明書を使用する場合または、証明書の署名者がオーバークラウドのイメージにあるデフォルトのトラストストアに含まれない場合には、証明書をオーバークラウドのイメージに注入します。Heat テンプレートコレクションから inject-trust-anchor.yaml 環境ファイルをコピーします。
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/.
このファイルを編集して、下記のパラメーターに以下の変更を加えます。
- SSLRootCertificate
SSLRootCertificateパラメーターにルート認証局ファイルの内容をコピーします。以下に例を示します。parameter_defaults: SSLRootCertificate: | -----BEGIN CERTIFICATE----- MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV ... sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp -----END CERTIFICATE-----重要この認証局のコンテンツで、新しく追加する行は、すべて同じレベルにインデントする必要があります。
- OS::TripleO::NodeTLSCAData
OS::TripleO::NodeTLSCAData:のリソース URL を絶対 URL に変更します。resource_registry: OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yaml
DNS ホスト名を使用して SSL/TLS でオーバークラウドにアクセスする場合は、新しい環境ファイル (~/templates/cloudname.yaml) を作成して、オーバークラウドのエンドポイントのホスト名を定義します。以下のパラメーターを使用してください。
- CloudName
- オーバークラウドエンドポイントの DNS ホスト名
- DnsServers
- 使用する DNS サーバー一覧。設定済みの DNS サーバーには、パブリック API の IP アドレスに一致する設定済みの CloudName へのエントリーが含まれていなければなりません。
このファイルの内容の例は以下のとおりです。
parameter_defaults:
CloudName: overcloud.example.com
DnsServers: 10.0.0.1
「オーバークラウドの作成」に記載のデプロイメントのコマンド (openstack overcloud deploy) は、-e オプションを使用して環境ファイルを追加します。以下の順番にこのセクションから環境ファイルを追加します。
-
SSL/TLS を有効化する環境ファイル (
enable-tls.yaml) -
DNS ホスト名を設定する環境ファイル (
cloudname.yaml) -
ルート認証局を注入する環境ファイル (
inject-trust-anchor.yaml)
例
$ openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml
4.4. オーバークラウドの作成 リンクのコピーリンクがクリップボードにコピーされました!
外部のロードバランサーを使用するオーバークラウドを作成するには、openstack overcloud deploy コマンドに追加の引数を指定する必要があります。以下に例を示します。
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e ~/network-environment.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/external-loadbalancer-vip.yaml -e ~/external-lb.yaml --control-scale 3 --compute-scale 1 --control-flavor control --compute-flavor compute [ADDITIONAL OPTIONS]
上記のコマンドは、以下のオプションを使用します。
- --templates: デフォルトの Heat テンプレートコレクションからオーバークラウドを作成します。
- -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml: オーバークラウドデプロイメントに別の環境ファイルを追加します。この場合は、ネットワーク分離の設定を初期化する環境ファイルです。
- -e ~/network-environment.yaml: オーバークラウドデプロイメントに追加の環境ファイルを追加します。この場合は、以前に作成したネットワーク環境ファイルです。
- -e /usr/share/openstack-tripleo-heat-templates/environments/external-loadbalancer-vip.yaml: オーバークラウドデプロイメントに追加の環境ファイルを追加します。この場合は、外部のロードバランシング設定を初期化する環境ファイルです。この環境ファイルは、ネットワーク設定ファイルの後に追加する必要がある点に注意してください。
- -e ~/external-lb.yaml: オーバークラウドデプロイメントに追加の環境ファイルを追加します。この場合は、外部のロードバランサー設定が記載された環境ファイルです。この環境ファイルは、ネットワーク設定ファイルの後に追加する必要がある点に注意してください。
- --control-scale 3: コントローラーノードを 3 つにスケーリングします。
- --compute-scale 3: コンピュートノードを 3 つにスケーリングします。
- --control-flavor control: コントローラーノードに特定のフレーバーを使用します。
- --compute-flavor compute: コンピュートノードに特定のフレーバーを使用します。
オプションの完全な一覧を表示するには、以下のコマンドを実行します。
$ openstack help overcloud deploy
パラメーターの例については、『Red Hat OpenStack Platform 10 director インストールと使用方法』ガイドを参照してください。
オーバークラウドの作成プロセスが開始され、director によりノードがプロビジョニングされます。このプロセスは完了するまで多少時間がかかります。オーバークラウドの作成のステータスを確認するには、stack ユーザーとして別のターミナルを開き、以下を実行します。
$ source ~/stackrc
$ heat stack-list --show-nested
4.5. オーバークラウドへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
director は、director ホストからオーバークラウドに対話するための設定を行い、認証をサポートするスクリプトを作成して、stack ユーザーのホームディレクトリーにこのファイル (overcloudrc) を保存します。このファイルを使用するには、以下のコマンドを実行します。
$ source ~/overcloudrc
これで、director のホストの CLI からオーバークラウドと対話するために必要な環境変数が読み込まれます。director のホストとの対話に戻るには、以下のコマンドを実行します。
$ source ~/stackrc
4.6. オーバークラウドの設定の完了 リンクのコピーリンクがクリップボードにコピーされました!
これで、高度なオーバークラウドの作成が終了しました。
高可用性クラスターのフェンシングに関する情報は、『director のインストールと使用方法』を参照してください。
作成後の機能に関する情報は、『director のインストールと使用方法』を参照してください。