Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第4章 オーバークラウドの設定
本項では、外部のロードバランサーを使用するオーバークラウドを作成するプロセスを順を追って説明します。これには、ノードの登録、ネットワークの設定、オーバークラウドの作成コマンドに必要な設定オプションが含まれます。
4.1. 環境の設定
このセクションでは、『Red Hat OpenStack Platform 11 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 の設定用のテンプレートが格納されます。
ネットワークインターフェースの設定に関する詳細は、『Red Hat OpenStack Platform 11 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 11 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: ControlFixedIPs: [{'ip_address':'192.0.2.250'}] PublicVirtualFixedIPs: [{'ip_address':'172.16.23.250'}] InternalApiVirtualFixedIPs: [{'ip_address':'172.16.20.250'}] StorageVirtualFixedIPs: [{'ip_address':'172.16.21.250'}] StorageMgmtVirtualFixedIPs: [{'ip_address':'172.16.19.250'}] RedisVirtualFixedIPs: [{'ip_address':'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 AodhApiNetwork: internal_api GnocchiApiNetwork: 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 11 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. オーバークラウドの設定の完了
これで、高度なオーバークラウドの作成が終了しました。
高可用性クラスターのフェンシングに関する情報は、『Red Hat OpenStack Platform 11 director のインストールと使用方法』ガイドを参照してください。
作成後の機能に関する情報は、『Red Hat OpenStack Platform 11 director のインストールと使用方法』ガイドを参照してください。