director のインストールと使用方法
Red Hat OpenStack Platform director を使用した OpenStack クラウド作成のエンドツーエンドシナリオ
概要
第1章 はじめに

図1.1 アンダークラウドおよびオーバークラウドの基本レイアウト
1.1. アンダークラウド
- 環境プランニング: アンダークラウドは、コンピュート、コントローラー、各種ストレージロールなどの Red Hat OpenStack Platform ロールを割り当てるプランニング機能を提供します。
- ベアメタルシステムの制御: アンダークラウドは、電源管理の制御には各ノードの Intelligent Platform Management Interface (IPMI) を使用し、ハードウェア属性の検出や OpenStack の各ノードへのインストールには PXE ベースのサービスを使用します。この機能により、ベアメタルシステムを OpenStack ノードとしてプロビジョニングする方法が提供されます。
- オーケストレーション: アンダークラウドは、OpenStack 環境を構築するための YAML テンプレートセットの提供および読み込みを行います。
- OpenStack Bare Metal (Ironic) および OpenStack Compute (Nova): ベアメタルノードの管理
- OpenStack Networking (Neutron) および Open vSwitch: ベアメタルノードのネットワークの制御
- OpenStack Image Server (Glance): ベアメタルマシンへ書き込むイメージの格納
- OpenStack Orchestation (Heat) および Puppet: director がオーバークラウドイメージをディスクに書き込んだ後のノードのオーケストレーションおよび設定
- OpenStack Telemetry (Ceilometer): 監視とデータの収集
- OpenStack Identity (Keystone): director のコンポーネントの認証と承認
- MariaDB: director のデータベースバックエンド
- RabbitMQ: director コンポーネントのメッセージキュー
1.2. オーバークラウド
- コントローラー: OpenStack 環境に管理、ネットワーク、高可用性機能を提供するノード。理想的な OpenStack 環境には、高可用性のクラスターに 3 つのコントローラーノードが設定されていることが推奨されます。デフォルトのコントローラーノードには、Horizon、Keystone、Nova API、Neutron Server、Open vSwitch、Glance、Cinder Volume、Cinder API、Swift Storage、Swift Proxy、Heat Engine、Heat API、Ceilometer、MariaDB、RabbitMQ のコンポーネントが含まれています。また、コントローラーは高可用性機能に Pacemaker や Galera も使用します。
- コンピュート: これらのノードは OpenStack 環境にコンピュートリソースを提供します。環境を徐々にスケーリングするにはコンピュートノードをさらに追加します。デフォルトのコンピュートノードには、Nova、Compute、Nova KVM、Ceilometer Agent、Open vSwitch といったコンポーネントが含まれます。
- ストレージ: OpenStack 環境にストレージを提供するノード。これには、以下のストレージ用のノードが含まれます。
- Ceph Storage ノード: ストレージクラスターを構成するために使用します。各ノードには、Ceph Object Storage Daemon (OSD) が含まれており、Ceph Storage ノードをデプロイする場合には、director により Ceph Monitor がコンピュートノードにインストールされます。
- Block Storage (Cinder): HA コントローラーノードの外部ブロックストレージとして使用します。このノードには、Cinder Volume、Ceilometer Agent、Open vSwitch といったコンポーネントが含まれます。
- Object Storage (swift): これらのノードは、OpenStack Swift の外部ストレージ層を提供します。コントローラーノードは、Swift プロキシーを介してこれらのノードにアクセスします。このノードには、swift ストレージ、ceilometer エージェント、Open vSwitch コンポーネントが含まれます。
1.3. 高可用性
- Pacemaker: Pacemaker はクラスターリソースマネージャーで、クラスター内の全ノードにおける OpenStack コンポーネントの可用性を管理/監視します。
- HA Proxy: クラスターに負荷分散およびプロキシーサービスを提供します。
- Galera: クラスター全体の OpenStack Platform データベースを複製します。
- Memcached: データベースのキャッシュを提供します。
注記
1.4. Ceph Storage
第2章 要件
注記
2.1. 環境要件
最低要件
- Red Hat OpenStack Platform director 用のホストマシン 1 台
- Red Hat OpenStack Platform コンピュートノード用のホストマシン 1 台
- Red Hat OpenStack Platform コントローラーノード用のホストマシン 1 台
推奨要件
- Red Hat OpenStack Platform director 用のホストマシン 1 台
- Red Hat OpenStack Platform コンピュートノード用のホストマシン 3 台
- Red Hat OpenStack Platform コントローラーノード用のホストマシン 3 台
- クラスター内に Red Hat Ceph Storage ノード用のホストマシン 3 台
- 全ノードにはベアメタルシステムを使用することを推奨します。最低でも、コンピュートノードにはベアメタルシステムが必要です。
- director は電源管理制御を行うため、オーバークラウドのベアメタルシステムにはすべて、Intelligent Platform Management Interface (IPMI) が必要です。
2.2. アンダークラウドの要件
- Intel 64 または AMD64 CPU 拡張機能をサポートする、8 コア 64 ビット x86 プロセッサー
- 最小 16 GB の RAM
- 最小 40 GB の空きディスク領域。オーバークラウドのデプロイまたは更新を試みる前には、空き領域が少なくとも 10 GB あることを確認してください。この空き領域は、イメージの変換やノードのプロビジョニングプロセスのキャッシュに使用されます。
- 最小 2 枚の 1 Gbps ネットワークインターフェースカード。ただし、特にオーバークラウド環境で多数のノードをプロビジョニングする場合には、
プロビジョニングネットワークのトラフィック用に 10 Gbps インターフェースを使用することを推奨します。 - ホストのオペレーティングシステムに Red Hat Enterprise Linux 7.2 以降がインストール済みであること。
重要
2.3. ネットワーク要件
プロビジョニングネットワーク: これは、director がオーバークラウドノードのプロビジョニング/管理に使用するプライベートネットワークです。プロビジョニングネットワークは、オーバークラウドで使用するベアメタルシステムの検出がしやすくなるように、DHCP および PXE ブート機能を提供します。理想的には、director が PXE ブートおよび DHCP の要求に対応できるように、このネットワークはトランキングされたインターフェースでネイティブ VLAN を使用する必要があります。これは、Intelligent Platform Management Interface (IPMI) での全オーバークラウドノードの電源管理制御に使用するネットワークでもあります。外部ネットワーク: 全ノードへのリモート接続に使用する別個のネットワーク。このネットワークに接続するこのインターフェースには、静的または外部の DHCP サービス経由で動的に定義された、ルーティング可能な IP アドレスが必要です。
- 標準的な最小限のオーバークラウドのネットワーク構成には、以下が含まれます。
- シングル NIC 構成: ネイティブの VLAN および異なる種別のオーバークラウドネットワークのサブネットを使用するタグ付けされた VLAN 上にプロビジョニングネットワーク用の NIC を 1 つ。
- デュアル NIC 構成: プロビジョニングネットワーク用の NIC を 1 つと、外部ネットワーク用の NIC を 1 つ。
- デュアル NIC 構成: ネイティブの VLAN 上にプロビジョニングネットワーク用の NIC を 1 つと、異なる種別のオーバークラウドネットワークのサブネットを使用するタグ付けされた VLAN 用の NIC を 1 つ。
- 複数 NIC 構成: 各 NIC は、異なる種別のオーバークラウドネットワークのサブセットを使用します。
- 追加の物理 NIC は、個別のネットワークの分離、ボンディングインターフェースの作成、タグ付された VLAN トラフィックの委譲に使用することができます。
- ネットワークトラフィックの種別を分離するのに VLAN を使用している場合には、802.1Q 標準をサポートするスイッチを使用してタグ付けされた VLAN を提供します。
- オーバークラウドの作成時には、全オーバークラウドマシンで 1 つの名前を使用して NIC を参照します。理想としては、混乱を避けるため、対象のネットワークごとに、各オーバークラウドノードで同じ NIC を使用してください。たとえば、プロビジョニングネットワークにはプライマリー NIC を使用して、OpenStack サービスにはセカンダリー NIC を使用します。
- プロビジョニングネットワークの NIC は director マシン上でリモート接続に使用する NIC とは異なります。director のインストールでは、プロビジョニング NIC を使用してブリッジが作成され、リモート接続はドロップされます。director システムへリモート接続する場合には、外部 NIC を使用します。
- プロビジョニングネットワークには、環境のサイズに適した IP 範囲が必要です。以下のガイドラインを使用して、この範囲に含めるべき IP アドレスの数を決定してください。
- プロビジョニングネットワークに接続されているノード 1 台につき最小で 1 IP アドレスを含めます。
- 高可用性を設定する予定がある場合には、クラスターの仮想 IP 用に追加の IP アドレスを含めます。
- 環境のスケーリング用の追加の IP アドレスを範囲に追加します。
注記
プロビジョニングネットワーク上で IP アドレスが重複するのを避ける必要があります。 詳しい説明は、「プロビジョニングネットワークでの IP アドレスの競合に対するトラブルシューティング」を参照してください。注記
ストレージ、プロバイダー、テナントネットワークの IP アドレスの使用範囲をプランニングすることに関する情報は、『ネットワークガイド』を参照してください。 - すべてのオーバークラウドシステムをプロビジョニング NIC から PXE ブートするように設定して、同システム上の外部 NIC およびその他の NIC の PXE ブートを無効にします。また、プロビジョニング NIC の
PXE ブートは、ハードディスクや CD/DVD ドライブよりも優先されるように、起動順序の最上位に指定します。 - プロビジョニングネットワークに接続された Intelligent Platform Management Interface (IPMI) により、director は各ノードの電源管理を制御できるので、オーバークラウドのベアメタルシステムにはすべて IPMI が必要です。
- 各オーバークラウドシステムの詳細 (プロビジョニング NIC の MAC アドレス、IPMI NIC の IP アドレス、IPMI ユーザー名、IPMI パスワード) をメモしてください。この情報は、後ほどオーバークラウドノードの設定時に役立ちます。
- インスタンスが外部のインターネットからアクセス可能である必要がある場合には、パブリックネットワークから Floating IP アドレスを割り当てて、そのアドレスをインスタンスに関連付けます。インスタンスは、引き続きプライベートの IP アドレスを確保しますが、ネットワークトラフィックは NAT を使用して、Floating IP アドレスに到達します。Floating IP アドレスは、複数のプライベート IP アドレスではなく、単一のインスタンスにのみ割り当て可能である点に注意してください、ただし、Floating IP アドレスは、単一のテナントで使用するように確保され、そのテナントは必要に応じて特定のインスタンスに関連付け/関連付け解除することができます。この構成を使用すると、インフラストラクチャーが外部のインターネットに公開されるので、適切なセキュリティープラクティスを順守しているかどうかを確認する必要があるでしょう。
- 1 つのブリッジには単一のインターフェースまたは単一のボンディングのみをメンバーにすると、Open vSwitch でネットワークループが発生するリスクを緩和することができます。複数のボンディングまたはインターフェースが必要な場合には、複数のブリッジを設定することが可能です。
重要
- ネットワークのセグメント化を使用して、ネットワークトラフィックを軽減し、機密データを分離します。フラットなネットワークはセキュリティーレベルがはるかに低くなります。
- サービスアクセスとポートを最小限に制限します。
- 適切なファイアウォールルールとパスワードが使用されるようにします。
- SELinux が有効化されていることを確認します。
2.4. オーバークラウドの要件
注記
2.4.1. コンピュートノードの要件
- プロセッサー
- Intel 64 または AMD64 CPU 拡張機能をサポートする 64 ビット x86 プロセッサーで Intel VT または AMD-V のハードウェア仮想化拡張機能が有効化されていること。このプロセッサーには最小でも 4 つのコアが搭載されていることを推奨しています。
- メモリー
- 最小 6 GB の RAMこの要件には、仮想マシンインスタンスに割り当てるメモリー容量に基づいて、追加の RAM を加算します。
- ディスク領域
- 最小 40 GB の空きディスク領域
- ネットワークインターフェースカード
- 最小 1 枚の 1 Gbps ネットワークインターフェースカード (実稼働環境では最低でも NIC を 2 枚使用することを推奨)。タグ付けされた VLAN トラフィックを委譲する場合や、ボンディングインターフェース向けの場合には追加のネットワークインターフェースを使用します。
- Intelligent Platform Management Interface (IPMI)
- 各コンピュートノードには、サーバーのマザーボード上に IPMI 機能が必要です。
2.4.2. コントローラーノードの要件
- プロセッサー
- Intel 64 または AMD64 CPU 拡張機能をサポートする 64 ビット x86 プロセッサー
- メモリー
- 各コントローラーノードに最小 32 GB のメモリー。パフォーマンスを最適化するには、各コントローラーノードに 64 GB のメモリーを使用することを推奨します。
重要
推奨されるメモリー容量は、CPU のコア数によって異なります。CPU のコア数が多いほど、より多くのメモリーが必要となります。メモリーの要件に関する詳しい情報は、Red Hat カスタマーポータルで「Red Hat OpenStack Platform Hardware Requirements for Highly Available Controllers」の記事を参照してください。 - ディスク領域
- 最小 40 GB の空きディスク領域
- ネットワークインターフェースカード
- 最小 2 枚の 1 Gbps ネットワークインターフェースカード。タグ付けされた VLAN トラフィックを委譲する場合や、ボンディングインターフェース向けの場合には追加のネットワークインターフェースを使用します。
- Intelligent Platform Management Interface (IPMI)
- 各コントローラーノードには、サーバーのマザーボード上に IPMI 機能が必要です。
2.4.3. Ceph Storage ノードの要件
- プロセッサー
- Intel 64 または AMD64 CPU 拡張機能をサポートする 64 ビット x86 プロセッサー
- メモリー
- メモリー要件はストレージ容量によって異なります。ハードディスク容量 1 TB あたり最小で 1 GB のメモリーを使用するのが理想的です。
- ディスク領域
- ストレージ要件はメモリーの容量によって異なります。ハードディスク容量 1 TB あたり最小で 1 GB のメモリーを使用するのが理想的です。
- ディスクのレイアウト
- 推奨される Red Hat Ceph Storage ノードの設定には、以下のようなディスクレイアウトが必要です。
/dev/sda: root ディスク。director は、主なオーバークラウドイメージをディスクにコピーします。/dev/sdb: ジャーナルディスク。このディスクは、/dev/sdb1、/dev/sdb2、/dev/sdb3などのように、Ceph OSD 向けにパーティションを分割します。ジャーナルディスクは通常、システムパフォーマンスの向上に役立つ Solid State Drive (SSD) です。/dev/sdc以降: OSD ディスク。ストレージ要件で必要な数のディスクを使用します。
本ガイドには、Ceph Storage ディスクを director にマッピングするために必要な手順を記載しています。 - ネットワークインターフェースカード
- 最小で 1 x 1 Gbps ネットワークインターフェースカード (実稼働環境では、最低でも NIC を 2 つ以上使用することが推奨です)。タグ付けされた VLAN トラフィックを委譲する場合や、ボンディングインターフェース向けの場合には追加のネットワークインターフェースを使用します。特に大量のトラフィックにサービスを提供する OpenStack Platform 環境を構築する場合に、ストレージノードには 10 Gbps インターフェースを使用するように推奨します。
- Intelligent Platform Management Interface (IPMI)
- 各 Ceph ノードには、サーバーのマザーボード上に IPMI 機能が必要です。
重要
# parted [device] mklabel gpt
2.5. リポジトリーの要件
表2.1 OpenStack Platform リポジトリー
|
名前
|
リポジトリー
|
要件の説明
|
|---|---|---|
|
Red Hat Enterprise Linux 7 Server (RPMS)
| rhel-7-server-rpms
|
ベースオペレーティングシステムのリポジトリー
|
|
Red Hat Enterprise Linux 7 Server - Extras (RPMs)
| rhel-7-server-extras-rpms
|
Red Hat OpenStack Platform の依存関係が含まれます。
|
|
Red Hat Enterprise Linux 7 Server - RH Common (RPMs)
| rhel-7-server-rh-common-rpms
|
Red Hat OpenStack Platform のデプロイと設定ツールが含まれます。
|
|
Red Hat Satellite Tools for RHEL 7 Server RPMs x86_64
| rhel-7-server-satellite-tools-6.1-rpms
|
Red Hat Satellite 6 でのホスト管理ツール
|
|
Red Hat Enterprise Linux High Availability (for RHEL 7 Server) (RPMs)
| rhel-ha-for-rhel-7-server-rpms
|
Red Hat Enterprise Linux の高可用性ツール。コントローラーノードの高可用性に使用します。
|
|
Red Hat Enterprise Linux OpenStack Platform 8 director for RHEL 7 (RPMs)
| rhel-7-server-openstack-8-director-rpms
|
Red Hat OpenStack Platform director のリポジトリー。director でデプロイしたオーバークラウドで使用するためのツールもいくつか提供します。
|
|
Red Hat Enterprise Linux OpenStack Platform 8 for RHEL 7 (RPMs)
| rhel-7-server-openstack-8-rpms
|
コアとなる Red Hat OpenStack Platform リポジトリー
|
|
Red Hat Ceph Storage OSD 1.3 for Red Hat Enterprise Linux 7 Server (RPMs)
| rhel-7-server-rhceph-1.3-osd-rpms
|
(Ceph Storage ノード向け) Ceph Storage Object Storage デーモンのリポジトリー。Ceph Storage ノードにインストールします。
|
|
Red Hat Ceph Storage MON 1.3 for Red Hat Enterprise Linux 7 Server (RPMs)
| rhel-7-server-rhceph-1.3-mon-rpms
|
(Ceph Storage ノード向け) Ceph Storage Monitor デーモンのリポジトリー。Ceph Storage ノードを使用して OpenStack 環境にあるコントローラーノードにインストールします。
|
注記
第3章 オーバークラウドのプランニング
3.1. ノードのデプロイメントロールのプランニング
- コントローラー
- 環境を制御するための主要なサービスを提供します。これには、Dashboard (Horizon)、認証 (Keystone)、イメージストレージ (Glance)、ネットワーク (Neutron)、オーケストレーション (Heat)、高可用性サービス (複数のコントローラーノードを使用する場合) が含まれます。Red Hat OpenStack Platform 環境に以下のいずれかが必要です。
- 基本的な環境にはノードを 1 台
- 高可用性環境にはノードを 3 台
2 台のノードまたは 3 台以上のノードで構成される環境はサポートされません。 - コンピュート
- ハイパーバイザーとして機能し、環境内で仮想マシンを実行するのに必要な処理能力を提供する物理サーバー。基本的な Red Hat OpenStack Platform 環境には少なくとも 1 つのコンピュートノードが必要です。
- Ceph-Storage
- Red Hat Ceph Storage を提供するホスト。Ceph Storage ホストはクラスターに追加され、クラスターをスケーリングします。このデプロイメントロールはオプションです。
- Cinder-Storage
- OpenStack の Cinder サービスに外部ブロックストレージを提供するホスト。このデプロイメントロールはオプションです。
- Swift-Storage
- OpenStack の Swift サービスに外部オブジェクトストレージを提供するホスト。このデプロイメントロールはオプションです。
表3.1 各種シナリオに使用するノードデプロイメントロール
| |
コントローラー
|
コンピュート
|
Ceph-Storage
|
Swift-Storage
|
Cinder-Storage
|
合計
|
|---|---|---|---|---|---|---|
|
小規模のオーバークラウド
|
1
|
1
|
-
|
-
|
-
|
2
|
|
中規模のオーバークラウド
|
1
|
3
|
-
|
-
|
-
|
4
|
|
追加のオブジェクトおよびブロックストレージのある中規模のオーバークラウド
|
1
|
3
|
-
|
1
|
1
|
6
|
|
高可用性の中規模オーバークラウド
|
3
|
3
|
-
|
-
|
-
|
6
|
|
高可用性で Ceph Storage のある中規模オーバークラウド
|
3
|
3
|
3
|
-
|
-
|
9
|
3.2. ネットワークのプランニング
表3.2 ネットワーク種別の割り当て
|
ネットワーク種別
|
説明
|
そのネットワーク種別を使用するノード
|
|---|---|---|
|
IPMI
|
ノードの電源管理に使用するネットワーク。このネットワークは、アンダークラウドのインストール前に事前定義されます。
|
全ノード
|
|
プロビジョニング
|
director は、このネットワークトラフィック種別を使用して、PXE ブートで新規ノードをデプロイし、オーバークラウドベアメタルサーバーに OpenStack Platform のインストールをオーケストレーションします。このネットワークは、アンダークラウドのインストール前に事前定義されます。
|
全ノード
|
|
内部 API
|
内部 API ネットワークは、API 通信、RPC メッセージ、データベース通信経由で OpenStack のサービス間の通信を行う際に使用します。
|
コントローラー、コンピュート、Cinder Storage、Swift Storage
|
|
テナント
|
Neutron は、VLAN 分離 (各テナントネットワークがネットワーク VLAN) または VXLAN か GRE 経由のトンネリングを使用した独自のネットワークを各テナントに提供します。ネットワークトラフィックは、テナントのネットワークごとに分割されます。テナントネットワークにはそれぞれ IP サブネットが割り当てられています。また、ネットワーク名前空間が複数あると、複数のテナントネットワークが同じアドレスを使用できるので、競合は発生しません。
|
コントローラー、コンピュート
|
|
ストレージ
|
Block Storage、NFS、iSCSI など。理想的には、これはパフォーマンスの関係上、全く別のスイッチファブリックに分離します。
|
全ノード
|
|
ストレージ管理
|
OpenStack Object Storage (swift) は、このネットワークを使用して、参加するレプリカノード間でデータオブジェクトを同期します。プロキシーサービスは、ユーザー要求と背後にあるストレージ層の間の仲介インターフェースとして機能します。プロキシーは、受信要求を受け取り、必要なレプリカの位置を特定して要求データを取得します。Ceph バックエンドを使用するサービスは、Ceph と直接対話せずにフロントエンドのサービスを使用するため、ストレージ管理ネットワーク経由で接続を確立します。RBD ドライバーは例外で、このトラフィックは直接 Ceph に接続する点に注意してください。
|
コントローラー、Ceph Storage、Cinder Storage、Swift Storage
|
|
外部
|
グラフィカルシステム管理用の OpenStack Dashboard (Horizon)、OpenStack サービス用のパブリック API をホストして、インスタンスへの受信トラフィック向けに SNAT を実行します。外部ネットワークがプライベート IP アドレスを使用する場合には (RFC-1918 に準拠)、インターネットからのトラフィックに対して、さらに NAT を実行する必要があります。
|
コントローラー
|
|
Floating IP
|
受信トラフィックが Floating IP アドレスとテナントネットワーク内のインスタンスに実際に割り当てられた IP アドレスとの間の 1 対 1 の IP アドレスマッピングを使用してインスタンスに到達できるようにします。
外部 ネットワークからは分離した VLAN 上で Floating IP をホストする場合には、Floating IP VLAN をコントローラーノードにトランキングして、オーバークラウドの作成後に Neutron を介して VLAN を追加します。これにより、複数のブリッジに接続された複数の Floating IP ネットワークを作成する手段が提供されます。VLAN は、トランキングされますが、インターフェースとしては設定されません。その代わりに、Neutron は各 Floating IP ネットワークに選択したブリッジ上の VLAN セグメンテーション ID を使用して、OVS ポートを作成します。
|
コントローラー
|
|
管理
|
SSH アクセス、DNS トラフィック、NTP トラフィックなどのシステム管理機能を提供します。このネットワークは、コントローラー以外のノード用のゲートウェイとしても機能します。
|
全ノード
|
注記
- 内部 API
- ストレージ
- ストレージ管理
- テナントネットワーク
- 外部
- 管理
nic2 および nic3) のインターフェースを使用して、対象の VLAN 経由でこれらのネットワークを提供します。また、各オーバークラウドのノードは、ネイティブの VLAN (nic1) を使用するプロビジョニングネットワークでアンダークラウドと通信します。

図3.1 ボンディングインターフェースを使用する VLAN トポロジーの例
表3.3 ネットワークマッピング
| |
マッピング
|
インターフェースの総数
|
VLAN の総数
|
|---|---|---|---|
|
外部アクセスのあるフラットネットワーク
|
ネットワーク 1: プロビジョニング、内部 API、ストレージ、ストレージ管理、テナントネットワーク
ネットワーク 2: 外部、Floating IP (オーバークラウドの作成後にマッピング)
|
2
|
2
|
|
分離ネットワーク
|
ネットワーク 1: プロビジョニング
ネットワーク 2: 内部 API
ネットワーク 3: テナントネットワーク
ネットワーク 4: ストレージ
ネットワーク 5: ストレージ管理
ネットワーク 6: 管理
ネットワーク 7: 外部、Floating IP (オーバークラウドの作成後にマッピング)
|
3 (ボンディングインターフェース 2 つを含む)
|
7
|
3.3. ストレージのプランニング
- Ceph Storage ノード
- director は、Red Hat Ceph Storage を使用して拡張可能なストレージノードセットを作成します。オーバークラウドは、各種ノードを以下の目的で使用します。
- イメージ: Glance は仮想マシンのイメージを管理します。イメージは変更できないため、OpenStack はイメージバイナリーブロブとして処理し、それに応じてイメージをダウンロードします。Ceph Block Device でイメージを格納するには、Glance を使用することができます。
- ボリューム: Cinder ボリュームはブロックデバイスです。OpenStack は、仮想マシンの起動や、実行中の仮想マシンへのボリュームのアタッチにボリュームを使用し、Cinder サービスを使用してボリュームを管理します。さらに、イメージの CoW (Copy-on-Write) のクローンを使用して仮想マシンを起動する際には Cinder を使用します。
- ゲストディスク: ゲストディスクは、ゲストオペレーティングシステムのディスクです。デフォルトでは、Nova で仮想マシンを起動すると、ディスクは、ハイパーバイザーのファイルシステム上のファイルとして表示されます (通常
/var/lib/nova/instances/<uuid>/の配下)。Cinder を使用せずに直接 Ceph 内にある全仮想マシンを起動することができます。これは、ライブマイグレーションのプロセスで簡単にメンテナンス操作を実行できるため好都合です。また、ハイパーバイザーが停止した場合には、nova evacuateをトリガーして仮想マシンをほぼシームレスに別の場所で実行することもできるので便利です。
重要
Ceph では、仮想マシンディスクのホスティングに対する QCOW2 のサポートはありません。Ceph で仮想マシンを起動するには (一時バックエンドまたはボリュームからの起動)、Glance のイメージ形式はRAWでなければなりません。その他の情報については、『Red Hat Ceph Storage Architecture Guide』を参照してください。 - Swift Storage ノード
- director は、外部オブジェクトストレージノードを作成します。これは、オーバークラウド環境でコントローラーノードをスケーリングまたは置き換える必要があるが、高可用性クラスター外にオブジェクトストレージを保つ必要がある場合に便利です。
第4章 アンダークラウドのインストール
4.1. director のインストールユーザーの作成
stack という名前のユーザーを作成して、パスワードを設定します。
[root@director ~]# useradd stack [root@director ~]# passwd stack # specify a password
sudo の使用時にはパスワードなしでログインできるようにします。
[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stack
stack ユーザーに切り替えます。
[root@director ~]# su - stack [stack@director ~]$
stack ユーザーで director のインストールを続行します。
4.2. テンプレートとイメージ用のディレクトリーの作成
$ mkdir ~/images $ mkdir ~/templates
4.3. システムのホスト名設定
$ hostname # Checks the base hostname $ hostname -f # Checks the long hostname (FQDN)
hostnamectl を使用してホスト名を設定します。
$ sudo hostnamectl set-hostname manager.example.com $ sudo hostnamectl set-hostname --transient manager.example.com
/etc/hosts にシステムのホスト名とベース名も入力する必要があります。たとえば、システムの名前が manager.example.com の場合には、/etc/hosts には以下のように入力する必要があります。
127.0.0.1 manager.example.com manager localhost localhost.localdomain localhost4 localhost4.localdomain4
4.4. システムの登録
手順4.1 サブスクリプションマネージャーを使用して必要なチャンネルをサブスクライブする手順
- コンテンツ配信ネットワークにシステムを登録します。プロンプトが表示されたら、カスタマーポータルのユーザー名とパスワードを入力します。
$ sudo subscription-manager register
- Red Hat OpenStack Platform director のエンタイトルメントプールを検索します。
$ sudo subscription-manager list --available --all
- 上記のステップで特定したプール ID を使用して、Red Hat OpenStack Platform 8 のエンタイトルメントをアタッチします。
$ sudo subscription-manager attach --pool=pool_id
- デフォルトのリポジトリーをすべて無効にしてから、必要な Red Hat Enterprise Linux リポジトリーを有効にします。
$ sudo subscription-manager repos --disable=* $ sudo subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-openstack-8-rpms --enable=rhel-7-server-openstack-8-director-rpms --enable rhel-7-server-rh-common-rpms
これらのリポジトリーには、director のインストールに必要なパッケージが含まれます。重要
上記にリストしたリポジトリーのみを有効にします。追加のリポジトリーを使用すると、パッケージとソフトウェアの競合が発生する場合があります。他のリポジトリーは有効にしないでください。 - システムで更新を実行して、ベースシステムパッケージを最新の状態にします。
$ sudo yum update -y $ sudo reboot
4.5. director パッケージのインストール
[stack@director ~]$ sudo yum install -y python-tripleoclient
4.6. director の設定
stack ユーザーのホームディレクトリーに undercloud.conf として配置されているテンプレートに保存されています。
stack ユーザーのホームディレクトリーにコピーします。
$ cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf
- local_ip
- director のプロビジョニング NIC 用に定義する IP アドレス。これは、director が DHCP および PXE ブートサービスに使用する IP アドレスでもあります。環境内の既存の IP アドレスまたはサブネットと競合するなど、プロビジョニングネットワークに別のサブネットを使用する場合以外は、この値はデフォルトの
192.0.2.1/24のままにしてください。 - network_gateway
- オーバークラウドインスタンスのゲートウェイ。外部ネットワークにトラフィックを転送するアンダークラウドのホストです。director に別の IP アドレスを使用する場合または外部ゲートウェイを直接使用する場合以外は、この値はデフォルト (
192.0.2.1) のままにします。注記
director の設定スクリプトは、適切なsysctlカーネルパラメーターを使用して IP フォワーディングを自動的に有効にする操作も行います。 - undercloud_public_vip
- director のパブリック API 用に定義する IP アドレス。他の IP アドレスまたはアドレス範囲と競合しないプロビジョニングネットワークの IP アドレスを使用します。たとえば、
192.0.2.2で、director の設定により、この IP アドレスは/32ネットマスクを使用するルーティングされた IP アドレスとしてソフトウェアブリッジに接続されます。 - undercloud_admin_vip
- director の管理 API 用に定義する IP アドレス。他の IP アドレスまたはアドレス範囲と競合しないプロビジョニングネットワークの IP アドレスを使用します。たとえば、
192.0.2.3で、director の設定により、この IP アドレスは/32ネットマスクを使用するルーティングされた IP アドレスとしてソフトウェアブリッジに接続されます。 - undercloud_service_certificate
- OpenStack SSL 通信の証明書の場所とファイル名。理想的には、信頼できる認証局から、この証明書を取得します。それ以外の場合は、「付録A SSL/TLS 証明書の設定」のガイドラインを使用して独自の自己署名の証明書を作成します。これらのガイドラインには、自己署名の証明書か認証局からの証明書に拘らず、証明書の SELinux コンテキストを設定する方法が含まれています。
- local_interface
- director のプロビジョニング NIC 用に選択するインターフェース。これは、director が DHCP および PXE ブートサービスに使用するデバイスでもあります。どのデバイスが接続されているかを確認するには、
ip addrコマンドを使用します。以下にip addrコマンドの出力結果の例を示します。2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:75:24:09 brd ff:ff:ff:ff:ff:ff inet 192.168.122.178/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 3462sec preferred_lft 3462sec inet6 fe80::5054:ff:fe75:2409/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noop state DOWN link/ether 42:0b:c2:a5:c1:26 brd ff:ff:ff:ff:ff:ffこの例では、外部 NIC はeth0を、プロビジョニング NIC は未設定のeth1を使用します。今回は、local_interfaceをeth1に設定します。この設定スクリプトにより、このインターフェースがinspection_interfaceパラメーターで定義したカスタムのブリッジにアタッチされます。 - network_cidr
- オーバークラウドインスタンスの管理に director が使用するネットワーク。これはプロビジョニングネットワークです。プロビジョニングネットワークに別のサブネットを使用しない限り、この値はデフォルト (
192.0.2.0/24) のままにします。 - masquerade_network
- 外部にアクセスするためにマスカレードするネットワークを定義します。これにより、プロビジョニングネットワークにネットワークアドレス変換 (NAT) の範囲が提供され、director 経由で外部アクセスが可能になります。プロビジョニングネットワークに別のサブネットを使用しない限り、この値はデフォルト (
192.0.2.0/24) のままにします。 - dhcp_start, dhcp_end
- オーバークラウドノードの DHCP 割り当て範囲 (開始アドレスと終了アドレス)。お使いのノードを割り当てるのに十分な IP アドレスがこの範囲に含まれるようにします。
- inspection_interface
- ノードのイントロスペクションに director が使用するブリッジ。これは、director の設定により作成されるカスタムのブリッジです。
LOCAL_INTERFACEでこのブリッジをアタッチします。これは、デフォルトのbr-ctlplaneのままにします。 - inspection_iprange
- director のイントロスペクションサービスが PXE ブートとプロビジョニングプロセスの際に使用する IP アドレス範囲。この範囲の開始アドレスと終了アドレスの定義には、
192.0.2.100,192.0.2.120などのように、コンマ区切りの値を使用します。この範囲には、お使いのノードの IP アドレスが含まれており、dhcp_startとdhcp_endの範囲と競合がないようにします。 - inspection_extras
- イントロスペクション時に追加のハードウェアコレクションを有効化するかどうかを定義します。イントロスペクションイメージでは
python-hardwareまたはpython-hardware-detectパッケージが必要です。 - inspection_runbench
- ノードイントロスペクション時に一連のベンチマークを実行します。有効にするには、
trueに設定します。このオプションは、高度なシナリオで登録ノードのハードウェアを検査する際にベンチマーク分析を実行する場合に必要です。詳細は、「付録C プロファイルの自動タグ付け」を参照してください。 - undercloud_debug
- アンダークラウドサービスのログレベルを
DEBUGに設定します。この値はtrueに設定して有効化します。 - enable_tempest
- 検証ツールをインストールするかどうかを定義します。デフォルトは、
falseに設定されていますが、trueで有効化することができます。 - ipxe_deploy
- iPXE か標準の PXE のいずれを使用するか定義します。デフォルトは
trueで iPXE を有効化します。falseに指定すると、標準の PXE に設定されます。詳しい情報は、Red Hat カスタマーポータルの「Changing from iPXE to PXE in Red Hat OpenStack Platform director」を参照してください。 - store_events
- アンダークラウドの Ceilometer にイベントを保存するかどうかを定義します。
- undercloud_db_password, undercloud_admin_token, undercloud_admin_password, undercloud_glance_password, など
- 残りのパラメーターは、全 director サービスのアクセス詳細を指定します。値を変更する必要はありません。
undercloud.confで空欄になっている場合には、これらの値は director の設定スクリプトによって自動的に生成されます。設定スクリプトの完了後には、すべての値を取得することができます。重要
これらのパラメーターの設定ファイルの例では、プレースホルダーの値に<None>を使用しています。これらの値を<None>に設定すると、デプロイメントでエラーが発生します。
$ openstack undercloud install
undercloud.conf の設定に合わせてサービスを設定します。このスクリプトは、完了までに数分かかります。
undercloud-passwords.conf: director サービスの全パスワード一覧stackrc: director のコマンドラインツールへアクセスできるようにする初期化変数セット
stack ユーザーを初期化してコマンドラインツールを使用するには、以下のコマンドを実行します。
$ source ~/stackrc
4.7. オーバークラウドノードのイメージの取得
- イントロスペクションカーネルおよび ramdisk: PXE ブートでベアメタルシステムのイントロスペクションに使用
- デプロイメントカーネルおよび ramdisk: システムのプロビジョニングおよびデプロイメントに使用
- オーバークラウドカーネル、ramdisk、完全なイメージ: ノードのハードディスクに書き込まれるベースのオーバークラウドシステム
rhosp-director-images および rhosp-director-images-ipa パッケージからこれらのイメージを取得します。
$ sudo yum install rhosp-director-images rhosp-director-images-ipa
stack ユーザーのホーム (/home/stack/images) の images ディレクトリーに新しいイメージアーカイブをコピーします。
$ cp /usr/share/rhosp-director-images/overcloud-full-latest-8.0.tar ~/images/. $ cp /usr/share/rhosp-director-images/ironic-python-agent-latest-8.0.tar ~/images/.
$ cd ~/images $ for tarfile in *.tar; do tar -xf $tarfile; done
$ openstack overcloud image upload --image-path /home/stack/images/
bm-deploy-kernel、bm-deploy-ramdisk、overcloud-full、overcloud-full-initrd、overcloud-full-vmlinuz のイメージを director にアップロードします。これらは、デプロイメントおよびオーバークラウド用のイメージです。また、このスクリプトにより、director の PXE サーバーにイントロスペクションイメージがインストールされます。
$ openstack image list +--------------------------------------+------------------------+ | ID | Name | +--------------------------------------+------------------------+ | 765a46af-4417-4592-91e5-a300ead3faf6 | bm-deploy-ramdisk | | 09b40e3d-0382-4925-a356-3a4b4f36b514 | bm-deploy-kernel | | ef793cd0-e65c-456a-a675-63cd57610bd5 | overcloud-full | | 9a51a6cb-4670-40de-b64b-b70f4dd44152 | overcloud-full-initrd | | 4f7e33f4-d617-47c1-b36f-cbe90f132e5d | overcloud-full-vmlinuz | +--------------------------------------+------------------------+
discovery-ramdisk.*) は表示されません。director は、これらのファイルを /httpboot にコピーします。
[stack@host1 ~]$ ls -l /httpboot total 341460 -rwxr-xr-x. 1 root root 5153184 Mar 31 06:58 agent.kernel -rw-r--r--. 1 root root 344491465 Mar 31 06:59 agent.ramdisk -rw-r--r--. 1 root root 337 Mar 31 06:23 inspector.ipxe
4.8. アンダークラウドの Neutron サブネットでのネームサーバーの設定
neutron サブネットで定義されます。以下のコマンドを使用して、この環境のネームサーバーを定義します。
$ neutron subnet-list $ neutron subnet-update [subnet-uuid] --dns-nameserver [nameserver-ip]
$ neutron subnet-show [subnet-uuid] +-------------------+-----------------------------------------------+ | Field | Value | +-------------------+-----------------------------------------------+ | ... | | | dns_nameservers | 8.8.8.8 | | ... | | +-------------------+-----------------------------------------------+
重要
DnsServer パラメーターを使用します。これは、「ネットワーク環境ファイルの作成」の高度な設定シナリオで説明します。
4.9. アンダークラウドのバックアップ
4.10. アンダークラウドの設定完了
第5章 基本的なオーバークラウド要件の設定
ワークフロー
- ノード定義のテンプレートを作成して director で空のノードを登録します。
- 全ノードのハードウェアを検査します。
- ロールにノードをタグ付けします。
- 追加のノードプロパティーを定義します。
要件
- 「4章アンダークラウドのインストール」で作成した director ノード
- ノードに使用するベアメタルマシンのセット。必要なノード数は、作成予定のオーバークラウドのタイプにより異なります (オーバークラウドロールに関する情報は「ノードのデプロイメントロールのプランニング」を参照してください)。これらのマシンは、各ノード種別の要件セットに従う必要があります。これらの要件については、「オーバークラウドの要件」を参照してください。これらのノードにはオペレーティングシステムは必要ありません。director が Red Hat Enterprise Linux 7 のイメージを各ノードにコピーします。
- ネイティブ VLAN として設定したプロビジョニングネットワーク用のネットワーク接続 1 つ。全ノードは、このネイティブに接続して、「ネットワーク要件」で設定した要件に準拠する必要があります。この章の例では、以下の IP アドレスの割り当てで、プロビジョニングサブネットとして 192.0.2.0/24 を使用します。
表5.1 プロビジョニングネットワークの IP 割り当て
ノード名IP アドレスMAC アドレスIPMI IP アドレスdirector192.0.2.1aa:aa:aa:aa:aa:aaコントローラー定義済みの DHCPbb:bb:bb:bb:bb:bb192.0.2.205コンピュート定義済みの DHCPcc:cc:cc:cc:cc:cc192.0.2.206 - その他のネットワーク種別はすべて、OpenStack サービスにプロビジョニングネットワークを使用しますが、ネットワークトラフィックの他のタイプに追加でネットワークを作成することができます。詳しい情報は、「ネットワークの分離」を参照してください。
5.1. オーバークラウドへのノードの登録
instackenv.json) は JSON 形式で、ノードのハードウェアおよび電源管理の情報が記載されます。
- pm_type
- 使用する電源管理ドライバー。この例では IPMI ドライバーを使用します (
pxe_ipmitool)。 - pm_user, pm_password
- IPMI のユーザー名およびパスワード
- pm_addr
- IPMI デバイスの IP アドレス
- mac
- (オプション) ノード上のネットワークインターフェースの MAC アドレス一覧。各システムのプロビジョニング NIC の MAC アドレスのみを使用します。
- cpu
- (オプション) ノード上の CPU 数
- memory
- (オプション) メモリーサイズ (MB)
- disk
- (オプション) ハードディスクのサイズ (GB)
- arch
- (オプション) システムアーキテクチャー
{
"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"
}
]
}
注記
stack ユーザーのホームディレクトリー (/home/stack/instackenv.json) にファイルを保存して、以下のコマンドを使用して director にインポートします。
$ openstack baremetal import --json ~/instackenv.json
$ openstack baremetal configure boot
$ ironic node-list
5.2. ノードのハードウェアの検査
注記
$ openstack baremetal introspection bulk start
$ sudo journalctl -l -u openstack-ironic-inspector -u openstack-ironic-inspector-dnsmasq -u openstack-ironic-conductor -f
重要
$ ironic node-set-maintenance [NODE UUID] true $ openstack baremetal introspection start [NODE UUID] $ ironic node-set-maintenance [NODE UUID] false
5.3. プロファイルへのノードのタグ付け
compute、control、swift-storage、ceph-storage、block-storage が作成され、大半の環境で変更なしに使用することができます。
注記
properties/capabilities パラメーターに profile オプションを追加します。たとえば、2 つのノードをタグ付けしてコントローラープロファイルとコンピュートプロファイルをそれぞれ使用するには、以下のコマンドを実行します。
$ ironic node-update 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 add properties/capabilities='profile:compute,boot_option:local' $ ironic node-update 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 add properties/capabilities='profile:control,boot_option:local'
profile:compute と profile:control オプションを追加することで、この 2 つのノードがそれぞれのプロファイルにタグ付けされます。
boot_option:local パラメーターを設定します。
重要
$ openstack overcloud profiles list
5.4. ノードの root ディスクの定義
model(文字列): デバイスの IDvendor(文字列): デバイスのベンダーserial(文字列): ディスクのシリアル番号wwn(文字列): 一意のストレージ IDhctl(文字列): SCSI のホスト:チャネル:ターゲット:Lunsize(整数):デバイスのサイズ (GB)
$ mkdir swift-data
$ cd swift-data
$ export IRONIC_DISCOVERD_PASSWORD=`sudo grep admin_password /etc/ironic-inspector/inspector.conf | awk '! /^#/ {print $NF}'`
$ for node in $(ironic node-list | awk '!/UUID/ {print $2}'); do swift -U service:ironic -K $IRONIC_DISCOVERD_PASSWORD download ironic-inspector inspector_data-$node; done
inspector_data オブジェクトからデータがダウンロードされます。全オブジェクトのオブジェクト名の一部には、ノードの UUID が使用されます。
$ ls -1 inspector_data-15fc0edc-eb8d-4c7f-8dc0-a2a25d5e09e3 inspector_data-46b90a4d-769b-4b26-bb93-50eaefcdb3f4 inspector_data-662376ed-faa8-409c-b8ef-212f9754c9c7 inspector_data-6fc70fe4-92ea-457b-9713-eed499eda206 inspector_data-9238a73a-ec8b-4976-9409-3fcff9a8dca3 inspector_data-9cbfe693-8d55-47c2-a9d5-10e059a14e07 inspector_data-ad31b32d-e607-4495-815c-2b55ee04cdb1 inspector_data-d376f613-bc3e-4c4b-ad21-847c4ec850f8
$ for node in $(ironic node-list | awk '!/UUID/ {print $2}'); do echo "NODE: $node" ; cat inspector_data-$node | jq '.inventory.disks' ; echo "-----" ; done
NODE: 46b90a4d-769b-4b26-bb93-50eaefcdb3f4
[
{
"size": 1000215724032,
"vendor": "ATA",
"name": "/dev/sda",
"model": "WDC WD1002F9YZ",
"wwn": "0x0000000000000001",
"serial": "WD-000000000001"
},
{
"size": 1000215724032,
"vendor": "ATA",
"name": "/dev/sdb",
"model": "WDC WD1002F9YZ",
"wwn": "0x0000000000000002",
"serial": "WD-000000000002"
},
{
"size": 1000215724032,
"vendor": "ATA",
"name": "/dev/sdc",
"model": "WDC WD1002F9YZ",
"wwn": "0x0000000000000003",
"serial": "WD-000000000003"
},
]
WD-000000000002 の disk 2 に設定します。そのためには、ノードの定義に root_device パラメーターを追加する必要があります。
$ ironic node-update 97e3f7b3-5629-473e-a187-2193ebe0b5c7 add properties/root_device='{"serial": "WD-000000000002"}'
注記
重要
name でルートディスクを設定しないでください。この値は、ノードのブート時に変更される可能性があります。
5.5. 基本設定の完了
- 高度な設定の手順を使用して環境をカスタマイズします。詳しい情報は、「6章オーバークラウドの高度なカスタマイズ設定」を参照してください。
- または、基本のオーバークラウドをデプロイします。詳しい情報は、「7章オーバークラウドの作成」を参照してください。
重要
第6章 オーバークラウドの高度なカスタマイズ設定
注記
6.1. Heat テンプレートについての理解
6.1.1. Heat テンプレート
- パラメーター: Heat に渡す設定。値を渡さずにスタックやパラメーターのデフォルト値をカスタマイズする方法を提供します。これらは、テンプレートの
parametersセクションで定義されます。 - リソース: スタックの一部として作成/設定する特定のオブジェクト。OpenStack には全コンポーネントに対応するコアのリソースセットが含まれています。これらは、テンプレートの
resourcesセクションで定義されます。 - 出力: スタックの作成後に Heat から渡される値。これらの値は、Heat API またはクライアントツールを使用してアクセスすることができます。これらは、テンプレートの
outputセクションで定義されます。
heat_template_version: 2013-05-23
description: > A very basic Heat template.
parameters:
key_name:
type: string
default: lars
description: Name of an existing key pair to use for the instance
flavor:
type: string
description: Instance type for the instance to be created
default: m1.small
image:
type: string
default: cirros
description: ID or name of the image to use for the instance
resources:
my_instance:
type: OS::Nova::Server
properties:
name: My Cirros Instance
image: { get_param: image }
flavor: { get_param: flavor }
key_name: { get_param: key_name }
output:
instance_name:
description: Get the instance's name
value: { get_attr: [ my_instance, name ] }
type: OS::Nova::Server を使用して、特定のフレーバー、イメージ、キーを使用する my_instance と呼ばれるインスタンスを作成します。このスタックは、My Cirros Instance と呼ばれる instance_name の値を返すことができます。
$ heat stack-list --show-nested
6.1.2. 環境ファイル
- リソースレジストリー: このセクションは、他の Heat テンプレートに関連付けられたカスタムのリソース名を定義します。基本的には、この設定により、コアリソースコレクションに存在しないカスタムのリソースを作成する方法が提供されます。これらは、環境ファイルの
resource_registryセクションで定義されます。 - パラメーター: これらは、最上位のテンプレートのパラメーターに適用する共通の設定です。たとえば、リソースレジストリーマッピングなどのネストされたスタックをデプロイするテンプレートがある場合には、パラメーターは最上位のテンプレートにのみ適用され、ネストされたリソースのテンプレートには適用されません。パラメーターは、環境ファイルの
parametersセクションで定義されます。 - パラメーターのデフォルト値: これらのパラメーターは、すべてのテンプレートのパラメーターのデフォルト値を変更します。たとえば、リソースレジストリーマッピングなどのネストされたスタックをデプロイするテンプレートがある場合には、パラメーターのデフォルト値は、最上位のテンプレートとすべてのネストされたリソースを定義するテンプレートなどすべてのテンプレートに適用されます。パラメーターのデフォルト値は環境ファイルの
parameter_defaultsセクションで定義されます。
重要
parameters ではなく parameter_defaults を使用することを推奨します。これは、パラメーターがオーバークラウドのスタックテンプレートすべてに適用されるからです。
resource_registry: OS::Nova::Server::MyServer: myserver.yaml parameter_defaults: NetworkName: my_network parameters: MyIP: 192.168.0.1
my_template.yaml) からスタックを作成する場合に、このような環境ファイル (my_env.yaml) を追加することができます。my_env.yaml ファイルにより、OS::Nova::Server::MyServer と呼ばれるリソース種別が作成されます。myserver.yaml ファイルは、このリソース種別を実装して、組み込まれている種別を上書きする Heat テンプレートです。my_template.yaml ファイルに OS::Nova::Server::MyServer リソースを追加することができます。
MyIP は、この環境ファイルと一緒にデプロイされるメインの Heat テンプレートにのみパラメーターを適用します。この例では、my_template.yaml のパラメーターにのみ適用されます。
NetworkName はメインの Heat テンプレート (上記の例では my_template.yaml) とメインのテンプレートに関連付けられたテンプレート (上記の例では OS::Nova::Server::MyServer リソースとその myserver.yaml テンプレート) の両方に適用されます。
6.1.3. コアとなるオーバークラウドの Heat テンプレート
/usr/share/openstack-tripleo-heat-templates に保存されています。
overcloud.yaml: これはオーバークラウド環境を作成するために使用する主要なテンプレートファイルです。overcloud-resource-registry-puppet.yaml: これは、オーバークラウド環境の作成に使用する主要な環境ファイルで、オーバークラウドイメージ上に保存される Puppet モジュールの設定セットを提供します。director により各ノードにオーバークラウドのイメージが書き込まれると、Heat は環境ファイルに登録されているリソースを使用して各ノードに Puppet の設定を開始します。environments: オーバークラウドのデプロイメントに適用する環境ファイルのサンプルが含まれるディレクトリーです。
6.2. ネットワークの分離
- ネットワーク 1: プロビジョニング
- ネットワーク 2: 内部 API
- ネットワーク 3: テナントネットワーク
- ネットワーク 4: ストレージ
- ネットワーク 5: ストレージ管理
- ネットワーク 6: 管理
- ネットワーク 7: 外部および Floating IP (オーバークラウドの作成後にマッピング)
表6.1 ネットワークサブネットおよび VLAN 割り当て
|
ネットワーク種別
|
サブネット
|
VLAN
|
|---|---|---|
|
内部 API
|
172.16.0.0/24
|
201
|
|
テナント
|
172.17.0.0/24
|
202
|
|
ストレージ
|
172.18.0.0/24
|
203
|
|
ストレージ管理
|
172.19.0.0/24
|
204
|
|
管理
|
172.20.0.0/24
|
205
|
|
外部 / Floating IP
|
10.1.1.0/24
|
100
|
6.2.1. カスタムのインターフェーステンプレートの作成
/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 設定のテンプレートが含まれます。/usr/share/openstack-tripleo-heat-templates/network/config/multiple-nics: このディレクトリーには、ロール毎に NIC を 1 つ使用して複数の NIC 設定を行うためのテンプレートが含まれています。/usr/share/openstack-tripleo-heat-templates/network/config/single-nic-linux-bridge-vlans: このディレクトリーには、Open vSwitch ブリッジの代わりに Linux ブリッジを使用してロールベースで単一の NIC に複数の VLAN が接続される構成のテンプレートが含まれます。
/usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans にあるバージョンをコピーします。
$ cp -r /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans ~/templates/nic-configs
parameters、resources、output が含まれます。今回のシナリオでは、resources セクションのみを編集します。各 resources セクションは、以下のように開始されます。
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
os_net_config:
network_config:
os-apply-config コマンドと os-net-config サブコマンドがノードのネットワークプロパティーを設定するように要求が作成されます。network_config セクションには、種別順に並べられたカスタムのインターフェース設定が含まれます。これらの種別には以下が含まれます。
- interface
- 単一のネットワークインターフェースを定義します。この設定では、実際のインターフェース名 (eth0、eth1、enp0s25) または番号付きのインターフェース (nic1、nic2、nic3) を使用して各インターフェースを定義します。
- type: interface name: nic2 - vlan
- VLAN を定義します。
parametersセクションから渡された VLAN ID およびサブネットを使用します。- type: vlan vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet} - ovs_bond
- Open vSwitch で、複数の
インターフェースを結合するボンディングを定義します。これにより、冗長性や帯域幅が向上します。- type: ovs_bond name: bond1 members: - type: interface name: nic2 - type: interface name: nic3 - ovs_bridge
- Open vSwitch で、複数の
interface、ovs_bond、vlanオブジェクトを接続するブリッジを定義します。- type: ovs_bridge name: {get_input: bridge_name} members: - type: ovs_bond name: bond1 members: - type: interface name: nic2 primary: true - type: interface name: nic3 - type: vlan device: bond1 vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet} - linux_bond
- 複数の
interfaceを結合するLinux ボンディングを定義します。これにより、冗長性が向上し、帯域幅が増大します。bonding_optionsパラメーターには、カーネルベースのボンディングオプションを指定するようにしてください。Linux ボンディングのオプションに関する詳しい情報は、『Red Hat Enterprise Linux 7 ネットワークガイド』の「4.5.1. ボンディングモジュールのディレクティブ」のセクションを参照してください。- type: linux_bond name: bond1 members: - type: interface name: nic2 - type: interface name: nic3 bonding_options: "mode=802.3ad" - linux_bridge
- 複数の
interface、linux_bond、およびvlanオブジェクトを接続する Linux ブリッジを定義します。- type: linux_bridge name: bridge1 addresses: - ip_netmask: list_join: - '/' - - {get_param: ControlPlaneIp} - {get_param: ControlPlaneSubnetCidr} members: - type: interface name: nic1 primary: true - type: vlan vlan_id: {get_param: ExternalNetworkVlanID} device: bridge1 addresses: - ip_netmask: {get_param: ExternalIpSubnet} routes: - ip_netmask: 0.0.0.0/0 default: true next_hop: {get_param: ExternalInterfaceDefaultRoute}
/home/stack/templates/nic-configs/controller.yaml テンプレートは以下の network_config を使用します。
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
os_net_config:
network_config:
- type: interface
name: nic1
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- '/'
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
- ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
- type: ovs_bridge
name: {get_input: bridge_name}
dns_servers: {get_param: DnsServers}
members:
- type: ovs_bond
name: bond1
ovs_options: {get_param: BondInterfaceOvsOptions}
members:
- type: interface
name: nic2
primary: true
- type: interface
name: nic3
- type: vlan
device: bond1
vlan_id: {get_param: ExternalNetworkVlanID}
addresses:
- ip_netmask: {get_param: ExternalIpSubnet}
routes:
- default: true
next_hop: {get_param: ExternalInterfaceDefaultRoute}
- type: vlan
device: bond1
vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
- type: vlan
device: bond1
vlan_id: {get_param: StorageNetworkVlanID}
addresses:
- ip_netmask: {get_param: StorageIpSubnet}
- type: vlan
device: bond1
vlan_id: {get_param: StorageMgmtNetworkVlanID}
addresses:
- ip_netmask: {get_param: StorageMgmtIpSubnet}
- type: vlan
device: bond1
vlan_id: {get_param: TenantNetworkVlanID}
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
- type: vlan
device: bond1
vlan_id: {get_param: ManagementNetworkVlanID}
addresses:
- ip_netmask: {get_param: ManagementIpSubnet}
注記
br-ex という名前の外部ブリッジ) を定義し、nic2 と nic3 の 2 つの番号付きインターフェースから、bond1 と呼ばれるボンディングインターフェースを作成します。ブリッジにはタグ付けされた VLAN デバイスの番号が含まれており、bond1 を親デバイスとして使用します。またこのテンプレートには、director に接続するインターフェースも含まれます。
get_param 関数を使用する点に注意してください。これらのパラメーターは、使用するネットワーク専用に作成した環境ファイルで定義します。
重要
nic4) が含まれる可能性があり、このインターフェースは OpenStack のサービス用の IP 割り当てを使用しませんが、DHCP やデフォルトルートを使用します。ネットワークの競合を回避するには、使用済みのインターフェースを ovs_bridge デバイスから削除し、DHCP とデフォルトのルート設定を無効にします。
- type: interface name: nic4 use_dhcp: false defroute: false
6.2.2. ネットワーク環境ファイルの作成
/usr/share/openstack-tripleo-heat-templates/network/config/ のネットワークインターフェースファイルの例と同じです。
/usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml:single-nic-vlansネットワークインターフェースディレクトリー内の VLAN 設定が含まれる単一 NIC の環境ファイルサンプルです。外部ネットワークの無効化 (net-single-nic-with-vlans-no-external.yaml) 、または IPv6 の有効化 (net-single-nic-with-vlans-v6.yaml) 向けの環境ファイルもあります。/usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml:bond-with-vlansネットワークインターフェースディレクトリー内の VLAN 設定が含まれる単一 NIC の環境ファイルサンプルです。外部ネットワークの無効化 (net-bond-with-vlans-no-external.yaml) 、または IPv6 の有効化 (net-bond-with-vlans-v6.yaml) 向けの環境ファイルもあります。/usr/share/openstack-tripleo-heat-templates/environments/net-multiple-nics.yaml:multiple-nicsネットワークインターフェースディレクトリー内の VLAN 設定が含まれる単一 NIC の環境ファイルサンプルです。IPv6 の有効化 (net-multiple-nics-v6.yaml) 向けの環境ファイルもあります。/usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-linux-bridge-with-vlans.yaml: Open vSwitch ブリッジではなく Linux ブリッジを使用して VLAN 設定を行う単一 NIC の環境ファイルサンプルです。これは、single-nic-linux-bridge-vlansネットワークインターフェースディレクトリーを使用します。
/usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml ファイルの変更版を使用します。このファイルを stack ユーザーの templates ディレクトリーにコピーします。
$ cp /usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml /home/stack/templates/network-environment.yaml
resource_registry:
OS::TripleO::BlockStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/cinder-storage.yaml
OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml
OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/ceph-storage.yaml
parameter_defaults:
InternalApiNetCidr: 172.16.0.0/24
TenantNetCidr: 172.17.0.0/24
StorageNetCidr: 172.18.0.0/24
StorageMgmtNetCidr: 172.19.0.0/24
StorageMgmtNetCidr: 172.19.0.0/24
ManagementNetCidr: 172.20.0.0/24
ExternalNetCidr: 10.1.1.0/24
InternalApiAllocationPools: [{'start': '172.16.0.10', 'end': '172.16.0.200'}]
TenantAllocationPools: [{'start': '172.17.0.10', 'end': '172.17.0.200'}]
StorageAllocationPools: [{'start': '172.18.0.10', 'end': '172.18.0.200'}]
StorageMgmtAllocationPools: [{'start': '172.19.0.10', 'end': '172.19.0.200'}]
ManagementAllocationPools: [{'start': '172.20.0.10', 'end': '172.20.0.200'}]
# Leave room for floating IPs in the External allocation pool
ExternalAllocationPools: [{'start': '10.1.1.10', 'end': '10.1.1.50'}]
# Set to the router gateway on the external network
ExternalInterfaceDefaultRoute: 10.1.1.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
ManagementNetworkVlanID: 205
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"
resource_registry セクションには、ノードのロールごとにカスタムのネットワークインターフェースンテプレートへの変更済みのリンクが含まれます。「カスタムのインターフェーステンプレートの作成」 を参照してください。
parameter_defaults セクションには、各ネットワーク種別のネットワークオプションを定義するパラメーター一覧が含まれます。これらのオプションについての詳しい参考情報は「付録F ネットワーク環境のオプション」を参照してください。
BondInterfaceOvsOptions オプションは、nic2 および nic3 を使用するボンディングインターフェースのオプションを提供します。ボンディングオプションについての詳しい情報は、「付録G Open vSwitch ボンディングのオプション」を参照してください。
重要
6.2.3. OpenStack サービスの分離ネットワークへの割り当て
/home/stack/templates/network-environment.yaml) で新たにネットワークマッピングを定義することで、OpenStack サービスを異なるネットワーク種別に再割り当てすることができます。ServiceNetMap パラメーターにより、各サービスに使用するネットワーク種別が決定されます。
parameter_defaults:
...
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
# Define which network will be used for hostname resolution
ControllerHostnameResolveNetwork: internal_api
ComputeHostnameResolveNetwork: internal_api
BlockStorageHostnameResolveNetwork: internal_api
ObjectStorageHostnameResolveNetwork: internal_api
CephStorageHostnameResolveNetwork: storage
...
storage に変更すると、対象のサービスはストレージ管理ネットワークではなく、ストレージネットワークに割り当てられます。つまり、parameter_defaults セットをストレージ管理ネットワークではなくストレージネットワーク向けに定義するだけで設定することができます。
6.2.4. デプロイするネットワークの選択
resource_registry セクションは変更する必要はありません。ネットワークの一覧は、ネットワークのサブセットを使用する場合のみ変更してください。
注記
environments/network-isolation.yaml は追加せずに、ネットワークの環境ファイルにネットワークとポートをすべて指定してください。
resource_registry: # This section is usually not modified, if in doubt stick to the defaults # TripleO overcloud networks OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external.yaml OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml OS::TripleO::Network::StorageMgmt: /usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage.yaml OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml OS::TripleO::Network::Management: /usr/share/openstack-tripleo-heat-templates/network/management.yaml # Port assignments for the VIPs OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml OS::TripleO::Network::Ports::ManagementVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml # Port assignments for the controller role OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml OS::TripleO::Controller::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml # Port assignments for the compute role OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml OS::TripleO::Compute::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml # Port assignments for the ceph storage role OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml OS::TripleO::CephStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml # Port assignments for the swift storage role OS::TripleO::SwiftStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml OS::TripleO::SwiftStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml OS::TripleO::SwiftStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml # Port assignments for the block storage role OS::TripleO::BlockStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml OS::TripleO::BlockStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml OS::TripleO::BlockStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml OS::TripleO::BlockStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml
OS::TripleO::Network::* リソースのリソースレジストリーの宣言が含まれます。デフォルトでは、これらのリソースは noop.yaml ファイルを参照しており、このファイルではネットワークは作成されません。ネットワークごとの YAML ファイルにあるリソースを参照すると、ネットワークの作成が有効化されます。
storage_mgmt.yaml への全参照を noop.yaml で置き換えることができます。
resource_registry:
# This section is usually not modified, if in doubt stick to the defaults
# TripleO overcloud networks
OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external.yaml
OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml
OS::TripleO::Network::StorageMgmt: /usr/share/openstack-tripleo-heat-templates/network/noop.yaml
OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage.yaml
OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml
# Port assignments for the VIPs
OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/noop.yaml
OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml
# Port assignments for the controller role
OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/noop.yaml
OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
# Port assignments for the compute role
OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
# Port assignments for the ceph storage role
OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/noop.yaml
# Port assignments for the swift storage role
OS::TripleO::SwiftStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::SwiftStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/noop.yaml
# Port assignments for the block storage role
OS::TripleO::BlockStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
OS::TripleO::BlockStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
OS::TripleO::BlockStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/noop.yaml
parameter_defaults:
ServiceNetMap:
NeutronTenantNetwork: tenant
CeilometerApiNetwork: internal_api
MongoDbNetwork: internal_api
CinderApiNetwork: internal_api
CinderIscsiNetwork: storage
GlanceApiNetwork: storage
GlanceRegistryNetwork: internal_api
KeystoneAdminApiNetwork: ctlplane # Admin connection for Undercloud
KeystonePublicApiNetwork: internal_api
NeutronApiNetwork: internal_api
HeatApiNetwork: internal_api
NovaApiNetwork: internal_api
NovaMetadataNetwork: internal_api
NovaVncProxyNetwork: internal_api
SwiftMgmtNetwork: storage # Changed from storage_mgmt
SwiftProxyNetwork: storage
HorizonNetwork: internal_api
MemcachedNetwork: internal_api
RabbitMqNetwork: internal_api
RedisNetwork: internal_api
MysqlNetwork: internal_api
CephClusterNetwork: storage # Changed from storage_mgmt
CephPublicNetwork: storage
ControllerHostnameResolveNetwork: internal_api
ComputeHostnameResolveNetwork: internal_api
BlockStorageHostnameResolveNetwork: internal_api
ObjectStorageHostnameResolveNetwork: internal_api
CephStorageHostnameResolveNetwork: storage
noop.yaml 使用するとネットワークやポートが作成されないため、ストレージ管理ネットワークのサービスはプロビジョニングネットワークにデフォルト設定されます。ストレージ管理サービスをストレージネットワークなどの別のネットワークに移動するには ServiceNetMap で変更することができます。
6.3. ノード配置の制御
controller-0、controller-1などの固有のノード ID を割り当てる- カスタムのホスト名の割り当て
- 特定の IP アドレスの割り当て
- 特定の仮想 IP アドレスの割り当て
注記
6.3.1. 特定のノード ID の割り当て
controller-0、controller-1、compute-0、compute-1 などがあります。
ironic node-update <id> replace properties/capabilities='node:controller-0,boot_option:local'
node:controller-0 の機能をノードに割り当てます。0 から開始するユニークな連続インデックスを使用して、すべてのノードに対してこのパターンを繰り返します。特定のロール (コントローラー、コンピュート、各ストレージロール) にすべてのノードが同じようにタグ付けされるようにします。そうでない場合は、このケイパビリティーは Nova スケジューラーにより正しく照合されません。
scheduler_hints_env.yaml) を作成します。このファイルは、スケジューラーヒントを使用して、各ノードのケイパビリティーと照合します。以下に例を示します。
parameter_defaults:
ControllerSchedulerHints:
'capabilities:node': 'controller-%index%'
overcloud deploy command に scheduler_hints_env.yaml 環境ファイルを追加します。
- コントローラーノードの
ControllerSchedulerHints - コンピュートノードの
NovaComputeSchedulerHints - Block Storage ノードの
BlockStorageSchedulerHints - Object Storage ノードの
ObjectStorageSchedulerHints - Ceph Storage ノードの
CephStorageSchedulerHints
注記
compute、control など) ではなく、デプロイメントにデフォルトの baremetal フレーバーを使用します。以下に例を示します。
$ openstack overcloud deploy ... --control-flavor baremetal --compute-flavor baremetal ...
6.3.2. カスタムのホスト名の割り当て
rack2-row12) を定義する必要がある場合や、インベントリー ID を照合する必要がある場合、またはカスタムのホスト名が必要となるその他の状況において、カスタムのホスト名は便利です。
scheduler_hints_env.yaml ファイルなどの環境ファイルで HostnameMap パラメーターを使用します。以下に例を示します。
parameter_defaults:
ControllerSchedulerHints:
'capabilities:node': 'controller-%index%'
NovaComputeSchedulerHints:
'capabilities:node': 'compute-%index%'
HostnameMap:
overcloud-controller-0: overcloud-controller-prod-123-0
overcloud-controller-1: overcloud-controller-prod-456-0
overcloud-controller-2: overcloud-controller-prod-789-0
overcloud-compute-0: overcloud-compute-prod-abc-0
parameter_defaults セクションで HostnameMap を定義し、各マッピングは、HostnameFormat パラメーターを使用して Heat が定義する元のホスト名に設定します (例: overcloud-controller-0)。また、2 つ目の値は、ノードに指定するカスタムのホスト名 (例: overcloud-controller-prod-123-0) にします。
6.3.3. 予測可能な IP の割り当て
environments/ips-from-pool-all.yaml 環境ファイルを使用します。このファイルを stack ユーザーの templates ディレクトリーにコピーしてください。
$ cp /usr/share/openstack-tripleo-heat-templates/environments/ips-from-pool-all.yaml ~/templates/.
ips-from-pool-all.yaml ファイルには、主に 2 つのセクションがあります。
resource_registry の参照セットです。この参照では、director に対して、ノード種別のある特定のポートに特定の IP を使用するように指示を出します。適切なテンプレートの絶対パスを使用するように各リソースを編集してください。以下に例を示します。
OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external_from_pool.yaml OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api_from_pool.yaml OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_from_pool.yaml OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_from_pool.yaml OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant_from_pool.yaml
resource_registry のエントリーを削除するだけです。
- コントローラーノードの
ControllerIPs - コンピュートノードの
NovaComputeIPs - Ceph Storage ノードの
CephStorageIPs - Block Storage ノードの
BlockStorageIPs - Object Storage ノードの
SwiftStorageIPs
CephStorageIPs: storage: - 172.16.1.100 - 172.16.1.101 - 172.16.1.102 storage_mgmt: - 172.16.3.100 - 172.16.3.101 - 172.16.3.102
internal_api の割り当ては InternalApiAllocationPools の範囲外となるようにします。これにより、自動的に選択される IP アドレスと競合が発生しないようになります。また同様に、IP アドレスの割り当てが標準の予測可能な仮想 IP 配置 (「予測可能な仮想 IP の割り当て」を参照) または外部のロードバランシング (「外部の負荷分散機能の設定」を参照) のいずれでも、仮想 IP 設定と競合しないようにしてください。
openstack overcloud deploy コマンドで環境ファイルを指定してください。ネットワーク分離の機能を使用する場合には (「「ネットワークの分離」」を参照)、このファイルを network-isolation.yaml ファイルの後に追加します。以下に例を示します。
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e ~/templates/ips-from-pool-all.yaml [OTHER OPTIONS]
6.3.4. 予測可能な仮想 IP の割り当て
parameter_defaults セクションに仮想 IP のパラメーターを追加します。
parameter_defaults:
...
ControlFixedIPs: [{'ip_address':'192.168.201.101'}]
InternalApiVirtualFixedIPs: [{'ip_address':'172.16.0.9'}]
PublicVirtualFixedIPs: [{'ip_address':'10.1.1.9'}]
StorageVirtualFixedIPs: [{'ip_address':'172.18.0.9'}]
StorageMgmtVirtualFixedIPs: [{'ip_address':'172.19.0.9'}]
RedisVirtualFixedIPs: [{'ip_address':'172.16.0.8'}]
InternalApiAllocationPools の範囲外から、InternalApiVirtualFixedIPs の IP アドレスを 1 つ選択します。
6.4. コンテナー化されたコンピュートノードの設定
重要
docker.yaml: コンテナー化されているコンピュートノードを設定する主要な環境ファイルdocker-network.yaml: コンテナー化されたコンピュートノードのネットワークの環境ファイル (ネットワークの分離なし)docker-network-isolation.yaml: コンテナー化されたコンピュートノードのネットワークの環境ファイル (ネットワークの分離あり)
6.4.1. コンテナー化されたコンピュートの環境ファイル (docker.yaml) の検証
docker.yaml ファイルは、コンテナー化されたコンピュートノードの設定のための主要な環境ファイルです。このファイルには、resource_registry のエントリーが含まれます。
resource_registry: OS::TripleO::ComputePostDeployment: ../docker/compute-post.yaml OS::TripleO::NodeUserData: ../docker/firstboot/install_docker_agents.yaml
- OS::TripleO::NodeUserData
- 初回起動時にカスタムの設定を使用する Heat テンプレートを提供します。今回の場合は、初回起動時に、
openstack-heat-docker-agentsコンテナーをコンピュートノードにインストールします。このコンテナーは、初期化スクリプトのセットを提供して、コンテナー化されたコンピュートノードと Heat フックを設定して director と通信します。 - OS::TripleO::ComputePostDeployment
- コンピュートノードに対するデプロイ後の設定リソースが含まれる Heat テンプレートを提供します。これには、Puppet に
tagsセットを提供するソフトウェア設定リソースが含まれます。ComputePuppetConfig: type: OS::Heat::SoftwareConfig properties: group: puppet options: enable_hiera: True enable_facter: False tags: package,file,concat,file_line,nova_config,neutron_config,neutron_agent_ovs,neutron_plugin_ml2 inputs: - name: tripleo::packages::enable_install type: Boolean default: True outputs: - name: result config: get_file: ../puppet/manifests/overcloud_compute.ppこれらのタグは、Puppet モジュールをopenstack-heat-docker-agentsコンテナーに渡すように定義します。
docker.yaml ファイルには、NovaImage と呼ばれる parameter が含まれており、コンピュートノードをプロビジョニングする際に overcloud-full イメージを異なるイメージ (atomic-image) に置き換えます。このような新規イメージをアップロードする方法は、「Atomic Host のイメージのアップロード」 を参照してください。
docker.yaml ファイルには、Docker レジストリーとイメージが コンピュートノードサービスを使用するように定義する parameter_defaults セクションも含まれます。このセクションを変更して、デフォルトの registry.access.redhat.com の代わりにローカルのレジストリーを使用するように指定することもできます。ローカルのレジストリーの設定方法は 「ローカルのレジストリーの使用」 を参照してください。
6.4.2. Atomic Host のイメージのアップロード
atomic-image としてイメージストアにインポートする Red Hat Enterprise Linux 7 Atomic Host のクラウドイメージのコピーが必要です。これは、コンピュートノードにはオーバークラウド作成のプロビジョニングの際に、ベースの OS イメージが必要なためです。
stack ユーザーのホームディレクトリーの images サブディレクトリーに保存します。
stack ユーザーとして director にイメージをインポートします。
$ glance image-create --name atomic-image --file ~/images/rhel-atomic-cloud-7.2-12.x86_64.qcow2 --disk-format qcow2 --container-format bare
$ glance image-list +--------------------------------------+------------------------+ | ID | Name | +--------------------------------------+------------------------+ | 27b5bad7-f8b2-4dd8-9f69-32dfe84644cf | atomic-image | | 08c116c6-8913-427b-b5b0-b55c18a01888 | bm-deploy-kernel | | aec4c104-0146-437b-a10b-8ebc351067b9 | bm-deploy-ramdisk | | 9012ce83-4c63-4cd7-a976-0c972be747cd | overcloud-full | | 376e95df-c1c1-4f2a-b5f3-93f639eb9972 | overcloud-full-initrd | | 0b5773eb-4c64-4086-9298-7f28606b68af | overcloud-full-vmlinuz | +--------------------------------------+------------------------+
6.4.3. ローカルのレジストリーの使用
$ sudo docker pull registry.access.redhat.com/openstack-nova-compute:latest $ sudo docker pull registry.access.redhat.com/openstack-data:latest $ sudo docker pull registry.access.redhat.com/openstack-nova-libvirt:latest $ sudo docker pull registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest $ sudo docker pull registry.access.redhat.com/openstack-openvswitch-vswitchd:latest $ sudo docker pull registry.access.redhat.com/openstack-openvswitch-db-server:latest $ sudo docker pull registry.access.redhat.com/openstack-heat-docker-agents:latest
$ sudo docker tag registry.access.redhat.com/openstack-nova-compute:latest localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest $ sudo docker tag registry.access.redhat.com/openstack-data:latest localhost:8787/registry.access.redhat.com/openstack-data:latest $ sudo docker tag registry.access.redhat.com/openstack-nova-libvirt:latest localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest $ sudo docker tag registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest $ sudo docker tag registry.access.redhat.com/openstack-openvswitch-vswitchd:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest $ sudo docker tag registry.access.redhat.com/openstack-openvswitch-db-server:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest $ sudo docker tag registry.access.redhat.com/openstack-heat-docker-agents:latest localhost:8787/registry.access.redhat.com/openstack-heat-docker-agents:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-data:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-heat-docker-agents:latest
docker.yaml 環境ファイルのコピーを templates サブディレクトリーに作成します。
$ cp /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml ~/templates/.
resource_registry が絶対パスを使用するように変更します。
resource_registry: OS::TripleO::ComputePostDeployment: /usr/share/openstack-tripleo-heat-templates/docker/compute-post.yaml OS::TripleO::NodeUserData: /usr/share/openstack-tripleo-heat-templates/docker/firstboot/install_docker_agents.yaml
parameter_defaults の DockerNamespace をお使いのレジストリーの URL に変更します。また、DockerNamespaceIsRegistry を true に設定します。以下に例を示します。
parameter_defaults: DockerNamespace: registry.example.com:8787/registry.access.redhat.com DockerNamespaceIsRegistry: true
6.4.4. オーバークラウドのデプロイメントへの環境ファイルの追加
openstack overcloud deploy のコマンドと合わせて、コンテナー化されたコンピュートノードの主要な環境ファイル (docker.yaml) とネットワークの環境ファイル (docker-network.yaml) を追加します。
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-network.yaml [OTHER OPTIONS] ...
docker-network-isolation.yaml) も必要です。「ネットワークの分離」からのネットワーク分離ファイルの前に、これらのファイルを追加してください。以下に例を示します。
openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-network-isolation.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml [OTHER OPTIONS] ...
6.5. 外部の負荷分散機能の設定
6.6. IPv6 ネットワークの設定
6.7. NFS ストレージの設定
/usr/share/openstack-tripleo-heat-templates/environments/ には一連の環境ファイルが格納されています。これらは、director で作成したオーバークラウドでサポートされている一部の機能のカスタム設定に役立つ環境テンプレートです。これには、ストレージ設定に有用な環境ファイルが含まれます。このファイルは、/usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml に配置されています。このファイルを stack ユーザーのテンプレートディレクトリーにコピーしてください。
$ cp /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml ~/templates/.
- CinderEnableIscsiBackend
- iSCSI バックエンドを有効にするパラメーター。
falseに設定してください。 - CinderEnableRbdBackend
- Ceph Storage バックエンドを有効にするパラメーター。
falseに設定してください。 - CinderEnableNfsBackend
- NFS バックエンドを有効にするパラメーター。
trueに設定してください。 - NovaEnableRbdBackend
- Nova エフェメラルストレージ用に Ceph Storage を有効にするパラメーター。
falseに設定します。 - GlanceBackend
- Glance に使用するバックエンドを定義するパラメーター。イメージ用にファイルベースストレージを使用するには
fileに設定してください。オーバークラウドは、Glance 用にマウントされた NFS 共有にこれらのファイルを保存します。 - CinderNfsMountOptions
- ボリュームストレージ用の NFS マウントオプション
- CinderNfsServers
- ボリュームストレージ用にマウントする NFS 共有 (例:
192.168.122.1:/export/cinder) - GlanceFilePcmkManage
- イメージストレージ用の共有を管理するための Pacemaker を有効にするパラメーター。無効に設定されている場合には、オーバークラウドはコントローラーノードのファイルシステムにイメージを保管します。
trueに設定してください。 - GlanceFilePcmkFstype
- Pacemaker がイメージストレージ用に使用するファイルシステムの種別を定義するパラメーター。
nfsに設定します。 - GlanceFilePcmkDevice
- イメージストレージをマウントするための NFS 共有 (例:
192.168.122.1:/export/glance) - GlanceFilePcmkOptions
- イメージストレージ用の NFS マウントオプション
parameter_defaults: CinderEnableIscsiBackend: false CinderEnableRbdBackend: false CinderEnableNfsBackend: true NovaEnableRbdBackend: false GlanceBackend: 'file' CinderNfsMountOptions: 'rw,sync' CinderNfsServers: '192.0.2.230:/cinder' GlanceFilePcmkManage: true GlanceFilePcmkFstype: 'nfs' GlanceFilePcmkDevice: '192.0.2.230:/glance' GlanceFilePcmkOptions: 'rw,sync,context=system_u:object_r:glance_var_lib_t:s0'
重要
/var/lib ディレクトリーにアクセスできるようにするには、GlanceFilePcmkOptions パラメーターに context=system_u:object_r:glance_var_lib_t:s0 と記載します。この SELinux コンテキストがない場合には、Glance はマウントポイントへの書き込みに失敗することになります。
6.8. Ceph Storage の設定
- Ceph Storage Cluster でのオーバークラウドの作成
- director には、オーバークラウドの作成中に Ceph Storage Cluster を作成する機能があります。director は、データの格納に Ceph OSD を使用する Ceph Storage ノードセットを作成します。さらに、director は、オーバークラウドのコントローラーノードに Ceph Monitor サービスをインストールします。これは、組織が高可用性のコントローラーノードが 3 つあるオーバークラウドを作成する場合は、Ceph Monitor も高可用性サービスになることになります。
- 既存の Ceph Storage のオーバークラウドへの統合
- 既存の Ceph Storage Cluster がある場合には、オーバークラウドのデプロイメント時に統合できます。これは、オーバークラウドの設定以外のクラスターの管理やスケーリングが可能であることを意味します。
6.9. サードパーティーのストレージの設定
- Dell Storage Center
- Block Storage (cinder) サービス用に単一の Dell Storage Center バックエンドをデプロイします。環境ファイルは
/usr/share/openstack-tripleo-heat-templates/environments/cinder-dellsc-config.yamlにあります。完全な設定情報については『Dell Storage Center Back End Guide』を参照してください。 - Dell EqualLogic
- Block Storage (cinder) サービス用に単一の Dell EqualLogic バックエンドをデプロイします。環境ファイルは
/usr/share/openstack-tripleo-heat-templates/environments/cinder-eqlx-config.yamlにあります。完全な設定情報については『Dell EqualLogic Back End Guide』を参照してください。 - NetApp ブロックストレージ
- Block Storage (cinder) サービス用に NetApp ストレージアプライアンスをバックエンドとしてデプロイします。環境ファイルは
/usr/share/openstack-tripleo-heat-templates/environments/cinder-dellsc-config.yaml/cinder-netapp-config.yamlにあります。完全な設定情報については『NetApp Block Storage Back End Guide』を参照してください。
6.10. オーバークラウドのタイムゾーンの設定
TimeZone パラメーターを使用して、オーバークラウドのデプロイメントのタイムゾーンを設定することができます。TimeZone パラメーターを空にすると、オーバークラウドはデフォルトの UTC 時間に設定されます。
Japan に設定する場合には、/usr/share/zoneinfo の内容を確認して適切なエントリーを特定してください。
$ ls /usr/share/zoneinfo/ Africa Asia Canada Cuba EST GB GMT-0 HST iso3166.tab Kwajalein MST NZ-CHAT posix right Turkey UTC Zulu America Atlantic CET EET EST5EDT GB-Eire GMT+0 Iceland Israel Libya MST7MDT Pacific posixrules ROC UCT WET Antarctica Australia Chile Egypt Etc GMT Greenwich Indian Jamaica MET Navajo Poland PRC ROK Universal W-SU Arctic Brazil CST6CDT Eire Europe GMT0 Hongkong Iran Japan Mexico NZ Portugal PST8PDT Singapore US zone.tab
Japan はこの結果では個別のタイムゾーンファイルですが、Africa は追加のタイムゾーンファイルが含まれるディレクトリーとなっています。
$ ls /usr/share/zoneinfo/Africa/ Abidjan Algiers Bamako Bissau Bujumbura Ceuta Dar_es_Salaam El_Aaiun Harare Kampala Kinshasa Lome Lusaka Maseru Monrovia Niamey Porto-Novo Tripoli Accra Asmara Bangui Blantyre Cairo Conakry Djibouti Freetown Johannesburg Khartoum Lagos Luanda Malabo Mbabane Nairobi Nouakchott Sao_Tome Tunis Addis_Ababa Asmera Banjul Brazzaville Casablanca Dakar Douala Gaborone Juba Kigali Libreville Lubumbashi Maputo Mogadishu Ndjamena Ouagadougou Timbuktu Windhoek
Japan に設定します。
parameter_defaults: TimeZone: 'Japan'
$ openstack overcloud deploy --templates -e timezone.yaml
6.11. オーバークラウドの SSL/TLS の有効化
注記
SSL/TLS の有効化
enable-tls.yaml の環境ファイルをコピーします。
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/enable-tls.yaml ~/templates/.
parameter_defaults:
- SSLCertificate:
- 証明書ファイルのコンテンツを
SSLCertificateパラメーターにコピーします。以下に例を示します。parameter_defaults: SSLCertificate: | -----BEGIN CERTIFICATE----- MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV ... sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp -----END CERTIFICATE-----重要
この認証局のコンテンツで、新しく追加する行は、すべて同じレベルにインデントする必要があります。 - SSLKey:
- 以下のように、秘密鍵の内容を
SSLKeyパラメーターにコピーします。parameter_defaults: ... SSLKey: | -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAqVw8lnQ9RbeI1EdLN5PJP0lVO9hkJZnGP6qb6wtYUoy1bVP7 ... ctlKn3rAAdyumi4JDjESAXHIKFjJNOLrBmpQyES4XpZUC7yhqPaU -----END RSA PRIVATE KEY-----重要
この秘密鍵のコンテンツにおいて、新しく追加する行はすべて同じ ID レベルに指定する必要があります。 - EndpointMap:
EndpointMapには、HTTPS および HTTP 通信を使用したサービスのマッピングが含まれます。SSL 通信に DNS を使用する場合は、このセクションをデフォルト設定のままにしておいてください。ただし、SSL 証明書の共通名に IP アドレスを使用する場合は (「付録A SSL/TLS 証明書の設定」参照)、CLOUDNAMEのインスタンスをすべてIP_ADDRESSに置き換えてください。これには以下のコマンドを使用してください。$ sed -i 's/CLOUDNAME/IP_ADDRESS/' ~/templates/enable-tls.yaml
重要
IP_ADDRESSまたはCLOUDNAMEは、実際の値に置き換えないでください。Heat により、オーバークラウドの作成時にこれらの変数が適切な値に置き換えられます。
resource_registry:
- OS::TripleO::NodeTLSData:
OS::TripleO::NodeTLSData:のリソースのパスを絶対パスに変更します。resource_registry: OS::TripleO::NodeTLSData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/tls-cert-inject.yaml
ルート証明書の注入
inject-trust-anchor.yaml 環境ファイルをコピーします。
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/.
parameter_defaults:
- SSLRootCertificate:
SSLRootCertificateパラメーターにルート認証局ファイルの内容をコピーします。以下に例を示します。parameter_defaults: SSLRootCertificate: | -----BEGIN CERTIFICATE----- MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV ... sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp -----END CERTIFICATE-----重要
この認証局のコンテンツで、新しく追加する行は、すべて同じレベルにインデントする必要があります。
resource_registry:
- OS::TripleO::NodeTLSCAData:
OS::TripleO::NodeTLSCAData:のリソースのパスを絶対パスに変更します。resource_registry: OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yaml
DNS エンドポイントの設定
~/templates/cloudname.yaml) を作成して、オーバークラウドのエンドポイントのホスト名を定義します。以下のパラメーターを使用してください。
parameter_defaults:
- 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
6.12. オーバークラウドの登録
方法 1: コマンドライン
openstack overcloud deploy) は、一連のオプションを使用して登録情報を定義します。「オーバークラウドのパラメーター設定」の表には、これらのオプションと説明についてまとめています。これらのオプションは、「7章オーバークラウドの作成」でデプロイメントのコマンドを実行する時に追加してください。以下に例を示します。
# openstack overcloud deploy --templates --rhel-reg --reg-method satellite --reg-sat-url http://example.satellite.com --reg-org MyOrg --reg-activation-key MyKey --reg-force [...]
方法 2: 環境ファイル
$ cp -r /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration ~/templates/.
~/templates/rhel-registration/environment-rhel-registration.yaml を編集し、登録の方法と詳細に応じて以下の値を変更します。
- rhel_reg_method
- 登録の方法を選択します。
portal、satellite、disableのいずれかです。 - rhel_reg_type
- 登録するユニットの種別。
systemとして登録するには空欄のままにします。 - rhel_reg_auto_attach
- 互換性のあるサブスクリプションをこのシステムに自動的にアタッチします。
trueに設定して有効にするか、falseに設定して無効にします。 - rhel_reg_service_level
- 自動アタッチメントに使用するサービスレベル
- rhel_reg_release
- このパラメーターを使用して、自動アタッチメント用のリリースバージョンを設定します。Red Hat Subscription Manager からのデフォルトを使用するには、空欄のままにします。
- rhel_reg_pool_id
- 使用するサブスクリプションプール ID。サブスクリプションを自動でアタッチしない場合に使用します。
- rhel_reg_sat_url
- オーバークラウドノードを登録する Satellite サーバーのベース URL。このパラメーターには、HTTPS URL ではなく、Satellite の HTTP URL を使用します。たとえば、
https://satellite.example.comではなくhttp://satellite.example.comを使用します。オーバークラウドの作成プロセスではこの URL を使用して、どのサーバーが Red Hat Satellite 5 または Red Hat Satellite 6 サーバーであるかを判断します。Red Hat Satellite 6 サーバーの場合は、オーバークラウドはkatello-ca-consumer-latest.noarch.rpmファイルを取得してsubscription-managerに登録し、katello-agentをインストールします。Red Hat Satellite 5 サーバーの場合はオーバークラウドはRHN-ORG-TRUSTED-SSL-CERTファイルを取得してrhnreg_ksに登録します。 - rhel_reg_server_url
- 使用するサブスクリプションサービスのホスト名を指定します。デフォルトは、カスタマーポータルのサブスクリプション管理、
subscription.rhn.redhat.comです。このオプションを使用しない場合、システムはカスタマーポータルのサブスクリプション管理に登録されます。サブスクリプションサーバーの URL は、https://hostname:port/prefixの形式を使用します。 - rhel_reg_base_url
- 更新を受信するためのコンテンツ配信サーバーのホスト名を指定します。デフォルトは
https://cdn.redhat.comです。Satellite 6 は独自のコンテンツをホストするため、URL は Satellite 6 で登録されているシステムに使用する必要があります。コンテンツのベース URL はhttps://hostname:port/prefixの形式を使用します。 - rhel_reg_org
- 登録に使用する組織
- rhel_reg_environment
- 選択した組織内で使用する環境
- rhel_reg_repos
- 有効化するリポジトリーのコンマ区切りリスト。有効化するリポジトリーについては、「リポジトリーの要件」を参照してください。
- rhel_reg_activation_key
- 登録に使用するアクティベーションキー
- rhel_reg_user, rhel_reg_password
- 登録用のユーザー名およびパスワード。可能な場合には、登録用のアクティベーションキーを使用します。
- rhel_reg_machine_name
- マシン名。ノードのホスト名を使用するには、空欄のままにします。
- rhel_reg_force
- 登録のオプションを強制するには
trueに設定します (例:ノードの再登録時など)。 - rhel_reg_sat_repo
katello-agentなどの Red Hat Satellite 6 の管理ツールが含まれるリポジトリー (例:rhel-7-server-satellite-tools-6.1-rpms)。
openstack overcloud deploy) は、-e オプションを使用して環境ファイルを追加します。~/templates/rhel-registration/environment-rhel-registration.yaml と ~/templates/rhel-registration/rhel-registration-resource-registry.yaml の両方を追加します。以下に例を示します。
$ openstack overcloud deploy --templates [...] -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml -e /home/stack/templates/rhel-registration/rhel-registration-resource-registry.yaml
重要
OS::TripleO::NodeExtraConfig Heat リソースとして設定されます。これは、このリソースを登録のみに使用できることを意味します。詳しくは、「オーバークラウドの設定前のカスタマイズ」を参照してください。
6.13. 初回起動での設定のカスタマイズ
cloud-init でこの設定をアーカイブします。アーカイブした内容は、OS::TripleO::NodeUserData リソース種別を使用して呼び出すことが可能です。
/home/stack/templates/nameserver.yaml) を作成する必要があります。このテンプレートは、固有のネームサーバーが指定された各ノードの resolv.conf を追加するスクリプトを実行します。OS::TripleO::MultipartMime リソース種別を使用して、この設定スクリプトを送信します。
heat_template_version: 2014-10-16
description: >
Extra hostname configuration
resources:
userdata:
type: OS::Heat::MultipartMime
properties:
parts:
- config: {get_resource: nameserver_config}
nameserver_config:
type: OS::Heat::SoftwareConfig
properties:
config: |
#!/bin/bash
echo "nameserver 192.168.1.1" >> /etc/resolv.conf
outputs:
OS::stack_id:
value: {get_resource: userdata}
OS::TripleO::NodeUserData リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/templates/firstboot.yaml) を作成します。
resource_registry: OS::TripleO::NodeUserData: /home/stack/templates/nameserver.yaml
$ openstack overcloud deploy --templates -e /home/stack/templates/firstboot.yaml
-e は、オーバークラウドのスタックに環境ファイルを適用します。
重要
OS::TripleO::NodeUserData は、1 つの Heat テンプレートに対してのみ登録することが可能です。それ以外に使用すると、最初に使用した Heat テンプレートの内容が上書きされてしまいます。
6.14. オーバークラウドの設定前のカスタマイズ
- OS::TripleO::ControllerExtraConfigPre
- Puppet のコア設定前にコントローラーノードに適用される追加の設定
- OS::TripleO::ComputeExtraConfigPre
- Puppet のコア設定前にコンピュートノードに適用される追加の設定
- OS::TripleO::CephStorageExtraConfigPre
- Puppet のコア設定前に CephStorage ノードに適用される追加の設定
- OS::TripleO::NodeExtraConfig
- Puppet のコア設定前に全ノードに適用される追加の設定
/home/stack/templates/nameserver.yaml) を作成します。このテンプレートは、変数のネームサーバーが指定された各ノードの resolv.conf を追加するスクリプトを実行します。
heat_template_version: 2014-10-16
description: >
Extra hostname configuration
parameters:
server:
type: string
nameserver_ip:
type: string
resources:
ExtraPreConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
config:
str_replace:
template: |
#!/bin/sh
echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf
params:
_NAMESERVER_IP_: {get_param: nameserver_ip}
ExtraPreDeployment:
type: OS::Heat::SoftwareDeployment
properties:
config: {get_resource: ExtraPreConfig}
server: {get_param: server}
actions: ['CREATE','UPDATE']
outputs:
deploy_stdout:
description: Deployment reference, used to trigger pre-deploy on changes
value: {get_attr: [ExtraPreDeployment, deploy_stdout]}
重要
servers パラメーターは、設定を適用するサーバーで、親テンプレートにより提供されます。このパラメーターは、すべての事前設定テンプレートで必須です。
OS::TripleO::NodeExtraConfig リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/templates/pre_config.yaml) を作成します。
resource_registry: OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
$ openstack overcloud deploy --templates -e /home/stack/templates/pre_config.yaml
重要
6.15. オーバークラウドの設定後のカスタマイズ
OS::TripleO::NodeExtraConfigPost リソースを使用して、標準の OS::Heat::SoftwareConfig 種別を使用した設定を適用します。これにより、メインのオーバークラウド設定が完了してから、追加の設定が適用されます。
/home/stack/templates/nameserver.yaml) を作成します。このテンプレートは、変数のネームサーバーが指定された各ノードの resolv.conf を追加するスクリプトを実行します。
heat_template_version: 2014-10-16
description: >
Extra hostname configuration
parameters:
servers:
type: json
nameserver_ip:
type: string
resources:
ExtraConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
config:
str_replace:
template: |
#!/bin/sh
echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf
params:
_NAMESERVER_IP_: {get_param: nameserver_ip}
ExtraDeployments:
type: OS::Heat::SoftwareDeployments
properties:
servers: {get_param: servers}
config: {get_resource: ExtraConfig}
actions: ['CREATE','UPDATE']
重要
servers パラメーターは、設定を適用するサーバー一覧で、親テンプレートにより提供されます。このパラメーターは、 すべての OS::TripleO::NodeExtraConfigPost テンプレートで必須です。
OS::TripleO::NodeExtraConfigPost: リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/templates/post_config.yaml) を作成します。
resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
$ openstack overcloud deploy --templates -e /home/stack/templates/post_config.yaml
重要
OS::TripleO::NodeExtraConfigPost は、1 つの Heat テンプレートに対してのみ登録することが可能です。複数で使用すると、使用する Heat テンプレートが上書きされます。
6.16. Puppet 設定データのカスタマイズ
- ExtraConfig
- 全ノードに追加する設定
- controllerExtraConfig
- コントローラーノードに追加する設定
- NovaComputeExtraConfig
- コンピュートノードに追加する設定
- BlockStorageExtraConfig
- ブロックストレージノードに追加する設定
- ObjectStorageExtraConfig
- オブジェクトストレージノードに追加する設定
- CephStorageExtraConfig
- Ceph ストレージノードに追加する設定
parameter_defaults セクションにこれらのパラメーターが記載された環境ファイルを作成します。たとえば、コンピュートホストに確保するメモリーを 1024 MB に増やして、VNC キーマップを日本語に設定するには、以下のように設定します。
parameter_defaults:
NovaComputeExtraConfig:
nova::compute::reserved_host_memory: 1024
nova::compute::vnc_keymap: ja
openstack overcloud deploy を実行する際に、この環境ファイルを含めます。
重要
6.17. カスタムの Puppet 設定の適用
motd をインストールします。このインストールのプロセスでは、まず Heat テンプレート (/home/stack/templates/custom_puppet_config.yaml) を作成して、Puppet 設定を起動します。
heat_template_version: 2014-10-16
description: >
Run Puppet extra configuration to set new MOTD
parameters:
servers:
type: json
resources:
ExtraPuppetConfig:
type: OS::Heat::SoftwareConfig
properties:
config: {get_file: motd.pp}
group: puppet
options:
enable_hiera: True
enable_facter: False
ExtraPuppetDeployments:
type: OS::Heat::SoftwareDeployments
properties:
config: {get_resource: ExtraPuppetConfig}
servers: {get_param: servers}
/home/stack/templates/motd.pp を含め、ノードが設定されるようにこのファイルを渡します。motd.pp ファイル自体には、motd をインストールして設定する Puppet クラスが含まれています。
OS::TripleO::NodeExtraConfigPost: リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/templates/puppet_post_config.yaml) を作成します。
resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/custom_puppet_config.yaml
$ openstack overcloud deploy --templates -e /home/stack/templates/puppet_post_config.yaml
motd.pp からの設定がオーバークラウド内の全ノードに適用されます。
6.18. カスタムのコア Heat テンプレートの使用
/usr/share/openstack-tripleo-heat-templates にある Heat テンプレートコレクションを stack ユーザーのテンプレートディレクトリーにコピーします。
$ cp -r /usr/share/openstack-tripleo-heat-templates ~/templates/my-overcloud
openstack overcloud deploy を実行する際には、--templates オプションを使用してローカルのテンプレートディレクトリーを指定します。これは、本シナリオの後半に記載しています (7章オーバークラウドの作成を参照)。
注記
--templates オプションを使用すると、director はデフォルトのテンプレートディレクトリー (/usr/share/openstack-tripleo-heat-templates) を使用します。
重要
/usr/share/openstack-tripleo-heat-templates にあるオリジナルのコピーとの間に相違が生じる可能性があります。Red Hat は、Heat テンプレートコレクションを変更する代わりに以下の項に記載する方法を使用することを推奨します。
git などのバージョン管理システムを使用して、テンプレートに加えられた変更をトラッキングすべきです。
第7章 オーバークラウドの作成
openstack overcloud deploy コマンドを実行して OpenStack 環境を作成します。このコマンドを実行する前に、キーオプションやカスタムの環境ファイルの追加方法を熟知するようにしてください。本章では、openstack overcloud deploy コマンドと、それに関連するオプションについて説明します。
警告
openstack overcloud deploy を実行しないでください。バックグラウンドのプロセスとして開始された場合にはオーバークラウドの作成は途中で停止してしまう可能性があります。
7.1. オーバークラウドのパラメーター設定
openstack overcloud deploy コマンドを使用する際の追加パラメーターを一覧表示します。
表7.1 デプロイメントパラメーター
|
パラメーター
|
説明
|
例
|
|---|---|---|
|
--templates [TEMPLATES]
|
デプロイする Heat テンプレートが格納されているディレクトリー。空欄にした場合には、コマンドはデフォルトのテンプレートの場所である
/usr/share/openstack-tripleo-heat-templates/ を使用します。
|
~/templates/my-overcloud
|
|
--stack STACK
|
作成または更新するスタックの名前
|
overcloud
|
|
-t [TIMEOUT], --timeout [TIMEOUT]
|
デプロイメントのタイムアウト (分単位)
|
240
|
|
--control-scale [CONTROL_SCALE]
|
スケールアウトするコントローラーノード数
|
3
|
|
--compute-scale [COMPUTE_SCALE]
|
スケールアウトするコンピュートノード数
|
3
|
|
--ceph-storage-scale [CEPH_STORAGE_SCALE]
|
スケールアウトする Ceph Storage ノードの数
|
3
|
|
--block-storage-scale [BLOCK_STORAGE_SCALE]
|
スケールアウトする Cinder ノード数
|
3
|
|
--swift-storage-scale [SWIFT_STORAGE_SCALE]
|
スケールアウトする Swift ノード数
|
3
|
|
--control-flavor [CONTROL_FLAVOR]
|
コントローラーノードに使用するフレーバー
|
control
|
|
--compute-flavor [COMPUTE_FLAVOR]
|
コンピュートノードに使用するフレーバー
|
compute
|
|
--ceph-storage-flavor [CEPH_STORAGE_FLAVOR]
|
Ceph Storage ノードに使用するフレーバー
|
ceph-storage
|
|
--block-storage-flavor [BLOCK_STORAGE_FLAVOR]
|
Cinder ノードに使用するフレーバー
|
cinder-storage
|
|
--swift-storage-flavor [SWIFT_STORAGE_FLAVOR]
|
Swift Storage ノードに使用するフレーバー
|
swift-storage
|
|
--neutron-flat-networks [NEUTRON_FLAT_NETWORKS]
|
(非推奨) フラットなネットワークが neutron プラグインで設定されるように定義します。デフォルトは「datacentre」に設定され、外部ネットワークの作成が許可されます。
|
datacentre
|
|
--neutron-physical-bridge [NEUTRON_PHYSICAL_BRIDGE]
|
(非推奨) 各ハイパーバイザーで作成する Open vSwitch ブリッジ。デフォルト値は「br-ex」で、通常この値は変更する必要はないはずです。
|
br-ex
|
|
--neutron-bridge-mappings [NEUTRON_BRIDGE_MAPPINGS]
|
(非推奨) 使用する論理ブリッジから物理ブリッジへのマッピング。ホスト (br-ex) の外部ブリッジを物理名 (datacentre) にマッピングするようにデフォルト設定されています。これは、デフォルトの Floating ネットワークに使用されます。
|
datacentre:br-ex
|
|
--neutron-public-interface [NEUTRON_PUBLIC_INTERFACE]
|
(非推奨) ネットワークノード向けにインターフェースを br-ex にブリッジするインターフェースを定義します。
|
nic1、eth0
|
|
--neutron-network-type [NEUTRON_NETWORK_TYPE]
|
(非推奨) Neutron のテナントネットワーク種別
|
gre または vxlan
|
|
--neutron-tunnel-types [NEUTRON_TUNNEL_TYPES]
|
(非推奨) neutron テナントネットワークのトンネリング種別。複数の値を指定するには、コンマ区切りの文字列を使用します。
|
'vxlan' 'gre,vxlan'
|
|
--neutron-tunnel-id-ranges [NEUTRON_TUNNEL_ID_RANGES]
|
(非推奨) テナントネットワークの割り当てに使用できる GRE トンネリングの ID 範囲
|
1:1000
|
|
--neutron-vni-ranges [NEUTRON_VNI_RANGES]
|
(非推奨) テナントネットワークの割り当てに使用できる VXLAN VNI の ID 範囲
|
1:1000
|
|
--neutron-disable-tunneling
|
(非推奨) VLAN で区切られたネットワークまたは neutron でのフラットネットワークを使用するためにトンネリングを無効化します。
| |
|
--neutron-network-vlan-ranges [NEUTRON_NETWORK_VLAN_RANGES]
|
(非推奨) サポートされる Neutron ML2 および Open vSwitch VLAN マッピングの範囲。デフォルトでは、物理ネットワーク「datacentre」上の VLAN を許可するように設定されています。
|
datacentre:1:1000
|
|
--neutron-mechanism-drivers [NEUTRON_MECHANISM_DRIVERS]
|
(非推奨) neutron テナントネットワークのメカニズムドライバー。デフォルトでは、「openvswitch」に設定されており、複数の値を指定するにはコンマ区切りの文字列を使用します。
|
'openvswitch,l2population'
|
|
--libvirt-type [LIBVIRT_TYPE]
|
ハイパーバイザーに使用する仮想化タイプ
|
kvm、qemu
|
|
--ntp-server [NTP_SERVER]
|
時刻の同期に使用する Network Time Protocol (NTP) サーバー。コンマ区切りリストで複数の NTP サーバーを指定することも可能です (例:
--ntp-server 0.centos.pool.org,1.centos.pool.org)。高可用性クラスターのデプロイメントの場合には、コントローラーが一貫して同じタイムソースを参照することが必須となります。標準的な環境には、確立された慣行によって、NTP タイムソースがすでに指定されている可能性がある点に注意してください。
|
pool.ntp.org
|
|
--no-proxy [NO_PROXY]
|
環境変数 no_proxy のカスタム値を定義します。これにより、プロキシー通信からの特定のドメイン拡張は除外されます。
| |
|
--overcloud-ssh-user OVERCLOUD_SSH_USER
|
オーバークラウドノードにアクセスする SSH ユーザーを定義します。通常、SSH アクセスは
heat-admin ユーザーで実行されます。
|
ocuser
|
|
-e [EXTRA HEAT TEMPLATE], --extra-template [EXTRA HEAT TEMPLATE]
|
オーバークラウドデプロイメントに渡す追加の環境ファイル。複数回指定することが可能です。
openstack overcloud deploy コマンドに渡す環境ファイルの順序が重要である点に注意してください。たとえば、逐次的に渡される各環境ファイルは、前の環境ファイルのパラメーターを上書きします。
|
-e ~/templates/my-config.yaml
|
|
--validation-errors-fatal
|
オーバークラウドの作成プロセスでは、一式のデプロイメントチェックが行われます。このオプションは、事前デプロイメントチェックで何らかのエラーが発生した場合に存在します。どのようなエラーが発生してもデプロイメントが失敗するので、このオプションを使用することを推奨します。
| |
|
--validation-warnings-fatal
|
オーバークラウドの作成プロセスで、デプロイ前に一連のチェックを行います。このオプションは、デプロイ前のチェックでクリティカルではない警告が発生した場合に存在します。
| |
|
--dry-run
|
オーバークラウドに対する検証チェックを実行しますが、オーバークラウドを実際には作成しません。
| |
|
--rhel-reg
|
カスタマーポータルまたは Satellite 6 にオーバークラウドノードを登録します。
| |
|
--reg-method
|
オーバークラウドノードに使用する登録メソッド
|
Red Hat Satellite 6 または Red Hat Satellite 5 は
satellite、カスタマーポータルは portal
|
|
--reg-org [REG_ORG]
|
登録に使用する組織
| |
|
--reg-force
|
すでに登録済みの場合でもシステムを登録します。
| |
|
--reg-sat-url [REG_SAT_URL]
|
オーバークラウドノードを登録する Satellite サーバーのベース URL。このパラメーターには、HTTPS URL ではなく、Satellite の HTTP URL を使用します。たとえば、
https://satellite.example.com ではなく http://satellite.example.com を使用します。オーバークラウドの作成プロセスではこの URL を使用して、どのサーバーが Red Hat Satellite 5 または Red Hat Satellite 6 サーバーであるかを判断します。Red Hat Satellite 6 サーバーの場合は、オーバークラウドは katello-ca-consumer-latest.noarch.rpm ファイルを取得して subscription-manager に登録し、katello-agent をインストールします。Red Hat Satellite 5 サーバーの場合はオーバークラウドは RHN-ORG-TRUSTED-SSL-CERT ファイルを取得して rhnreg_ks に登録します。
| |
|
--reg-activation-key [REG_ACTIVATION_KEY]
|
登録に使用するアクティベーションキー
| |
注記
$ openstack help overcloud deploy
7.2. オーバークラウド作成時の環境ファイルの追加
-e を指定して、環境ファイルを追加します。必要に応じていくつでも環境ファイルを追加することができますが、後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順番は重要です。以下の一覧は、環境ファイルの順序の例です。
- Heat テンプレートコレクションの初期化ファイル (
environments/network-isolation.yaml) を含むネットワーク分離ファイルと、次にカスタムの NIC 設定ファイル。ネットワークの分離についての詳しい情報は、「ネットワークの分離」を参照してください。 - 外部のロードバランシングの環境ファイル
- Ceph Storage、NFS、iSCSI などのストレージ環境ファイル
- Red Hat CDN または Satellite 登録用の環境ファイル
- その他のカスタム環境ファイル
-e オプションを使用してオーバークラウドに追加した環境ファイルはいずれも、オーバークラウドのスタック定義の一部となります。director は、「8章オーバークラウド作成後のタスクの実行」に記載の再デプロイおよびデプロイ後の機能にこれらの環境ファイルを必要とします。これらのファイルが含まれていない場合には、オーバークラウドが破損する可能性があります。
- カスタムの環境ファイルおよび Heat テンプレートのパラメーターを変更します。
- 同じ環境ファイルを指定して
openstack overcloud deployコマンドを再度実行します。
重要
deploy-overcloud.sh という名前のスクリプトファイルでデプロイメントコマンドを保存するには、以下のように編集します。
#!/bin/bash openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml \ -t 150 \ --control-scale 3 \ --compute-scale 3 \ --ceph-storage-scale 3 \ --swift-storage-scale 0 \ --block-storage-scale 0 \ --compute-flavor compute \ --control-flavor control \ --ceph-storage-flavor ceph-storage \ --swift-storage-flavor swift-storage \ --block-storage-flavor block-storage \ --ntp-server pool.ntp.org \ --neutron-network-type vxlan \ --neutron-tunnel-types vxlan \ --libvirt-type qemu
7.3. オーバークラウドの作成例
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e ~/templates/network-environment.yaml -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan
--templates:/usr/share/openstack-tripleo-heat-templatesの Heat テンプレートコレクションを使用してオーバークラウドを作成します。-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml:-eオプションは、オーバークラウドデプロイメントに別の環境ファイルを追加します。この場合は、ネットワーク分離の設定を初期化する環境ファイルです。-e ~/templates/network-environment.yaml:-eオプションはオーバークラウドデプロイメントに別の環境ファイルを追加します。この場合は、「ネットワーク環境ファイルの作成」で作成したネットワーク環境ファイルです。-e ~/templates/storage-environment.yaml:-eオプションはオーバークラウドデプロイメントに別の環境ファイルを追加します。この場合は、ストレージの設定を初期化する環境ファイルです。--control-scale 3: コントローラーノードを 3 つにスケーリングします。--compute-scale 3: コンピュートノードを 3 つにスケーリングします。--ceph-storage-scale 3: Ceph Storage ノードを 3 つにスケーリングします。--control-flavor control: 対象のコントローラーノードに特定のフレーバーを使用します。--compute-flavor compute: 対象のコンピュートノードに特定のフレーバーを使用します。--ceph-storage-flavor ceph-storage: Ceph Storage ノードに特定のフレーバーを使用します。--ntp-server pool.ntp.org: 時刻の同期に NTP サーバーを使用します。これは、コントローラーノードクラスターの同期を保つ際に便利です。--neutron-network-type vxlan: オーバークラウドの Neutron ネットワークに Virtual Extensible LAN (VXLAN) を使用します。--neutron-tunnel-types vxlan: オーバークラウドの Neutron トンネリングに Virtual Extensible LAN (VXLAN) を使用します。
7.4. オーバークラウド作成の監視
stack ユーザーとして別のターミナルを開き、以下を実行します。
$ source ~/stackrc # Initializes the stack user to use the CLI commands $ heat stack-list --show-nested
heat stack-list --show-nested コマンドは、オーバークラウド作成の現在のステージを表示します。
7.5. オーバークラウドへのアクセス
stack ユーザーのホームディレクトリーにこのファイル (overcloudrc) を保存します。このファイルを使用するには、以下のコマンドを実行します。
$ source ~/overcloudrc
$ source ~/stackrc
heat-admin と呼ばれるユーザーが含まれます。stack ユーザーには、各ノードに存在するこのユーザーに SSH 経由でアクセスすることができます。SSH でノードにアクセスするには、希望のノードの IP アドレスを特定します。
$ nova list
heat-admin ユーザーとノードの IP アドレスを使用して、ノードに接続します。
$ ssh heat-admin@192.0.2.23
7.6. オーバークラウド作成の完了
第8章 オーバークラウド作成後のタスクの実行
8.1. オーバークラウドのテナントネットワークの作成
overcloud を読み込んで、Neutron で初期テナントネットワークを作成します。以下に例を示します。
$ source ~/overcloudrc $ neutron net-create default $ neutron subnet-create --name default --gateway 172.20.1.1 default 172.20.0.0/16
default という名前の基本的な Neutron ネットワークが作成されます。オーバークラウドは、内部 DHCP メカニズムを使用したこのネットワークから、IP アドレスを自動的に割り当てます。
neutron net-list で作成したネットワークを確認します。
$ neutron net-list +-----------------------+-------------+----------------------------------------------------+ | id | name | subnets | +-----------------------+-------------+----------------------------------------------------+ | 95fadaa1-5dda-4777... | default | 7e060813-35c5-462c-a56a-1c6f8f4f332f 172.20.0.0/16 | +-----------------------+-------------+----------------------------------------------------+
8.2. オーバークラウドの外部ネットワークの作成
ネイティブ VLAN の使用
overcloud を読み込み、Neutron で外部ネットワークを作成します。以下に例を示します。
$ source ~/overcloudrc $ neutron net-create nova --router:external --provider:network_type flat --provider:physical_network datacentre $ neutron subnet-create --name nova --enable_dhcp=False --allocation-pool=start=10.1.1.51,end=10.1.1.250 --gateway=10.1.1.1 nova 10.1.1.0/24
nova という名前のネットワークを作成します。オーバークラウドには、デフォルトの Floating IP プールにこの特定の名前が必要です。このネットワークは、「オーバークラウドの検証」の検証テストでも重要となります。
datacentre の物理ネットワークのマッピングも行われます。デフォルトでは、datacentre は br-ex ブリッジにマッピングされます。オーバークラウドの作成時にカスタムの Neutron の設定を使用していない限りは、このオプションはデフォルトのままにしてください。
非ネイティブ VLAN の使用
$ source ~/overcloudrc $ neutron net-create nova --router:external --provider:network_type vlan --provider:physical_network datacentre --provider:segmentation_id 104 $ neutron subnet-create --name nova --enable_dhcp=False --allocation-pool=start=10.1.1.51,end=10.1.1.250 --gateway=10.1.1.1 nova 10.1.1.0/24
provider:segmentation_id の値は、使用する VLAN を定義します。この場合は、104 を使用します。
neutron net-list で作成したネットワークを確認します。
$ neutron net-list +-----------------------+-------------+---------------------------------------------------+ | id | name | subnets | +-----------------------+-------------+---------------------------------------------------+ | d474fe1f-222d-4e32... | nova | 01c5f621-1e0f-4b9d-9c30-7dc59592a52f 10.1.1.0/24 | +-----------------------+-------------+---------------------------------------------------+
8.3. 追加の Floating IP ネットワークの作成
br-ex だけでなく、どのブリッジにも使用することができます。
- ネットワーク環境ファイルで、
NeutronExternalNetworkBridgeが"''"に設定されていること。 - デプロイ中に追加のブリッジをマッピングしていること。たとえば、
br-floatingという新規ブリッジをfloatingという物理ネットワークにマッピングするには、以下のコマンドを実行します。$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e ~/templates/network-environment.yaml --neutron-bridge-mappings datacentre:br-ex,floating:br-floating
$ neutron net-create ext-net --router:external --provider:physical_network floating --provider:network_type vlan --provider:segmentation_id 105 $ neutron subnet-create --name ext-subnet --enable_dhcp=False --allocation-pool start=10.1.2.51,end=10.1.2.250 --gateway 10.1.2.1 ext-net 10.1.2.0/24
8.4. オーバークラウドのプロバイダーネットワークの作成
$ neutron net-create --provider:physical_network datacentre --provider:network_type vlan --provider:segmentation_id 201 --shared provider_network
$ neutron subnet-create --name provider-subnet --enable_dhcp=True --allocation-pool start=10.9.101.50,end=10.9.101.100 --gateway 10.9.101.254 provider_network 10.9.101.0/24
8.5. オーバークラウドの検証
$ source ~/stackrc $ sudo ovs-vsctl add-port br-ctlplane vlan201 tag=201 -- set interface vlan201 type=internal $ sudo ip l set dev vlan201 up; sudo ip addr add 172.16.0.201/24 dev vlan201
heat_stack_owner ロールがオーバークラウドに存在することを確認してください。
$ source ~/overcloudrc $ openstack role list +----------------------------------+------------------+ | ID | Name | +----------------------------------+------------------+ | 6226a517204846d1a26d15aae1af208f | swiftoperator | | 7c7eb03955e545dd86bbfeb73692738b | heat_stack_owner | +----------------------------------+------------------+
$ keystone role-create --name heat_stack_owner
stack ユーザーのホームディレクトリーに tempest ディレクトリーを設定して、Tempest スイートをローカルにインストールします。
$ mkdir ~/tempest $ cd ~/tempest $ /usr/share/openstack-tempest-liberty/tools/configure-tempest-directory
~/tempest-deployer-input.conf というファイルが作成されます。このファイルは、オーバークラウドに関連する Tempest の設定オプションを提供します。このファイルを使用して Tempest を設定するには、以下のコマンドを実行します。
$ tools/config_tempest.py --deployer-input ~/tempest-deployer-input.conf --debug --create identity.uri $OS_AUTH_URL identity.admin_password $OS_PASSWORD --network-id d474fe1f-222d-4e32-9242-cd1fefe9c14b
$OS_AUTH_URL および $OS_PASSWORD の環境変数は、以前にソースとして使用した overcloudrc ファイルの値セットを使用します。--network-id は「オーバークラウドの外部ネットワークの作成」で作成した外部ネットワークの UUID です。
重要
http_proxy の環境変数を設定して、コマンドラインの操作にプロキシーを使用します。
$ tools/run-tests.sh
注記
'.*smoke' オプションを使用してテストの一部を実行します。
$ tools/run-tests.sh '.*smoke'
tempest.log ファイルで、各テストの詳しい情報を確認することができます。たとえば、出力では以下のように失敗したテストについて表示する場合があります。
{2} tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_specify_keypair [18.305114s] ... FAILED
ServersTestJSON:test_create_specify_keypair を検索します。
$ grep "ServersTestJSON:test_create_specify_keypair" tempest.log -A 4
2016-03-17 14:49:31.123 10999 INFO tempest_lib.common.rest_client [req-a7a29a52-0a52-4232-9b57-c4f953280e2c ] Request (ServersTestJSON:test_create_specify_keypair): 500 POST http://192.168.201.69:8774/v2/2f8bef15b284456ba58d7b149935cbc8/os-keypairs 4.331s
2016-03-17 14:49:31.123 10999 DEBUG tempest_lib.common.rest_client [req-a7a29a52-0a52-4232-9b57-c4f953280e2c ] Request - Headers: {'Content-Type': 'application/json', 'Accept': 'application/json', 'X-Auth-Token': '<omitted>'}
Body: {"keypair": {"name": "tempest-key-722237471"}}
Response - Headers: {'status': '500', 'content-length': '128', 'x-compute-request-id': 'req-a7a29a52-0a52-4232-9b57-c4f953280e2c', 'connection': 'close', 'date': 'Thu, 17 Mar 2016 04:49:31 GMT', 'content-type': 'application/json; charset=UTF-8'}
Body: {"computeFault": {"message": "The server has either erred or is incapable of performing the requested operation.", "code": 500}} _log_request_full /usr/lib/python2.7/site-packages/tempest_lib/common/rest_client.py:414
注記
-A 4 オプションを指定すると次の 4 行が表示されます。この 4 行には、通常要求ヘッダーとボディー、応答ヘッダーとボディーが含まれます。
$ source ~/stackrc $ sudo ovs-vsctl del-port vlan201
8.6. コントローラーノードのフェンシング
注記
stack ユーザーから、heat-admin ユーザーとして各ノードにログインします。オーバークラウドを作成すると自動的に stack ユーザーの SSH キーが各ノードの heat-admin にコピーされます。
pcs status を使用して、クラスターが実行していることを確認します。
$ sudo pcs status Cluster name: openstackHA Last updated: Wed Jun 24 12:40:27 2015 Last change: Wed Jun 24 11:36:18 2015 Stack: corosync Current DC: lb-c1a2 (2) - partition with quorum Version: 1.1.12-a14efad 3 Nodes configured 141 Resources configured
pcs property show で、STONITH が無効化されていることを確認します。
$ sudo pcs property show
Cluster Properties:
cluster-infrastructure: corosync
cluster-name: openstackHA
dc-version: 1.1.12-a14efad
have-watchdog: false
stonith-enabled: false表8.1 フェンスエージェント
|
デバイス
|
タイプ
|
|---|---|
fence_ipmilan
|
Intelligent Platform Management Interface (IPMI)
|
fence_idrac、fence_drac5
|
Dell Remote Access Controller (DRAC)
|
fence_ilo
|
Integrated Lights-Out (iLO)
|
fence_ucs
|
Cisco UCS: 詳しい情報は 「Configuring Cisco Unified Computing System (UCS) Fencing on an OpenStack High Availability Environment」 の記事を参照してください。
|
fence_xvm、fence_virt
|
Libvirt と SSH
|
fence_ipmilan) を例として使用します。
$ sudo pcs stonith describe fence_ipmilan
stonith デバイスを追加する必要があります。クラスターに以下のコマンドを実行します。
注記
$ sudo pcs stonith create my-ipmilan-for-controller-0 fence_ipmilan pcmk_host_list=overcloud-controller-0 ipaddr=192.0.2.205 login=admin passwd=p@55w0rd! lanplus=1 cipher=1 op monitor interval=60s $ sudo pcs constraint location my-ipmilan-for-controller-0 avoids overcloud-controller-0
$ sudo pcs stonith create my-ipmilan-for-controller-1 fence_ipmilan pcmk_host_list=overcloud-controller-1 ipaddr=192.0.2.206 login=admin passwd=p@55w0rd! lanplus=1 cipher=1 op monitor interval=60s $ sudo pcs constraint location my-ipmilan-for-controller-1 avoids overcloud-controller-1
$ sudo pcs stonith create my-ipmilan-for-controller-2 fence_ipmilan pcmk_host_list=overcloud-controller-2 ipaddr=192.0.2.207 login=admin passwd=p@55w0rd! lanplus=1 cipher=1 op monitor interval=60s $ sudo pcs constraint location my-ipmilan-for-controller-2 avoids overcloud-controller-2
$ sudo pcs stonith show
$ sudo pcs stonith show [stonith-name]
stonith プロパティーを true に設定して、フェンシングを有効にします。
$ sudo pcs property set stonith-enabled=true
$ sudo pcs property show
8.7. オーバークラウド環境の変更
openstack overcloud deploy コマンドをもう 1 度実行します。たとえば、「7章オーバークラウドの作成」の方法を使用してオーバークラウドを作成した場合には、以下のコマンドを再度実行します。
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e ~/templates/network-environment.yaml -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan
overcloud スタックを確認してから、環境ファイルと Heat テンプレートのあるスタックで各アイテムを更新します。オーバークラウドは再度作成されずに、既存のオーバークラウドに変更が加えられます。
-e オプションを指定して openstack overcloud deploy コマンドを実行しファイルを追加します。
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e ~/templates/network-environment.yaml -e ~/templates/storage-environment.yaml -e ~/templates/new-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan
重要
8.8. オーバークラウドへの仮想マシンのインポート
$ nova image-create instance_name image_name $ glance image-download image_name --file exported_vm.qcow2
$ glance image-create --name imported_image --file exported_vm.qcow2 --disk-format qcow2 --container-format bare $ nova boot --poll --key-name default --flavor m1.demo --image imported_image --nic net-id=net_id imported
重要
8.9. オーバークラウドのコンピュートノードからの仮想マシンの移行
手順8.1 コンピュートノードの SSH キーの設定
nova ユーザーが移行プロセス中にアクセスできるように、全コンピュートノードには共有 SSH キーが必要です。以下の手順を使用して、各コンピュートノードで SSH キーペアを設定します。
- SSH キーを生成します。
$ ssh-keygen -t rsa -f nova_id_rsa
- 各コンピュートノード上の
novaユーザーのホームディレクトリーに、SSH キーをコピーします。 novaユーザーとして各コンピュートノードにログインして、以下のスクリプトを実行し、キーを設定します。NOVA_SSH=/var/lib/nova/.ssh mkdir ${NOVA_SSH} cp nova_id_rsa ${NOVA_SSH}/id_rsa chmod 600 ${NOVA_SSH}/id_rsa cp nova_id_rsa.pub ${NOVA_SSH}/id_rsa.pub cp nova_id_rsa.pub ${NOVA_SSH}/authorized_keys chown -R nova.nova ${NOVA_SSH} # enable login for nova user on compute hosts: usermod -s /bin/bash nova # add ssh keys of overcloud nodes into known hosts: ssh-keyscan -t rsa `os-apply-config --key hosts --type raw --key-default '' | awk '{print $1}'` >> /etc/ssh/ssh_known_hosts
手順8.2 コンピュートノードからのインスタンスの移行
- director で、
overcloudrcを読み込み、現在の nova サービスの一覧を取得します。$ source ~/stack/overcloudrc $ nova service-list
- 移行予定のノードで
nova-computeサービスを無効にします。$ nova service-disable [hostname] nova-compute
これにより、新規インスタンスはそのノード上でスケジュールされないようになります。 - ノードからインスタンスを移行するプロセスを開始します。
$ nova host-servers-migrate [hostname]
- 移行プロセスの現況は、以下のコマンドで取得できます。
$ nova migration-list
- 各インスタンスの移行が完了したら、nova の状態は
VERIFY_RESIZEに変わります。ここで、移行を正常に完了するか、環境をロールバックするかを確定する機会が提供されます。移行を確定するには、以下のコマンドを使用してください。$ nova resize-confirm [server-name]
$ nova service-enable [hostname] nova-compute
8.10. オーバークラウドが削除されてないように保護
heat stack-delete overcloud コマンドで誤って削除されないように、Heat には特定のアクションを制限するポリシーセットが含まれます。/etc/heat/policy.json を開いて、以下のパラメーターを検索します。
"stacks:delete": "rule:deny_stack_user"
"stacks:delete": "rule:deny_everybody"
heat クライアントでオーバークラウドが削除されないようにします。オーバークラウドを削除できるように設定するには、ポリシーを元の値に戻します。
8.11. オーバークラウドの削除
手順8.3 オーバークラウドの削除
- 既存のオーバークラウドを削除します。
$ heat stack-delete overcloud
- オーバークラウドが削除されていることを確認します。
$ heat stack-list
削除には、数分かかります。
第9章 ノードのスケーリングと置き換え
警告
表9.1 各ノード種別のスケーリングサポート
|
ノード種別
|
スケールアップ
|
スケールダウン
|
備考
|
|---|---|---|---|
|
コントローラー
|
☓
|
☓
| |
|
コンピュート
|
○
|
○
| |
|
Ceph Storage ノード
|
○
|
☓
|
オーバークラウドを最初に作成する際に Ceph Storage ノードを 1 つ以上設定する必要があります。
|
|
Block Storage ノード
|
☓
|
☓
| |
|
Object Storage ノード
|
○
|
○
|
リングを手動で管理する必要があります (「Object Storage ノードの置き換え」に説明を記載)。
|
重要
9.1. コンピュートノードまたは Ceph Storage ノードの追加
newnodes.json) を作成します。
{
"nodes":[
{
"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"
}
]
}
$ openstack baremetal import --json newnodes.json
$ ironic node-list $ ironic node-set-maintenance [NODE UUID] true $ openstack baremetal introspection start [NODE UUID] $ ironic node-set-maintenance [NODE UUID] false
$ ironic node-update [NODE UUID] add properties/capabilities='profile:compute,boot_option:local'
bm-deploy-kernel および bm-deploy-ramdisk イメージの UUID を確認します。
$ glance image-list +--------------------------------------+------------------------+ | ID | Name | +--------------------------------------+------------------------+ | 09b40e3d-0382-4925-a356-3a4b4f36b514 | bm-deploy-kernel | | 765a46af-4417-4592-91e5-a300ead3faf6 | bm-deploy-ramdisk | | ef793cd0-e65c-456a-a675-63cd57610bd5 | overcloud-full | | 9a51a6cb-4670-40de-b64b-b70f4dd44152 | overcloud-full-initrd | | 4f7e33f4-d617-47c1-b36f-cbe90f132e5d | overcloud-full-vmlinuz | +--------------------------------------+------------------------+
deploy_kernel および deploy_ramdisk 設定にこれらの UUID を設定します。
$ ironic node-update [NODE UUID] add driver_info/deploy_kernel='09b40e3d-0382-4925-a356-3a4b4f36b514' $ ironic node-update [NODE UUID] add driver_info/deploy_ramdisk='765a46af-4417-4592-91e5-a300ead3faf6'
openstack overcloud deploy を再実行する必要があります。たとえば、コンピュートノード 5 台にスケーリングするには、以下のコマンドを実行します。
$ openstack overcloud deploy --templates --compute-scale 5 [OTHER_OPTIONS]
重要
9.2. コンピュートノードの削除
重要
$ source ~/stack/overcloudrc $ nova service-list $ nova service-disable [hostname] nova-compute $ source ~/stack/stackrc
overcloud スタックへの更新が必要です。最初に、オーバークラウドスタックの UUID を特定します。
$ heat stack-list
$ nova list
$ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]
重要
-e または --environment-file オプションを使用して環境ファイルを再度指定します。
重要
openstack overcloud node delete コマンドが完全に終了したことを確認します。openstack stack list コマンドを使用して、overcloud スタックが UPDATE_COMPLETE のステータスに切り替わっているかどうかをチェックしてください。
$ source ~/stack/overcloudrc $ nova service-list $ nova service-delete [service-id] $ source ~/stack/stackrc
$ source ~/stack/overcloudrc $ neutron agent-list $ neutron agent-delete [openvswitch-agent-id] $ source ~/stack/stackrc
9.3. コンピュートノードの置き換え
- 既存のコンピュートノードからワークロードを移行して、ノードをシャットダウンします。この手順は「オーバークラウドのコンピュートノードからの仮想マシンの移行」を参照してください。
- オーバークラウドからコンピュートノードを削除します。この手順は「コンピュートノードの削除」を参照してください。
- 新しいコンピュートノードでオーバークラウドをスケーリングアウトします。この手順は「9章ノードのスケーリングと置き換え」を参照してください。
9.4. コントローラーノードの置き換え
openstack overcloud deploy コマンドを実行して、コントローラーノードを置き換えるための要求でオーバークラウドを更新します。このプロセスは、自動的には完了しない点に注意してください。オーバークラウドスタックの更新処理中のどの時点かで、openstack overcloud deploy コマンドによりエラーが報告されて、オーバークラウドスタックの更新が停止します。この時点で、プロセスに手動での介入が必要となります。この後に openstack overcloud deploy はプロセスを続行することができます。
重要
9.4.1. 事前のチェック
- アンダークラウドで、
overcloudスタックの現在の状態をチェックします。$ source stackrc $ heat stack-list --show-nested
overcloudスタックと後続の子スタックは、CREATE_COMPLETEまたはUPDATE_COMPLETEのステータスである必要があります。 - アンダークラウドデータベースのバックアップを実行します。
$ mkdir /home/stack/backup $ sudo mysqldump --all-databases --quick --single-transaction | gzip > /home/stack/backup/dump_db_undercloud.sql.gz $ sudo systemctl stop openstack-ironic-api.service openstack-ironic-conductor.service openstack-ironic-inspector.service openstack-ironic-inspector-dnsmasq.service $ sudo cp /var/lib/ironic-inspector/inspector.sqlite /home/stack/backup $ sudo systemctl start openstack-ironic-api.service openstack-ironic-conductor.service openstack-ironic-inspector.service openstack-ironic-inspector-dnsmasq.service
- アンダークラウドで、新規ノードのプロビジョニング時にイメージのキャッシュと変換に対応できる 10 GB の空きストレージ領域があるかどうかをチェックします。
- コントローラーノードで実行中の Pacemaker の状態をチェックします。たとえば、実行中のコントローラーノードの IP アドレスが 192.168.0.47 の場合には、以下のコマンドで Pacemaker のステータス情報を取得します。
$ ssh heat-admin@192.168.0.47 'sudo pcs status'
出力には、既存のノードで実行中のサービスと、障害が発生しているノードで停止中のサービスがすべて表示されるはずです。 - オーバークラウドの MariaDB クラスターの各ノードで以下のパラメーターをチェックします。
wsrep_local_state_comment: Syncedwsrep_cluster_size: 2
実行中のコントローラーノードで以下のコマンドを使用して、パラメーターをチェックします (IP アドレスにはそれぞれ 192.168.0.47 と 192.168.0.46 を使用します)。$ for i in 192.168.0.47 192.168.0.46 ; do echo "*** $i ***" ; ssh heat-admin@$i "sudo mysql --exec=\"SHOW STATUS LIKE 'wsrep_local_state_comment'\" ; sudo mysql --exec=\"SHOW STATUS LIKE 'wsrep_cluster_size'\""; done
- RabbitMQ のステータスをチェックします。たとえば、実行中のコントローラーノードの IP アドレスが 192.168.0.47 の場合には、以下のコマンドを実行してステータスを取得します。
$ ssh heat-admin@192.168.0.47 "sudo rabbitmqctl cluster_status"
running_nodesキーには、障害が発生しているノードは表示されず、稼働中のノード 2 台のみが表示されるはずです。 - フェンシングが有効化されている場合には無効にします。たとえば、実行中のコントローラーノードの IP アドレスが 192.168.0.47 の場合には、以下のコマンドを実行してフェンシングを無効にします。
$ ssh heat-admin@192.168.0.47 "sudo pcs property set stonith-enabled=false"
以下のコマンドを実行してフェンシングのステータスを確認します。$ ssh heat-admin@192.168.0.47 "sudo pcs property show stonith-enabled"
- director ノードで
nova-computeサービスをチェックします。$ sudo systemctl status openstack-nova-compute $ nova hypervisor-list
出力では、メンテナンスモードに入っていないすべてのノードがupのステータスで表示されるはずです。 - アンダークラウドサービスがすべて実行中であることを確認します。
$ sudo systemctl list-units httpd\* mariadb\* neutron\* openstack\* openvswitch\* rabbitmq\*
9.4.2. ノードの置き換え
nova list の出力に表示されるインスタンス名のサフィックスです。
[stack@director ~]$ nova list +--------------------------------------+------------------------+ | ID | Name | +--------------------------------------+------------------------+ | 861408be-4027-4f53-87a6-cd3cf206ba7a | overcloud-compute-0 | | 0966e9ae-f553-447a-9929-c4232432f718 | overcloud-compute-1 | | 9c08fa65-b38c-4b2e-bd47-33870bff06c7 | overcloud-compute-2 | | a7f0f5e1-e7ce-4513-ad2b-81146bc8c5af | overcloud-controller-0 | | cfefaf60-8311-4bc3-9416-6a824a40a9ae | overcloud-controller-1 | | 97a055d4-aefd-481c-82b7-4a5f384036d2 | overcloud-controller-2 | +--------------------------------------+------------------------+
overcloud-controller-1 ノードを削除して、overcloud-controller-3 に置き換えます。初めにノードをメンテナンスモードに切り替えて、director がエラーの発生したノードを再プロビジョニングしないようにします。nova list で表示されるインスタンスの ID を、ironic node-list で表示されるノード ID と相関させます。
[stack@director ~]$ ironic node-list +--------------------------------------+------+--------------------------------------+ | UUID | Name | Instance UUID | +--------------------------------------+------+--------------------------------------+ | 36404147-7c8a-41e6-8c72-a6e90afc7584 | None | 7bee57cf-4a58-4eaf-b851-2a8bf6620e48 | | 91eb9ac5-7d52-453c-a017-c0e3d823efd0 | None | None | | 75b25e9a-948d-424a-9b3b-f0ef70a6eacf | None | None | | 038727da-6a5c-425f-bd45-fda2f4bd145b | None | 763bfec2-9354-466a-ae65-2401c13e07e5 | | dc2292e6-4056-46e0-8848-d6e96df1f55d | None | 2017b481-706f-44e1-852a-2ee857c303c4 | | c7eadcea-e377-4392-9fc3-cf2b02b7ec29 | None | 5f73c7d7-4826-49a5-b6be-8bfd558f3b41 | | da3a8d19-8a59-4e9d-923a-6a336fe10284 | None | cfefaf60-8311-4bc3-9416-6a824a40a9ae | | 807cb6ce-6b94-4cd1-9969-5c47560c2eee | None | c07c13e6-a845-4791-9628-260110829c3a | +--------------------------------------+------+--------------------------------------+
[stack@director ~]$ ironic node-set-maintenance da3a8d19-8a59-4e9d-923a-6a336fe10284 true
control プロファイルでタグ付けします。
[stack@director ~]$ ironic node-update 75b25e9a-948d-424a-9b3b-f0ef70a6eacf add properties/capabilities='profile:control,boot_option:local'
~/templates/remove-controller.yaml)。
parameters:
ControllerRemovalPolicies:
[{'resource_list': ['1']}]
重要
overcloud.yaml ファイルに対して実行します。
$ sed -i "s/resource\.0/resource.1/g" ~/templates/my-overcloud/overcloud.yaml
ControllerBootstrapNodeConfig:
type: OS::TripleO::BootstrapNode::SoftwareConfig
properties:
bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
AllNodesValidationConfig:
type: OS::TripleO::AllNodes::Validation
properties:
PingTestIps:
list_join:
- ' '
- - {get_attr: [Controller, resource.0.external_ip_address]}
- {get_attr: [Controller, resource.0.internal_api_ip_address]}
- {get_attr: [Controller, resource.0.storage_ip_address]}
- {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
- {get_attr: [Controller, resource.0.tenant_ip_address]}
注記
parameter_defaults:
ExtraConfig:
pacemaker::corosync::settle_tries: 5
remove-controller.yaml 環境ファイルを追加します。
[stack@director ~]$ openstack overcloud deploy --templates --control-scale 3 -e ~/templates/remove-controller.yaml [OTHER OPTIONS]
重要
-e ~/templates/remove-controller.yaml が必要なのは 1 回のみである点に注意してください。これは、ノードの削除プロセスが 1 回のみで、それ以降の実行時には実行されてはならないためです。
[stack@director ~]$ heat stack-list --show-nested
重要
RHELUnregistrationDeployment リソースがハングする場合があります。このような状態が発生した場合には、以下のコマンドを使用してリソースに信号を送ります。
# heat resource-list -n 5 -f name=RHELUnregistrationDeployment overcloud # heat resource-signal [STACK_NAME] RHELUnregistrationDeployment
[STACK_NAME] はコントローラーのサブトラックに置き換えます。たとえば、コントローラーノード 1 の場合は、overcloud-Controller-yfbet6xh6oov-1-f5v5pmcfvv2k-NodeExtraConfig-zuiny44lei3w に置き換えます。
ControllerNodesPostDeployment の段階に、オーバークラウドスタックがタイムアウトになって、ControllerLoadBalancerDeployment_Step1 で UPDATE_FAILED エラーが発生して停止します。これは想定通りの動作で、次の項で説明する手動での介入が必要です。
9.4.3. 手動での介入
ControllerNodesPostDeployment の段階には、オーバークラウドスタックが ControllerLoadBalancerDeployment_Step1 で UPDATE_FAILED エラーによりタイムアウトになって停止するまで。これは、一部の Puppet モジュールがノードの置き換えをサポートしていないためです。処理のこの時点で、手動での介入が必要です。以下に記載する設定ステップに従ってください。
- コントローラーノードの IP アドレスの一覧を取得します。以下に例を示します。
[stack@director ~]$ nova list ... +------------------------+ ... +-------------------------+ ... | Name | ... | Networks | ... +------------------------+ ... +-------------------------+ ... | overcloud-compute-0 | ... | ctlplane=192.168.0.44 | ... | overcloud-controller-0 | ... | ctlplane=192.168.0.47 | ... | overcloud-controller-2 | ... | ctlplane=192.168.0.46 | ... | overcloud-controller-3 | ... | ctlplane=192.168.0.48 | ... +------------------------+ ... +-------------------------+
- 既存のノードの
/etc/corosync/corosync.confファイルで、削除されたノードのnodeidの値を確認します。たとえば、既存のノードが 192.168.0.47 のovercloud-controller-0の場合には、以下のコマンドを実行します。[stack@director ~]$ ssh heat-admin@192.168.0.47 "sudo cat /etc/corosync/corosync.conf"
このコマンドにより、削除されたノードの ID が含まれるnodelistが表示されます (overcloud-controller-1)。nodelist { node { ring0_addr: overcloud-controller-0 nodeid: 1 } node { ring0_addr: overcloud-controller-1 nodeid: 2 } node { ring0_addr: overcloud-controller-2 nodeid: 3 } }削除されたnodeidの値は、後で使用するときのために書き留めておいてください。上記の例では、2 がその値です。 - 各ノードの Corosync 設定から障害の発生したノードを削除して、Corosync を再起動します。この例では、
overcloud-controller-0とovercloud-controller-2にログインして以下のコマンドを実行します。[stack@director] ssh heat-admin@192.168.201.47 "sudo pcs cluster localnode remove overcloud-controller-1" [stack@director] ssh heat-admin@192.168.201.47 "sudo pcs cluster reload corosync" [stack@director] ssh heat-admin@192.168.201.46 "sudo pcs cluster localnode remove overcloud-controller-1" [stack@director] ssh heat-admin@192.168.201.46 "sudo pcs cluster reload corosync"
- 残りのノードの中の 1 台にログインして、
crm_nodeコマンドで対象のノードをクラスターから削除します。[stack@director] ssh heat-admin@192.168.201.47 [heat-admin@overcloud-controller-0 ~]$ sudo crm_node -R overcloud-controller-1 --force
このノードにログインした状態を維持します。 - 障害が発生したノードを RabbitMQ クラスターから削除します。
[heat-admin@overcloud-controller-0 ~]$ sudo rabbitmqctl forget_cluster_node rabbit@overcloud-controller-1
- 障害が発生したノードを MongoDB から削除します。ノードの内部 API 接続のための IP アドレスを特定します。
[heat-admin@overcloud-controller-0 ~]$ sudo netstat -tulnp | grep 27017 tcp 0 0 192.168.0.47:27017 0.0.0.0:* LISTEN 13415/mongod
ノードがprimaryレプリカセットであることを確認します。[root@overcloud-controller-0 ~]# echo "db.isMaster()" | mongo --host 192.168.0.47:27017 MongoDB shell version: 2.6.11 connecting to: 192.168.0.47:27017/echo { "setName" : "tripleo", "setVersion" : 1, "ismaster" : true, "secondary" : false, "hosts" : [ "192.168.0.47:27017", "192.168.0.46:27017", "192.168.0.45:27017" ], "primary" : "192.168.0.47:27017", "me" : "192.168.0.47:27017", "electionId" : ObjectId("575919933ea8637676159d28"), "maxBsonObjectSize" : 16777216, "maxMessageSizeBytes" : 48000000, "maxWriteBatchSize" : 1000, "localTime" : ISODate("2016-06-09T09:02:43.340Z"), "maxWireVersion" : 2, "minWireVersion" : 0, "ok" : 1 } byeこれで、現在のノードがプライマリーかどうかが表示されるはずです。そうでない場合には、primaryキーに示されているノードの IP アドレスを使用します。プライマリーノードで MongoDB に接続します。[heat-admin@overcloud-controller-0 ~]$ mongo --host 192.168.0.47 MongoDB shell version: 2.6.9 connecting to: 192.168.0.47:27017/test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user tripleo:PRIMARY>
MongoDB クラスターのステータスを確認します。tripleo:PRIMARY> rs.status()
_idキーを使用してノードを特定し、nameキーを使用して障害の発生したノードを削除します。この場合にはnameに192.168.0.45:27017を指定して Node 1 を削除します。tripleo:PRIMARY> rs.remove('192.168.0.45:27017')重要
PRIMARYレプリカセットに対してコマンドを実行する必要があります。"replSetReconfig command must be sent to the current replica set primary."
上記のメッセージが表示された場合には、PRIMARYに指定されているノード上の MongoDB に再ログインします。注記
障害の発生したノードのレプリカセットを削除する際には、通常以下のような出力が表示されます。2016-05-07T03:57:19.541+0000 DBClientCursor::init call() failed 2016-05-07T03:57:19.543+0000 Error: error doing query: failed at src/mongo/shell/query.js:81 2016-05-07T03:57:19.545+0000 trying reconnect to 192.168.0.47:27017 (192.168.0.47) failed 2016-05-07T03:57:19.547+0000 reconnect 192.168.0.47:27017 (192.168.0.47) ok
MongoDB を終了します。tripleo:PRIMARY> exit
- Galera クラスター内のノードの一覧を更新します。
[heat-admin@overcloud-controller-0 ~]$ sudo pcs resource update galera wsrep_cluster_address=gcomm://overcloud-controller-0,overcloud-controller-3,overcloud-controller-2
- 新規ノードに対して Galera クラスターのチェックが行われるように設定します。既存のノードから新規ノードの同じ場所に
/etc/sysconfig/clustercheckをコピーします。 rootユーザーが新規ノードの Gelera にアクセスできるように設定します。既存のノードから新規ノードの同じ場所に/root/.my.cnfをコピーします。- 新規ノードをクラスターに追加します。
[heat-admin@overcloud-controller-0 ~]$ sudo pcs cluster node add overcloud-controller-3
- 各ノードで
/etc/corosync/corosync.confファイルをチェックします。新規ノードのnodeidが削除したノードと同じ場合には、その値を nodeid 値に更新します。たとえば、/etc/corosync/corosync.confファイルに新規ノード (overcloud-controller-3) のエントリーが記載されています。nodelist { node { ring0_addr: overcloud-controller-0 nodeid: 1 } node { ring0_addr: overcloud-controller-2 nodeid: 3 } node { ring0_addr: overcloud-controller-3 nodeid: 2 } }上記の例では、新規ノードが削除されたノードと同じnodeidを使用している点に注意してください。この値を、使用していないノードの ID 値に更新します。以下に例を示します。node { ring0_addr: overcloud-controller-3 nodeid: 4 }新規ノードを含む各コントローラーノードの/etc/corosync/corosync.confファイルでnodeidの値を更新します。 - 既存のノードのみで Corosync サービスを再起動します。たとえば、
overcloud-controller-0で以下のコマンドを実行します。[heat-admin@overcloud-controller-0 ~]$ sudo pcs cluster reload corosync
overcloud-controller-2で以下のコマンドを実行します。[heat-admin@overcloud-controller-2 ~]$ sudo pcs cluster reload corosync
このコマンドは、新規ノードでは実行しないでください。 - 新規コントローラーノードを起動します。
[heat-admin@overcloud-controller-0 ~]$ sudo pcs cluster start overcloud-controller-3
- 新規ノード上で Keystone サービスを有効にします。残りのノードから director ホストに
/etc/keystoneをコピーします。[heat-admin@overcloud-controller-0 ~]$ sudo -i [root@overcloud-controller-0 ~]$ scp -r /etc/keystone stack@192.168.0.1:~/.
新規コントローラーノードにログインします。新規コントローラーノードから/etc/keystoneディレクトリーを削除して、director ホストからkeystoneファイルをコピーします。[heat-admin@overcloud-controller-3 ~]$ sudo -i [root@overcloud-controller-3 ~]$ rm -rf /etc/keystone [root@overcloud-controller-3 ~]$ scp -r stack@192.168.0.1:~/keystone /etc/. [root@overcloud-controller-3 ~]$ chown -R keystone: /etc/keystone [root@overcloud-controller-3 ~]$ chown root /etc/keystone/logging.conf /etc/keystone/default_catalog.templates
/etc/keystone/keystone.confを編集してadmin_bind_hostおよびpublic_bind_hostのパラメーターを新規コントローラーノードの IP アドレスに設定します。これらの IP アドレスを確認するには、ip addrコマンドを使用して、以下のネットワーク内の IP アドレスを見つけます。admin_bind_host: プロビジョニングネットワークpublic_bind_host: 内部 API ネットワーク
注記
カスタムのServiceNetMapパラメーターを使用してオーバークラウドをデプロイした場合には、これらのネットワークは異なる場合があります。たとえば、プロビジョニングネットワークが 192.168.0.0/24 サブネットを使用して、内部 API が 172.17.0.0/24 サブネットを使用している場合には、以下のコマンドを使用して、それらのネットワーク上のノードの IP アドレスを特定します。[root@overcloud-controller-3 ~]$ ip addr | grep "192\.168\.0\..*/24" [root@overcloud-controller-3 ~]$ ip addr | grep "172\.17\.0\..*/24"
- Pacemaker を使用して、いくつかのサービスを有効化して再起動します。クラスターは現在メンテナンスモードに設定されていますが、サービスを有効化するには、このモードを一時的に無効にする必要があります。以下に例を示します。
[heat-admin@overcloud-controller-3 ~]$ sudo pcs property set maintenance-mode=false --wait
- 全ノードで Galera サービスが起動するのを待ちます。
[heat-admin@overcloud-controller-3 ~]$ sudo pcs status | grep galera -A1 Master/Slave Set: galera-master [galera] Masters: [ overcloud-controller-0 overcloud-controller-2 overcloud-controller-3 ]
必要な場合には、新規ノードで「cleanup」を実行します。[heat-admin@overcloud-controller-3 ~]$ sudo pcs resource cleanup galera --node overcloud-controller-3
- 全ノードで Keystone サービスが起動するのを待ちます。
[heat-admin@overcloud-controller-3 ~]$ sudo pcs status | grep keystone -A1 Clone Set: openstack-keystone-clone [openstack-keystone] Started: [ overcloud-controller-0 overcloud-controller-2 overcloud-controller-3 ]
必要な場合には、新規ノードで「cleanup」を実行します。[heat-admin@overcloud-controller-3 ~]$ sudo pcs resource cleanup openstack-keystone-clone --node overcloud-controller-3
- クラスターをメンテナンスモードに再度切り替えます。
[heat-admin@overcloud-controller-3 ~]$ sudo pcs property set maintenance-mode=true --wait
[stack@director ~]$ openstack overcloud deploy --templates --control-scale 3 [OTHER OPTIONS]
重要
remove-controller.yaml ファイルは必要ない点に注意してください。
9.4.4. オーバークラウドサービスの最終処理
[heat-admin@overcloud-controller-0 ~]$ for i in `sudo pcs status|grep -B2 Stop |grep -v "Stop\|Start"|awk -F"[" '/\[/ {print substr($NF,0,length($NF)-1)}'`; do echo $i; sudo pcs resource cleanup $i; done
[heat-admin@overcloud-controller-0 ~]$ sudo pcs status
注記
pcs resource cleanup コマンドを使用して、問題の解決後にそのサービスを再起動します。
[heat-admin@overcloud-controller-0 ~]$ sudo pcs property set stonith-enabled=true
[heat-admin@overcloud-controller-0 ~]$ exit
9.4.5. オーバークラウドのネットワークエージェントの最終処理
overcloudrc ファイルを読み込みます。ルーターをチェックして、L3 エージェントがオーバークラウド環境内のルーターを適切にホストしていることを確認します。以下の例では、r1 という名前のルーターを使用します。
[stack@director ~]$ source ~/overcloudrc [stack@director ~]$ neutron l3-agent-list-hosting-router r1
[stack@director ~]$ neutron agent-list | grep "neutron-l3-agent"
[stack@director ~]$ neutron l3-agent-router-add fd6b3d6e-7d8c-4e1a-831a-4ec1c9ebb965 r1 [stack@director ~]$ neutron l3-agent-router-remove b40020af-c6dd-4f7a-b426-eba7bac9dbc2 r1
[stack@director ~]$ neutron l3-agent-list-hosting-router r1
[stack@director ~]$ neutron agent-list -F id -F host | grep overcloud-controller-1 | ddae8e46-3e8e-4a1b-a8b3-c87f13c294eb | overcloud-controller-1.localdomain | [stack@director ~]$ neutron agent-delete ddae8e46-3e8e-4a1b-a8b3-c87f13c294eb
9.4.6. Compute サービスの最終処理
overcloudrc ファイルを読み込み、オーバークラウドと対話できるようにします。削除したノードの Compute サービスをチェックします。
[stack@director ~]$ source ~/overcloudrc [stack@director ~]$ nova service-list | grep "overcloud-controller-1.localdomain"
overcloud-controller-1.localdomain の nova-scheduler サービスの ID が 5 の場合には、以下のコマンドを実行します。
[stack@director ~]$ nova service-delete 5
openstack-nova-consoleauth サービスをチェックします。
[stack@director ~]$ nova service-list | grep consoleauth
[stack@director] ssh heat-admin@192.168.201.47 [heat-admin@overcloud-controller-0 ~]$ pcs resource restart openstack-nova-consoleauth
9.4.7. 結果
重要
9.5. Ceph Storage ノードの置き換え
9.6. Object Storage ノードの置き換え
- 新規 Object Storage ノードでオーバークラウドを更新して、director によりリングファイルが作成されないようにします。
swift-ring-builderを使用して手動でクラスターにノードを追加するか、クラスターからノードを削除します。
~/templates/swift-ring-prevent.yaml という名前の環境ファイルを作成します。
parameter_defaults: SwiftRingBuild: false RingBuild: false ObjectStorageCount: 3
SwiftRingBuild および RingBuild パラメーターにより、オーバークラウドが自動的に Object Storage とコントローラーノードそれぞれのリングファイルを構築するかどうかが定義されます。ObjectStorageCount は、環境内で Object Storage ノードをいくつ指定するかを定義します。今回の例では、ノードを 2 つから 3 つにスケーリングします。
openstack overcloud deploy の一部として、オーバークラウドの残りの環境ファイルと合わせて、swift-ring-prevent.yaml ファイルも追加します。
$ openstack overcloud deploy --templates [ENVIRONMENT_FILES] -e swift-ring-prevent.yaml
注記
注記
$ sudo mkdir -p /srv/node/d1 $ sudo chown -R swift:swift /srv/node/d1
注記
heat-admin ユーザーとして、コントローラーノードにログインしてから、スーパーユーザーに切り替えます。たとえば、IP アドレスが 192.168.201.24 のコントローラーノードの場合は以下のようになります。
$ ssh heat-admin@192.168.201.24 $ sudo -i
/etc/swift/*.builder ファイルを新しい Object Storage ノードの /etc/swift/ ディレクトリーにコピーします。必要に応じて、ファイルを director ホストに移動します。
[root@overcloud-controller-0 ~]# scp /etc/swift/*.builder stack@192.1.2.1:~/.
[stack@director ~]$ scp ~/*.builder heat-admin@192.1.2.24:~/.
heat-admin ユーザーとしてログインして、スーパーユーザーに切り替えます。たとえば、IP アドレスが 192.168.201.29 の Object Storage ノードの場合は以下のようになります。
$ ssh heat-admin@192.168.201.29 $ sudo -i
/etc/swift ディレクトリーにコピーします。
# cp /home/heat-admin/*.builder /etc/swift/.
# swift-ring-builder /etc/swift/account.builder add zX-IP:6002/d1 weight # swift-ring-builder /etc/swift/container.builder add zX-IP:6001/d1 weight # swift-ring-builder /etc/swift/object.builder add zX-IP:6000/d1 weight
- zX
- X は、指定のゾーンに適した整数に置き換えます (例: ゾーン 1 には z1)。
- IP
- アカウント、コンテナー、オブジェクトサービスがリッスンするのに使用する IP。これは、特に、
/etc/swift/object-server.confと/etc/swift/account-server.conf、/etc/swift/container-server.confのDEFAULTセクションのbind_ipなど、各ストレージノードの IP アドレスと同じでなければなりません。 - 重み
- 他のデバイスと比較したデバイスの相対的な重み付けを入力します。通常、これは 100 となっています。
注記
swift-ring-builder を使用して、リングファイルにある現在のノードの既存値を確認します。
# swift-ring-builder /etc/swift/account.builder
# swift-ring-builder /etc/swift/account.builder remove IP # swift-ring-builder /etc/swift/container.builder remove IP # swift-ring-builder /etc/swift/object.builder remove IP
# swift-ring-builder /etc/swift/account.builder rebalance # swift-ring-builder /etc/swift/container.builder rebalance # swift-ring-builder /etc/swift/object.builder rebalance
/etc/swift/ の内容すべての所有者を root ユーザーと swift グループに変更します。
# chown -R root:swift /etc/swift
openstack-swift-proxy サービスを再起動します。
# systemctl restart openstack-swift-proxy.service
/etc/swift/account.builder /etc/swift/account.ring.gz /etc/swift/container.builder /etc/swift/container.ring.gz /etc/swift/object.builder /etc/swift/object.ring.gz
/etc/swift/ にコピーします (削除するノードは除く)。必要に応じて、ファイルを director ホストに移動します。
[root@overcloud-objectstorage-2 swift]# scp *.builder stack@192.1.2.1:~/ [root@overcloud-objectstorage-2 swift]# scp *.ring.gz stack@192.1.2.1:~/
/etc/swift/ にこのファイルをコピーします。
/etc/swift/ の内容すべての所有者を root ユーザーと swift グループに変更します。
# chown -R root:swift /etc/swift
ObjectStorageCount の数を減らして以前のリングを省略します。今回は 3 から 2 に減らします。
parameter_defaults: SwiftRingBuild: false RingBuild: false ObjectStorageCount: 2
remove-object-node.yaml) を作成して、以前の Object Storage ノードを特定し、削除します。今回の場合は overcloud-objectstorage-1 を削除します。
parameter_defaults:
ObjectStorageRemovalPolicies:
[{'resource_list': ['1']}]
$ openstack overcloud deploy --templates -e swift-ring-prevent.yaml -e remove-object-node.yaml ...
第10章 オーバークラウドのリブート
- 1 つのロールで全ノードを再起動する場合には、各ノードを個別に再起動することを推奨しています。この方法は、再起動中にそのロールのサービスを保持するのに役立ちます。
- OpenStack Platform 環境の全ノードを再起動する場合、再起動の順序は以下のリストを参考にしてください。
推奨されるノード再起動順
- director の再起動
- コントローラーノードの再起動
- Ceph Storage ノードの再起動
- コンピュートノードの再起動
- Object Storage ノードの再起動
10.1. director の再起動
- ノードを再起動します。
$ sudo reboot
- ノードが起動するまで待ちます。
$ sudo systemctl list-units "openstack*" "neutron*" "openvswitch*"
$ source ~/stackrc $ nova list $ ironic node-list $ heat stack-list
10.2. コントローラーノードの再起動
- 再起動するノードを選択します。そのノードにログインして再起動します。
$ sudo reboot
クラスター内の残りのコントローラーノードは、再起動中も高可用性サービスが保持されます。 - ノードが起動するまで待ちます。
- ノードにログインして、クラスターのステータスを確認します。
$ sudo pcs status
このノードは、クラスターに再度参加します。注記
再起動後に失敗するサービスがあった場合には、sudopcs resource cleanupを実行し、エラーを消去して各リソースの状態をStartedに設定します。エラーが引き続き発生する場合には、Red Hat にアドバイス/サポートをリクエストしてください。 - ノードからログアウトして、次に再起動するコントローラーノードを選択し、すべてのコントローラーノードが再起動されるまでこの手順を繰り返します。
10.3. Ceph Storage ノードの再起動
- 再起動する最初の Ceph Storage ノードを選択して、ログインします。
- Ceph Storage クラスターのリバランシングを一時的に無効にします。
$ sudo ceph osd set noout $ sudo ceph osd set norebalance
- ノードを再起動します。
$ sudo reboot
- ノードが起動するまで待ちます。
- ノードにログインして、クラスターのステータスを確認します。
$ sudo ceph -s
pgmapにより、すべてのpgsが正常な状態 (active+clean) として報告されることを確認します。 - ノードからログアウトして、次のノードを再起動し、ステータスを確認します。全 Ceph Storage ノードが再起動されるまで、このプロセスを繰り返します。
- 操作が完了したら、クラスターのリバランシングを再度有効にします。
$ sudo ceph osd unset noout $ sudo ceph osd unset norebalance
- 最終のステータスチェックを実行して、クラスターが
HEALTH_OKと報告することを確認します。$ sudo ceph status
10.4. コンピュートノードの再起動
- 再起動するコンピュートノードを選択します。
- インスタンスを別のコンピュートノードに移行します。
- 空のコンピュートノードを再起動します。
$ source ~/stackrc $ nova list | grep "compute"
- アンダークラウドから、再起動するコンピュートノードを選択し、そのノードを無効にします。
$ source ~/overcloudrc $ nova service-list $ nova service-disable [hostname] nova-compute
- コンピュートノード上の全インスタンスを一覧表示します。
$ nova list --host [hostname]
- インスタンスの移行のターゲットホストとして機能する 2 番目のコンピュートノードを選択し、このホストには、移行されるインスタンスをホストするのに十分なリソースが必要です。無効化されたホストからターゲットホストに各インスタンスを移行する操作をアンダークラウドから実行します。
$ nova live-migration [instance-name] [target-hostname] $ nova migration-list $ nova resize-confirm [instance-name]
- コンピュートノードからすべてのインスタンスが移行されるまで、このステップを繰り返します。
重要
- コンピュートノードのログインしてリブートします。
$ sudo reboot
- ノードが起動するまで待ちます。
- コンピュートノードを再度有効化します。
$ source ~/overcloudrc $ nova service-enable [hostname] nova-compute
- リブートする次のノードを選択します。
10.5. Object Storage ノードの再起動
- 再起動する Object Storage ノードを選択します。そのノードにログインして再起動します。
$ sudo reboot
- ノードが起動するまで待ちます。
- ノードにログインして、ステータスを確認します。
$ sudo systemctl list-units "openstack-swift*"
- ノードからログアウトして、次の Object Storage ノードでこのプロセスを繰り返します。
第11章 director の問題のトラブルシューティング
/var/logディレクトリーには、多数の OpenStack Platform の共通コンポーネントのログや、標準の Red Hat Enterprise Linux アプリケーションのログが含まれています。journaldサービスは、さまざまなコンポーネントのログを提供します。Ironic はopenstack-ironic-apiとopenstack-ironic-conductorの 2 つのユニットを使用する点に注意してください。同様に、ironic-inspectorはopenstack-ironic-inspectorとopenstack-ironic-inspector-dnsmasqの 2 つのユニットを使用します。該当するコンポーネントごとに両ユニットを使用します。以下に例を示します。$ sudo journalctl -u openstack-ironic-inspector -u openstack-ironic-inspector-dnsmasq
ironic-inspectorは、/var/log/ironic-inspector/ramdisk/に ramdisk ログを gz 圧縮の tar ファイルとして保存します。ファイル名には、日付、時間、ノードの IPMI アドレスが含まれます。イントロスペクションの問題を診断するには、これらのログを使用します。
11.1. ノード登録のトラブルシューティング
ironic を使用して、登録したノードデータの問題を修正します。以下にいくつか例を示します。
手順11.1 誤った MAC アドレスの修正
- 割り当てられたポートの UUID を確認します。
$ ironic node-port-list [NODE UUID]
- MAC アドレスを更新します。
$ ironic port-update [PORT UUID] replace address=[NEW MAC]
手順11.2 誤った IPMI アドレスの修正
- 以下のコマンドを実行します。
$ ironic node-update [NODE UUID] replace driver_info/ipmi_address=[NEW IPMI ADDRESS]
11.2. ハードウェアイントロスペクションのトラブルシューティング
ironic-inspector) は、検出する ramdisk が応答しない場合にはデフォルトの 1 時間が経過するとタイムアウトします。検出 ramdisk のバグが原因とされる場合もありますが、通常は特に BIOS の起動設定などの環境の誤設定が原因で発生します。
ノードのイントロスペクション開始におけるエラー
baremetal introspection を使用します。ただし、ironic-inspector で直接イントロスペクションを実行している場合には、AVAILABLE の状態のノードの検出に失敗する可能性があります。このコマンドは、デプロイメント用であり、検出用ではないためです。検出前に、ノードの状態を MANAGEABLE に変更します。
$ ironic node-set-provision-state [NODE UUID] manage
$ ironic node-set-provision-state [NODE UUID] provide
イントロスペクション済みのノードが PXE でブートできない問題
ironic-inspector はアンダークラウドのファイアウォールの ironic-inspector チェーンに MAC アドレスを追加します。これにより、ノードは PXE でブートします。設定が正しいことを確認するには、以下のコマンドを実行します。
$ sudo iptables -L
Chain ironic-inspector (1 references) target prot opt source destination DROP all -- anywhere anywhere MAC xx:xx:xx:xx:xx:xx ACCEPT all -- anywhere anywhere
ironic-inspector キャッシュの破損です。この問題を修正するには、以下のコマンドで SQLite ファイルを削除します。
$ sudo rm /var/lib/ironic-inspector/inspector.sqlite
$ sudo ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade $ sudo systemctl restart openstack-ironic-inspector
検出プロセスの停止
ironic-inspector は直接検出プロセスを停止することができません。回避策として、プロセスがタイムアウトするまで待つことを推奨します。必要であれば、/etc/ironic-inspector/inspector.conf の timeout 設定を別のタイムアウト時間 (分) に変更します。
手順11.3 検出プロセスの停止
- 各ノードの電源状態を OFF に変更します。
$ ironic node-set-power-state [NODE UUID] off
ironic-inspectorキャッシュを削除して、再起動します。$ rm /var/lib/ironic-inspector/inspector.sqlite $ sudo systemctl restart openstack-ironic-inspector
ironic-inspectorキャッシュを再同期します。$ sudo ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade
イントロスペクション ramdisk へのアクセス
- 以下のように
openssl passwd -1コマンドに一時パスワードを指定して MD5 ハッシュを生成します。$ openssl passwd -1 mytestpassword $1$enjRSyIw$/fYUpJwr6abFy/d.koRgQ/
/httpboot/inspector.ipxeファイルを編集して、kernelで開始する行を特定し、rootpwdパラメーターと MD5 ハッシュを追記します。以下に例を示します。kernel http://192.2.0.1:8088/agent.kernel ipa-inspection-callback-url=http://192.168.0.1:5050/v1/continue ipa-inspection-collectors=default,extra-hardware,logs systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-inspection-benchmarks=cpu,mem,disk rootpwd="$1$enjRSyIw$/fYUpJwr6abFy/d.koRgQ/" selinux=0または、sshkeyパラメーターに SSH 公開キーを追記します。注記
rootpwdおよびsshkeyのパラメーターにはいずれも引用符が必要です。- イントロスペクションを開始し、
arpコマンドまたは DHCP のログから IP アドレスを特定します。$ arp $ sudo journalctl -u openstack-ironic-inspector-dnsmasq
- 一時パスワードまたは SSH キーを使用して、root ユーザーとして SSH 接続します。
$ ssh root@192.0.2.105
イントロスペクションストレージのチェック
$ sudo systemctl list-units openstack-swift*
11.3. オーバークラウドの作成のトラブルシューティング
- Orchestration (Heat および Nova サービス)
- Bare Metal Provisioning (Ironic サービス)
- デプロイメント後の設定 (Puppet)
11.3.1. オーケストレーション
$ heat stack-list +-----------------------+------------+--------------------+----------------------+ | id | stack_name | stack_status | creation_time | +-----------------------+------------+--------------------+----------------------+ | 7e88af95-535c-4a55... | overcloud | CREATE_FAILED | 2015-04-06T17:57:16Z | +-----------------------+------------+--------------------+----------------------+
openstack overcloud deploy を実行後のエラーメッセージを確認してください。
11.3.2. Bare Metal Provisioning
ironic をチェックして、全登録ノードと現在の状態を表示します。
$ ironic node-list +----------+------+---------------+-------------+-----------------+-------------+ | UUID | Name | Instance UUID | Power State | Provision State | Maintenance | +----------+------+---------------+-------------+-----------------+-------------+ | f1e261...| None | None | power off | available | False | | f0b8c1...| None | None | power off | available | False | +----------+------+---------------+-------------+-----------------+-------------+
- 結果の表の Provision State および Maintenance の列を確認します。以下をチェックしてください。
- 空の表または、必要なノード数よりも少ない
- Maintenance が True に設定されている
- Provision State が
manageableに設定されている
これにより、登録または検出プロセスに問題があることが分かります。たとえば、Maintenance が True に自動的に設定された場合は通常、ノードの電源管理の認証情報が間違っています。 - Provision State が
availableの場合には、ベアメタルのデプロイメントが開始される前に問題が発生します。 - Provision State が
activeで、Power State がpower onの場合には、ベアメタルのデプロイメントは正常に完了しますが、問題は、デプロイメント後の設定ステップで発生することになります。 - ノードの Provision State が
wait call-backの場合には、このノードではまだ Bare Metal Provisioning プロセスが完了していません。このステータスが変更されるまで待機してください。または、問題のあるノードの仮想コンソールに接続して、出力を確認します。 - Provision State が
errorまたはdeploy failedの場合には、このノードの Bare Metal Provisioning は失敗しています。ベアメタルノードの詳細を確認してください。$ ironic node-show [NODE UUID]
エラーの説明が含まれるlast_errorフィールドがないか確認します。エラーメッセージは曖昧なため、ログを使用して解明します。$ sudo journalctl -u openstack-ironic-conductor -u openstack-ironic-api
wait timeout errorが表示されており、Power State がpower onの場合には、問題のあるノードの仮想コンソールに接続して、出力を確認します。
11.3.3. デプロイメント後の設定
手順11.4 デプロイメント後の設定の問題の診断
- オーバークラウドスタックからのリソースをすべて表示して、どのスタックに問題があるのかを確認します。
$ heat resource-list overcloud
このコマンドでは、全リソースとその状態の表が表示されるため、CREATE_FAILEDの状態のリソースを探します。 - 問題のあるリソースを表示します。
$ heat resource-show overcloud [FAILED RESOURCE]
resource_status_reasonのフィールドの情報で診断に役立つ可能性のあるものを確認します。 novaコマンドを使用して、オーバークラウドノードの IP アドレスを表示します。$ nova list
デプロイされたノードの 1 つにheat-adminユーザーとしてログインします。たとえば、スタックのリソース一覧から、コントローラーノード上にエラーが発生していることが判明した場合には、コントローラーノードにログインします。heat-adminユーザーには、sudo アクセスが設定されています。$ ssh heat-admin@192.0.2.14
os-collect-configログを確認して、考えられる失敗の原因をチェックします。$ sudo journalctl -u os-collect-config
- 場合によっては、Nova によるノードへのデプロイメントが完全に失敗する可能性があります。このような場合にはオーバークラウドのロール種別の 1 つの
OS::Heat::ResourceGroupが失敗していることが示されるため、novaを使用して問題を確認します。$ nova list $ nova show [SERVER ID]
最もよく表示されるエラーは、No valid host was foundのエラーメッセージです。このエラーのトラブルシューティングについては、「"No Valid Host Found" エラーのトラブルシューティング」を参照してください。その他の場合は、以下のログファイルを参照してトラブルシューティングを実施してください。/var/log/nova/*/var/log/heat/*/var/log/ironic/*
- システムのハードウェアおよび設定に関する情報を収集する SOS ツールセットを使用します。この情報は、診断目的とデバッグに使用します。SOS は通常、技術者や開発者のサポートに使用され、アンダークラウドでもオーバークラウドでも便利です。以下のコマンドで
sosパッケージをインストールします。$ sudo yum install sos
レポートを生成します。$ sudo sosreport --all-logs
表11.1 コントローラーノードの設定ステップ
|
ステップ
|
説明
|
|---|---|
ControllerLoadBalancerDeployment_Step1
|
Pacemaker、RabbitMQ、Memcached、Redis、および Galera を含むロードバランシング用のソフトウェアの初期設定
|
ControllerServicesBaseDeployment_Step2
|
Pacemaker の設定、HAProxy、MongoDB、Galera、Ceph Monitor、OpenStack Platform の各種サービス用のデータベースの初期化を含む、クラスターの初期設定
|
ControllerRingbuilderDeployment_Step3
|
OpenStack Object Storage (
swift) 用のリングファイルの初期構築
|
ControllerOvercloudServicesDeployment_Step4
|
全 OpenStack Platform サービスの設定 (
nova、neutron、cinder、sahara、ceilometer、heat、horizon、aodh、gnocchi)。
|
ControllerOvercloudServicesDeployment_Step5
|
サービス起動順序やサービス起動パラメーターを決定するための制約事項を含む、Pacemaker でのサービスの起動設定値の設定
|
ControllerOvercloudServicesDeployment_Step6
|
オーバークラウドの設定の最終段階
|
11.4. プロビジョニングネットワークでの IP アドレスの競合に対するトラブルシューティング
手順11.5 アクティブな IP アドレスの特定
nmapをインストールします。# yum install nmap
nmapを使用して、アクティブなアドレスの IP アドレス範囲をスキャンします。この例では、192.0.2.0/24の範囲をスキャンします。この値は、プロビジョニングネットワークの IP サブネットに置き換えてください (CIDR 表記のビットマスク)。# nmap -sn 192.0.2.0/24
nmapスキャンの出力を確認します。たとえば、アンダークラウドおよびサブネット上に存在するその他のホストの IP アドレスを確認する必要があります。アクティブな IP アドレスがundercloud.confの IP アドレス範囲と競合している場合には、オーバークラウドノードのイントロスペクションまたはデプロイを実行する前に、IP アドレスの範囲を変更するか、IP アドレスを解放するかのいずれかを行う必要があります。# nmap -sn 192.0.2.0/24 Starting Nmap 6.40 ( http://nmap.org ) at 2015-10-02 15:14 EDT Nmap scan report for 192.0.2.1 Host is up (0.00057s latency). Nmap scan report for 192.0.2.2 Host is up (0.00048s latency). Nmap scan report for 192.0.2.3 Host is up (0.00045s latency). Nmap scan report for 192.0.2.5 Host is up (0.00040s latency). Nmap scan report for 192.0.2.9 Host is up (0.00019s latency). Nmap done: 256 IP addresses (5 hosts up) scanned in 2.45 seconds
11.5. "No Valid Host Found" エラーのトラブルシューティング
/var/log/nova/nova-conductor.log に、以下のエラーが含まれる場合があります。
NoValidHost: No valid host was found. There are not enough hosts available.
- イントロスペクションが正常に完了することを確認してください。または、各ノードに必要な Ironic ノードのプロパティーが含まれていることをチェックしてください。各ノードに以下のコマンドを実行します。
$ ironic node-show [NODE UUID]
propertiesJSON フィールドのcpus、cpu_arch、memory_mb、local_gbキーに有効な値が指定されていることを確認してください。 - 使用する Nova フレーバーが、必要なノード数において、上記の Ironic ノードプロパティーを超えていないかどうかを確認します。
$ nova flavor-show [FLAVOR NAME]
ironic node-listの通りにavailableの状態のノードが十分に存在することを確認します。ノードの状態がmanageableの場合は通常、イントロスペクションに失敗しています。- また、ノードがメンテナンスモードではないことを確認します。
ironic node-listを使用してチェックしてください。通常、自動でメンテナンスモードに切り替わるノードは、電源の認証情報が間違っています。認証情報を確認して、メンテナンスモードをオフにします。$ ironic node-set-maintenance [NODE UUID] off
- Automated Health Check (AHC) ツールを使用して、自動でノードのタグ付けを行う場合には、各フレーバー/フレーバーに対応するノードが十分に存在することを確認します。
propertiesフィールドのcapabilitiesキーにironic node-showがないか確認します。たとえば、コンピュートロールのタグを付けられたノードには、profile:computeが含まれているはずです。 - イントロスペクションの後に Ironic から Nova にノードの情報が反映されるには若干時間がかかります。これは通常、director のツールが原因です。ただし、一部のステップを手動で実行した場合には、短時間ですが、Nova でノードが利用できなくなる場合があります。以下のコマンドを使用して、システム内の合計リソースをチェックします。
$ nova hypervisor-stats
11.6. オーバークラウド作成後のトラブルシューティング
11.6.1. オーバークラウドスタックの変更
overcloud スタックを変更する際に問題が発生する場合があります。スタックの変更例には、以下のような操作が含まれます。
- ノードのスケーリング
- ノードの削除
- ノードの置き換え
overcloud スタックを変更する場合に従うべきガイドラインを以下に記載します。
overcloud Heat スタック更新の問題の診断に役立てることができます。特に、以下のコマンドを使用して問題のあるリソースを特定します。
heat stack-list --show-nested- 全スタックを一覧表示します。
--show-nestedはすべての子スタックとそれぞれの親スタックを表示します。このコマンドは、スタックでエラーが発生した時点を特定するのに役立ちます。 heat resource-list overcloudovercloudスタック内の全リソースとそれらの状態を一覧表示します。このコマンドは、スタック内でどのリソースが原因でエラーが発生しているかを特定するのに役立ちます。このリソースのエラーの原因となっている Heat テンプレートコレクションと Puppet モジュール内のパラメーターと設定を特定することができます。heat event-list overcloudovercloudスタックに関連するすべてのイベントを時系列で一覧表示します。これには、スタック内の全リソースのイベント開始/完了時間とエラーが含まれます。この情報は、リソースの障害点を特定するのに役立ちます。
11.6.2. コントローラーサービスのエラー
pcs) コマンドは、Pacemaker クラスターを管理するツールです。クラスター内のコントローラーノードでこのコマンドを実行して、設定およびモニタリングの機能を実行します。高可用性クラスター上のオーバークラウドサービスのトラブルシューティングに役立つコマンドを以下にいくつか記載します。
pcs status- 有効なリソース、エラーが発生したリソース、オンラインのノードなどを含む、クラスター全体のステータス概要を提供します。
pcs resource show- リソースの一覧をそれぞれのノードで表示します。
pcs resource disable [resource]- 特定のリソースを停止します。
pcs resource enable [resource]- 特定のリソースを起動します。
pcs cluster standby [node]- ノードをスタンバイモードに切り替えます。そのノードはクラスターで利用できなくなります。このコマンドは、クラスターに影響を及ぼさずに特定のノードメンテナンスを実行するのに役立ちます。
pcs cluster unstandby [node]- ノードをスタンバイモードから解除します。ノードはクラスター内で再度利用可能となります。
/var/log/ でそれぞれのコンポーネントのログファイルを確認します。
11.6.3. Compute サービスのエラー
- 以下の
systemd機能を使用してサービスのステータスを確認します。$ sudo systemctl status openstack-nova-compute.service
同様に、以下のコマンドを使用して、サービスのsystemdジャーナルを確認します。$ sudo journalctl -u openstack-nova-compute.service
- コンピュートノードのプライマリーログファイルは
/var/log/nova/nova-compute.logです。コンピュートノードの通信で問題が発生した場合には、このログファイルは診断を開始するのに適した場所です。 - コンピュートノードでメンテナンスを実行する場合には、既存のインスタンスをホストから稼働中のコンピュートノードに移行し、ノードを無効にします。ノードの移行についての詳しい情報は、「オーバークラウドのコンピュートノードからの仮想マシンの移行」 を参照してください。
11.6.4. Ceph Storage サービスのエラー
11.7. アンダークラウドの調整
- OpenStack 認証サービス (
keystone) は、トークンベースのシステムを使用して、他の OpenStack サービスにアクセスします。一定の期間が経過すると、データベースは未使用のトークンを多数累積します。 データベース内のトークンテーブルをフラッシュする cron ジョブを作成することを推奨します。たとえば、毎日午前 4 時にトークンテーブルをフラッシュするには、以下のように設定します。0 04 * * * /bin/keystone-manage token_flush
- Heat は、
openstack overcloud deployを実行するたびにデータベースのraw_templateテーブルにある全一時ファイルのコピーを保存します。raw_templateテーブルは、過去のテンプレートをすべて保持し、サイズが増加します。raw_templatesテーブルにある未使用のテンプレートを削除するには、以下のように、日次の cron ジョブを作成して、未使用のまま 1 日以上データベースに存在するテンプレートを消去してください。0 04 * * * /bin/heat-manage purge_deleted -g days 1
openstack-heat-engineおよびopenstack-heat-apiサービスは、一度に過剰なリソースを消費する可能性があります。そのような場合は/etc/heat/heat.confでmax_resources_per_stack=-1を設定して、Heat サービスを再起動します。$ sudo systemctl restart openstack-heat-engine openstack-heat-api
- directorには、同時にノードをプロビジョニングするリソースが十分にない場合があります。同時に提供できるノード数はデフォルトで 10 個となっています。同時にプロビジョニングするノード数を減らすには、
/etc/nova/nova.confのmax_concurrent_buildsパラメーターを 10 未満に設定して Nova サービスを再起動します。$ sudo systemctl restart openstack-nova-api openstack-nova-scheduler
/etc/my.cnf.d/server.cnfファイルを編集します。調整が推奨される値は、以下のとおりです。- max_connections
- データベースに同時接続できる数。推奨の値は 4096 です。
- innodb_additional_mem_pool_size
- データベースがデータのディクショナリーの情報や他の内部データ構造を保存するのに使用するメモリープールサイズ (バイト単位)。デフォルトは通常 8 M ですが、アンダークラウドの理想の値は 20 M です。
- innodb_buffer_pool_size
- データベースがテーブルやインデックスデータをキャッシュするメモリー領域つまり、バッファープールのサイズ (バイト単位)。通常デフォルトは 128 M で、アンダークラウドの理想の値は 1000 M です。
- innodb_flush_log_at_trx_commit
- コミット操作の厳密な ACID 準拠と、コミット関連の I/O 操作を再編成してバッチで実行することによって実現可能なパフォーマンス向上の間のバランスを制御します。1 に設定します。
- innodb_lock_wait_timeout
- 行のロックがされるまで、データベースのトランザクションが待機するのを中断するまでの期間 (秒単位)。
- innodb_max_purge_lag
- この変数は、解析操作が遅れている場合に INSERT、UPDATE、DELETE 操作を遅延させる方法を制御します。10000 に設定します。
- innodb_thread_concurrency
- 同時に実行するオペレーティングシステムのスレッド数の上限。理想的には、各 CPU およびディスクリソースに対して少なくとも 2 つのスレッドを提供します。たとえば、クワッドコア CPU と単一のディスクを使用する場合は、スレッドを 10 個使用します。
- オーバークラウドを作成する際には、Heat に十分なワーカーが配置されているようにします。通常、アンダークラウドに CPU がいくつあるかにより左右されます。ワーカーの数を手動で設定するには、
/etc/heat/heat.confファイルを編集してnum_engine_workersパラメーターを必要なワーカー数 (理想は 4) に設定し、Heat エンジンを再起動します。$ sudo systemctl restart openstack-heat-engine
11.8. アンダークラウドとオーバークラウドの重要なログ
表11.2 アンダークラウドとオーバークラウドの重要なログ
|
情報
|
アンダークラウドまたはオーバークラウド
|
ログの場所
|
|---|---|---|
|
一般的な director サービス
|
アンダークラウド
| /var/log/nova/*
/var/log/heat/*
/var/log/ironic/*
|
|
イントロスペクション
|
アンダークラウド
| /var/log/ironic/*
/var/log/ironic-inspector/*
|
|
プロビジョニング
|
アンダークラウド
| /var/log/ironic/*
|
|
cloud-init ログ
|
オーバークラウド
| /var/log/cloud-init.log
|
|
オーバークラウドの設定 (最後に実行した Puppet のサマリー)
|
オーバークラウド
| /var/lib/puppet/state/last_run_summary.yaml
|
|
オーバークラウドの設定 (最後に実行した Puppet からのレポート)
|
オーバークラウド
| /var/lib/puppet/state/last_run_report.yaml
|
|
オーバークラウドの設定 (全 Puppet レポート)
|
オーバークラウド
| /var/lib/puppet/reports/overcloud-*/*
|
|
一般のオーバークラウドサービス
|
オーバークラウド
| /var/log/ceilometer/*
/var/log/ceph/*
/var/log/cinder/*
/var/log/glance/*
/var/log/heat/*
/var/log/horizon/*
/var/log/httpd/*
/var/log/keystone/*
/var/log/libvirt/*
/var/log/neutron/*
/var/log/nova/*
/var/log/openvswitch/*
/var/log/rabbitmq/*
/var/log/redis/*
/var/log/swift/*
|
|
高可用性ログ
|
オーバークラウド
| /var/log/pacemaker.log
|
付録A SSL/TLS 証明書の設定
認証局の作成
$ openssl genrsa -out ca.key.pem 4096 $ openssl req -key ca.key.pem -new -x509 -days 7300 -extensions v3_ca -out ca.crt.pem
openssl req コマンドは、認証局に関する特定の情報を要求します。それらの情報を指定してください。
ca.crt.pem という名前の証明書ファイルが作成されます。Red Hat Openstack Platform 環境にアクセスする予定の各クライアントにこのファイルをコピーしてから、以下のコマンドを実行して、認証局のトラストバンドルに追加します。
$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trust extract
SSL/TLS 証明書の作成
$ cp /etc/pki/tls/openssl.cnf .
openssl.cnf ファイルを編集して、director に使用する SSL パラメーターを設定します。変更するパラメーターの種別には以下のような例が含まれます。
[req] distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] countryName = Country Name (2 letter code) countryName_default = AU stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Queensland localityName = Locality Name (eg, city) localityName_default = Brisbane organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = Red Hat commonName = Common Name commonName_default = 192.168.0.1 commonName_max = 64 [ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] IP.1 = 192.168.0.1 DNS.1 = 192.168.0.1 DNS.2 = instack.localdomain DNS.3 = vip.localdomain
重要
commonName_default をパブリック API の IP アドレスに設定するか、完全修飾ドメイン名を使用している場合は完全修飾ドメイン名に設定します。
- アンダークラウドでは、
undercloud.confでundercloud_public_vipパラメーターを使用します。この IP アドレスの完全修飾ドメイン名を使用する場合は、そのドメイン名を使用してください。
- オーバークラウドでは、パブリック API の IP アドレスを使用します。これは、ネットワーク分離環境ファイルにある
ExternalAllocationPoolsパラメーターの最初のアドレスです。この IP アドレスに完全修飾ドメイン名を使用する場合には、そのドメイン名を使用します。
alt_names セクションの IP エントリーおよび DNS エントリーとして、同じパブリック API の IP アドレスを追加します。DNS も使用する場合は、同じセクションに DNS エントリーとしてそのサーバーのホスト名を追加します。openssl.cnf の詳しい情報は man openssl.cnf を実行してください。
server.key.pem)、証明書の署名要求 (server.csr.pem)、および署名済みの証明書 (server.crt.pem) を生成します。
$ openssl genrsa -out server.key.pem 2048 $ openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem $ sudo openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.cert.pem
重要
openssl req コマンドは、Common Name を含む、証明書に関するいくつかの情報を尋ねます。Common Name は、(作成する証明書セットに応じて) アンダークラウドまたはオーバークラウドのパブリック API の IP アドレスに設定するようにしてください。openssl.cnf ファイルは、この IP アドレスをデフォルト値として使用する必要があります。
アンダークラウドで証明書を使用する場合
$ cat server.crt.pem server.key.pem > undercloud.pem
undercloud.conf ファイルの undercloud_service_certificate オプションに使用するための undercloud.pem が作成されます。このファイルは、HAProxy ツールが読み取ることができるように、特別な SELinux コンテキストが必要です。以下の例をガイドとして利用してください。
$ sudo mkdir /etc/pki/instack-certs $ sudo cp ~/undercloud.pem /etc/pki/instack-certs/. $ sudo semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" $ sudo restorecon -R /etc/pki/instack-certs
$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trust extract
undercloud.conf ファイルの undercloud_service_certificate オプションに undercloud.pem の場所を追記します。以下に例を示します。
undercloud_service_certificate = /etc/pki/instack-certs/undercloud.pem
オーバークラウドで証明書を使用する場合
enable-tls.yaml ファイルと合わせてこの証明書を使用します。
付録B 電源管理ドライバー
B.1. Dell Remote Access Controller (DRAC)
- pm_type
- このオプションを
pxe_dracに設定します。 - pm_user, pm_password
- DRAC のユーザー名およびパスワード
- pm_addr
- DRAC ホストの IP アドレス
B.2. Integrated Lights-Out (iLO)
- pm_type
- このオプションを
pxe_iloに設定します。 - pm_user, pm_password
- iLO のユーザー名およびパスワード
- pm_addr
- iLO インターフェースの IP アドレス
補注
/etc/ironic/ironic.confファイルを編集して、enabled_driversオプションにpxe_iloを追加し、このドライバーを有効化します。- また director では、iLO 向けに追加のユーティリティーセットが必要です。
python-proliantutilsパッケージをインストールしてopenstack-ironic-conductorサービスを再起動します。$ sudo yum install python-proliantutils $ sudo systemctl restart openstack-ironic-conductor.service
- HP ノードは、正常にイントロスペクションするには 2015 年のファームウェアバージョンが必要です。ファームウェアバージョン 1.85 (2015 年 5 月 13 日) を使用したノードで、director は正常にテストされています。
- 共有 iLO ポートの使用はサポートされません。
B.3. iBoot
- pm_type
- このオプションを
pxe_ibootに設定します。 - pm_user, pm_password
- iBoot のユーザー名およびパスワード
- pm_addr
- iBoot インターフェースの IP アドレス
- pm_relay_id (オプション)
- ホストの iBoot リレー ID。デフォルトは 1 です。
- pm_port (オプション)
- iBoot ポート。デフォルトは 9100 です。
補注
/etc/ironic/ironic.confファイルを編集して、enabled_driversオプションにpxe_ibootを追加し、このドライバーを有効化します。
B.4. Cisco Unified Computing System (UCS)
- pm_type
- このオプションを
pxe_ucsに設定します。 - pm_user, pm_password
- UCS のユーザー名およびパスワード
- pm_addr
- UCS インターフェースの IP アドレス
- pm_service_profile
- 使用する UCS サービスプロファイル。通常
org-root/ls-[service_profile_name]の形式を取ります。たとえば、以下のとおりです。"pm_service_profile": "org-root/ls-Nova-1"
補注
/etc/ironic/ironic.confファイルを編集して、enabled_driversオプションにpxe_ucsを追加し、このドライバーを有効化します。- director には、UCS 用に追加のユーティリティーセットも必要です。
python-UcsSdkパッケージをインストールして、openstack-ironic-conductorサービスを再起動します。$ sudo yum install python-UcsSdk $ sudo systemctl restart openstack-ironic-conductor.service
B.5. Fujitsu Integrated Remote Management Controller (iRMC)
重要
- pm_type
- このオプションを
pxe_irmcに設定します。 - pm_user, pm_password
- iRMC インターフェースのユーザー名とパスワード
- pm_addr
- iRMC インターフェースの IP アドレス
- pm_port (オプション)
- iRMC の操作に使用するポート。デフォルトは 443 です。
- pm_auth_method (オプション)
- iRMC 操作の認証方法。
basicまたはdigestを使用します。デフォルトはbasicです。 - pm_client_timeout (オプション)
- iRMC 操作のタイムアウト (秒単位)。デフォルトは 60 秒です。
- pm_sensor_method (オプション)
- センサーデータの取得方法。
ipmitoolまたはscciです。デフォルトはipmitoolです。
補注
/etc/ironic/ironic.confファイルを編集して、enabled_driversオプションにpxe_irmcを追加し、このドライバーを有効化します。- センサーの方法として SCCI を有効にした場合には、director には、追加のユーティリティーセットも必要です。
python-scciclientパッケージをインストールして、openstack-ironic-conductorサービスを再起動します。$ yum install python-scciclient $ sudo systemctl restart openstack-ironic-conductor.service
B.6. SSH および Virsh
重要
- pm_type
- このオプションを
pxe_sshに設定します。 - pm_user, pm_password
- SSH ユーザー名および秘密鍵の内容。秘密鍵は一行に記載する必要があり、改行はエスケープ文字 (
\n) に置き換えます。以下に例を示します。-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEA .... kk+WXt9Y=\n-----END RSA PRIVATE KEY-----
SSH 公開鍵を libvirt サーバーのauthorized_keysコレクションに追加します。 - pm_addr
- virsh ホストの IP アドレス
補注
- libvirt をホストするサーバーでは、公開鍵と SSH のキーペアを
pm_password属性に設定する必要があります。 - 選択した
pm_userには libvirt 環境への完全なアクセス権が指定されているようにします。
B.7. フェイク PXE ドライバー
重要
- pm_type
- このオプションを
fake_pxeに設定します。
補注
- このドライバーは、電源管理を制御しないので、認証情報は使用しません。
/etc/ironic/ironic.confファイルを編集して、enabled_driversオプションにfake_pxeを追加し、このドライバーを有効化します。ファイルを編集した後には、baremetal サービスを再起動します。$ sudo systemctl restart openstack-ironic-api openstack-ironic-conductor
- ノードでイントロスペクションを実行する際には、
openstack baremetal introspection bulk startコマンドの実行後に手動で電源をオンにします。 - オーバークラウドのデプロイ実行時には、
ironic node-listコマンドでノードのステータスを確認します。ノードのステータスがdeployingからdeploy wait-callbackに変わるまで待ってから、手動でノードの電源をオンにします。 - オーバークラウドのプロビジョニングプロセスが完了したら、ノードを再起動します。プロビジョニングが完了したかどうかをチェックするには、
ironic node-listコマンドでノードのステータスをチェックし、activeに変わるのを待ってから、すべてのオーバークラウドノードを手動で再起動します。
付録C プロファイルの自動タグ付け
- ポリシーにより、パフォーマンスの低いノードまたは不安定なノードを特定して、オーバークラウドで使用されないように隔離することができます。
- ポリシーにより、ノードを自動的に特定のプロファイルにタグ付けするかどうかを定義することができます。
description
"description": "A new rule for my node tagging policy"
condition
- field
- 評価するフィールドを定義します。
- op
- 評価に使用する演算を定義します。これには、以下が含まれます。
eq: 等しいne: 等しくないlt: より小さいgt: より大きいle: より小さいか等しいge: より大きいか等しいin-net: IP アドレスが指定のネットワーク内にあることをチェックします。matches: 指定の正規表現と完全に一致する必要があります。contains: 値には、指定の正規表現が含まれる必要があります。is-empty: フィールドが空欄であることをチェックします。
- invert
- 評価の結果をインバージョン (反転) するかどうかを定義するブール値
- multiple
- 複数の結果が存在する場合に、使用する評価を定義します。これには、以下が含まれます。
any: いずれかの結果が一致する必要があります。all: すべての結果が一致する必要があります。first: 最初の結果が一致する必要があります。
- value
- 評価内の値を定義します。フィールドと演算の結果でその値となった場合には、条件は true の結果を返します。そうでない場合には、条件は false の結果を返します。
"conditions": [
{
"field": "local_gb",
"op": "ge",
"value": 1024
}
],
action
action キーと、action の値に応じて追加のキーが使用されます。
fail: イントロスペクションが失敗します。失敗のメッセージには、messageパラメーターが必要です。set-attribute: Ironic ノードで属性を設定します。Ironic の属性へのパス (例:/driver_info/ipmi_address) であるpathフィールドと、設定するvalueが必要です。set-capability: Ironic ノードでケイパビリティーを設定します。新しいケイパビリティーに応じた名前と値を指定するnameおよびvalueのフィールドが必要です。同じケイパビリティーの既存の値は置き換えられます。たとえば、これを使用してノードのプロファイルを定義します。extend-attribute:set-attributeと同じですが、既存の値を一覧として扱い、その一覧に値を追記します。オプションのuniqueパラメーターが True に設定すると、対象の値がすでに一覧に含まれている場合には何も追加されません。
"actions": [
{
"action": "set-capability",
"name": "profile",
"value": "swift-storage"
}
]
ポリシーファイルの例
rules.json) の一例です。
[
{
"description": "Fail introspection for unexpected nodes",
"conditions": [
{
"op": "lt",
"field": "memory_mb",
"value": 4096
}
],
"actions": [
{
"action": "fail",
"message": "Memory too low, expected at least 4 GiB"
}
]
},
{
"description": "Assign profile for object storage",
"conditions": [
{
"op": "ge",
"field": "local_gb",
"value": 1024
}
],
"actions": [
{
"action": "set-capability",
"name": "profile",
"value": "swift-storage"
}
]
},
{
"description": "Assign possible profiles for compute and controller",
"conditions": [
{
"op": "lt",
"field": "local_gb",
"value": 1024
},
{
"op": "ge",
"field": "local_gb",
"value": 40
}
],
"actions": [
{
"action": "set-capability",
"name": "compute_profile",
"value": "1"
},
{
"action": "set-capability",
"name": "control_profile",
"value": "1"
},
{
"action": "set-capability",
"name": "profile",
"value": null
}
]
}
]
- メモリーが 4096 MiB 未満の場合にイントロスペクションが失敗する。このようなルールを適用して、クラウドに含まれないようにノードを除外することができます。
- ハードドライブのサイズが 1 TiB 上のノードの場合は swift-storage プロファイルが無条件で割り当てられる。
- ノードのハードドライブが 1 TiB 未満であるが 40 GiB よりも大きい場合はコンピュートノードかコントロールノードかのいずれかです。
openstack overcloud profiles matchが後ほど最終的に判断を下せるように 2 つのケーパビリティー (compute_profileおよびcontrol_profile) を割り当てます。これを機能させるには、既存のプロファイルのケイパビリティーを削除してください。削除しない場合は優先順位が設定されています。
注記
profile 機能を割り当てる場合は常に、既存の値よりこの割り当てた値が優先されます。ただし、既存のプロファイル機能があるノードについては、[PROFILE]_profile 機能は無視されます。
ポリシーファイルのインポート
$ openstack baremetal introspection rule import rules.json
$ openstack baremetal introspection bulk start
$ openstack overcloud profiles list
$ openstack baremetal introspection rule purge
ノードとロールの適合
openstack overcloud profiles match コマンドを使用して、特定のロールに割り当てるノード数を指定します。たとえば、コントローラーノード 3 台、コンピュートノード 3 台、Ceph Storage ノード 3 台を自動的に適合させるには、以下のコマンドを使用します。
$ openstack overcloud profiles match --control-flavor control --control-scale 3 --compute-flavor compute --compute-scale 3 --ceph-storage-flavor ceph-storage --ceph-storage-scale 3
プロファイルの自動タグ付けのプロパティー
field の属性に対する以下のノードプロパティーを評価します。
|
プロパティー
|
description
|
|---|---|
memory_mb
|
ノードのメモリーサイズ (MB)
|
cpus
|
ノードの CPU の合計コア数
|
cpu_arch
|
ノードの CPU のアーキテクチャー
|
local_gb
|
ノードのルートディスクのストレージの合計容量。ノードのルートディスクの設定についての詳しい説明は、「ノードの root ディスクの定義」を参照してください。
|
付録D ネットワークインターフェースのパラメーター
表D.1 インターフェースオプション
|
オプション
|
デフォルト
|
説明
|
|---|---|---|
|
名前
| |
インターフェース名
|
|
use_dhcp
|
False
|
DHCP を使用して IP アドレスを取得します。
|
|
use_dhcpv6
|
False
|
DHCP を使用して v6 IP アドレスを取得します。
|
|
addresses
| |
インターフェースに割り当てられる IP アドレスのシーケンス
|
|
routes
| |
インターフェースに割り当てられるルートのシーケンス
|
|
mtu
|
1500
|
接続の最大伝送単位 (MTU: Maximum Transmission Unit)
|
|
primary
|
False
|
プライマリーインターフェースとしてインターフェースを定義します。
|
|
defroute
|
True
|
このインターフェースをデフォルトルートとして使用します。
|
|
persist_mapping
|
False
|
システム名の代わりにデバイスのエイリアス設定を記述します。
|
|
dhclient_args
|
なし
|
DHCP クライアントに渡す引数
|
|
dns_servers
|
なし
|
インターフェースに使用する DNS サーバーの一覧
|
表D.2 VLAN オプション
|
オプション
|
デフォルト
|
説明
|
|---|---|---|
|
vlan_id
| |
VLAN ID
|
|
device
| |
VLAN をアタッチする VLAN の親デバイス。たとえば、このパラメーターを使用して、ボンディングされたインターフェースデバイスに VLAN をアタッチします。
|
|
use_dhcp
|
False
|
DHCP を使用して IP アドレスを取得します。
|
|
use_dhcpv6
|
False
|
DHCP を使用して v6 IP アドレスを取得します。
|
|
addresses
| |
VLAN を割り当てる IP アドレスのシーケンス
|
|
routes
| |
VLAN を割り当てるルートのシーケンス
|
|
mtu
|
1500
|
接続の最大伝送単位 (MTU: Maximum Transmission Unit)
|
|
primary
|
False
|
プライマリーインターフェースとして VLAN を定義します。
|
|
defroute
|
True
|
このインターフェースをデフォルトルートとして使用します。
|
|
persist_mapping
|
False
|
システム名の代わりにデバイスのエイリアス設定を記述します。
|
|
dhclient_args
|
なし
|
DHCP クライアントに渡す引数
|
|
dns_servers
|
なし
|
VLAN に使用する DNS サーバーの一覧
|
表D.3 OVS ボンディングオプション
|
オプション
|
デフォルト
|
説明
|
|---|---|---|
|
名前
| |
ボンディング名
|
|
use_dhcp
|
False
|
DHCP を使用して IP アドレスを取得します。
|
|
use_dhcpv6
|
False
|
DHCP を使用して v6 IP アドレスを取得します。
|
|
addresses
| |
ボンディングに割り当てられる IP アドレスのシーケンス
|
|
routes
| |
ボンディングに割り当てられるルートのシーケンス
|
|
mtu
|
1500
|
接続の最大伝送単位 (MTU: Maximum Transmission Unit)
|
|
primary
|
False
|
プライマリーインターフェースとしてインターフェースを定義します。
|
|
members
| |
ボンディングで使用するインターフェースオブジェクトのシーケンス
|
|
ovs_options
| |
ボンディング作成時に OVS に渡すオプションセット
|
|
ovs_extra
| |
ボンディングのネットワーク設定ファイルで OVS_EXTRA パラメーターとして設定するオプションセット
|
|
defroute
|
True
|
このインターフェースをデフォルトルートとして使用します。
|
|
persist_mapping
|
False
|
システム名の代わりにデバイスのエイリアス設定を記述します。
|
|
dhclient_args
|
なし
|
DHCP クライアントに渡す引数
|
|
dns_servers
|
なし
|
ボンディングに使用する DNS サーバーの一覧
|
表D.4 OVS ブリッジオプション
|
オプション
|
デフォルト
|
説明
|
|---|---|---|
|
名前
| |
ブリッジ名
|
|
use_dhcp
|
False
|
DHCP を使用して IP アドレスを取得します。
|
|
use_dhcpv6
|
False
|
DHCP を使用して v6 IP アドレスを取得します。
|
|
addresses
| |
ブリッジに割り当てられる IP アドレスのシーケンス
|
|
routes
| |
ブリッジに割り当てられるルートのシーケンス
|
|
mtu
|
1500
|
接続の最大伝送単位 (MTU: Maximum Transmission Unit)
|
|
members
| |
ブリッジで使用するインターフェース、VLAN、ボンディングオブジェクトのシーケンス
|
|
ovs_options
| |
ブリッジ作成時に OVS に渡すオプションセット
|
|
ovs_extra
| |
ブリッジのネットワーク設定ファイルで OVS_EXTRA パラメーターとして設定するオプションセット
|
|
defroute
|
True
|
このインターフェースをデフォルトルートとして使用します。
|
|
persist_mapping
|
False
|
システム名の代わりにデバイスのエイリアス設定を記述します。
|
|
dhclient_args
|
なし
|
DHCP クライアントに渡す引数
|
|
dns_servers
|
なし
|
ブリッジに使用する DNS サーバーの一覧
|
表D.5 Linux ボンディングオプション
|
オプション
|
デフォルト
|
説明
|
|---|---|---|
|
名前
| |
ボンディング名
|
|
use_dhcp
|
False
|
DHCP を使用して IP アドレスを取得します。
|
|
use_dhcpv6
|
False
|
DHCP を使用して v6 IP アドレスを取得します。
|
|
addresses
| |
ボンディングに割り当てられる IP アドレスのシーケンス
|
|
routes
| |
ボンディングに割り当てられるルートのシーケンス
|
|
mtu
|
1500
|
接続の最大伝送単位 (MTU: Maximum Transmission Unit)
|
|
primary
|
False
|
プライマリーインターフェースとしてインターフェースを定義します。
|
|
members
| |
ボンディングで使用するインターフェースオブジェクトのシーケンス
|
|
bonding_options
| |
ボンディングを作成する際の一式のオプション。nmcli ツールの使用方法についての詳細は、『Red Hat Enterprise Linux 7 ネットワークガイド』の「4.5.1. ボンディングモジュールのディレクティブ」を参照してください。
|
|
defroute
|
True
|
このインターフェースをデフォルトルートとして使用します。
|
|
persist_mapping
|
False
|
システム名の代わりにデバイスのエイリアス設定を記述します。
|
|
dhclient_args
|
なし
|
DHCP クライアントに渡す引数
|
|
dns_servers
|
なし
|
ボンディングに使用する DNS サーバーの一覧
|
表D.6 Linux Bridge オプション
|
オプション
|
デフォルト
|
説明
|
|---|---|---|
|
名前
| |
ブリッジ名
|
|
use_dhcp
|
False
|
DHCP を使用して IP アドレスを取得します。
|
|
use_dhcpv6
|
False
|
DHCP を使用して v6 IP アドレスを取得します。
|
|
addresses
| |
ブリッジに割り当てられる IP アドレスのシーケンス
|
|
routes
| |
ブリッジに割り当てられるルートのシーケンス
|
|
mtu
|
1500
|
接続の最大伝送単位 (MTU: Maximum Transmission Unit)
|
|
members
| |
ブリッジで使用するインターフェース、VLAN、ボンディングオブジェクトのシーケンス
|
|
defroute
|
True
|
このインターフェースをデフォルトルートとして使用します。
|
|
persist_mapping
|
False
|
システム名の代わりにデバイスのエイリアス設定を記述します。
|
|
dhclient_args
|
なし
|
DHCP クライアントに渡す引数
|
|
dns_servers
|
なし
|
ブリッジに使用する DNS サーバーの一覧
|
付録E ネットワークインターフェースのテンプレート例
E.1. インターフェースの設定
network_config:
# Add a DHCP infrastructure network to nic2
-
type: interface
name: nic2
use_dhcp: true
-
type: ovs_bridge
name: br-bond
members:
-
type: ovs_bond
name: bond1
ovs_options: {get_param: BondInterfaceOvsOptions}
members:
# Modify bond NICs to use nic3 and nic4
-
type: interface
name: nic3
primary: true
-
type: interface
name: nic4
eth0、eno2 など) ではなく、番号付きのインターフェース (nic1、nic2 など) を使用した場合には、ロール内のホストのネットワークインターフェースは、まったく同じである必要はありません。たとえば、あるホストに em1 と em2 のインターフェースが指定されており、別のホストには eno1 と eno2 が指定されていても、両ホストの NIC は、 nic1 および nic2 として参照することができます。
eth0、eth1などのethX。これらは、通常オンボードのインターフェースです。eno0、eno1などのenoX。これらは、通常オンボードのインターフェースです。enp3s0、enp3s1、ens3などの英数字順のenXインターフェース。これらは通常アドオンのインターフェースです。
nic1 から nic4 を使用してケーブル 4 本のみを結線します。
E.2. ルートおよびデフォルトルートの設定
defroute=no を設定することを推奨します。
nic3) をデフォルトのルートに指定する場合には、以下の YAML を使用して別の DHCP インターフェース (nic2) 上のデフォルトのルートを無効にします。
# No default route on this DHCP interface - type: interface name: nic2 use_dhcp: true defroute: false # Instead use this DHCP interface as the default route - type: interface name: nic3 use_dhcp: true
注記
defroute パラメーターは DHCP で取得したルートのみに適用されます。
- type: vlan
device: bond1
vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
routes:
- ip_netmask: 10.1.2.0/24
next_hop: 172.17.0.1
E.3. Floating IP のためのネイティブ VLAN の使用
br-ex の代わりに br-int を使用して直接マッピングされます。このモデルにより、VLAN または複数の物理接続のいずれかを使用した複数の Floating IP ネットワークが可能となります。
parameter_defaults セクションで NeutronExternalNetworkBridge パラメーターを使用します。
parameter_defaults:
# Set to "br-ex" when using floating IPs on the native VLAN
NeutronExternalNetworkBridge: "''"
br-ex にマッピングされている場合には、外部ネットワークを Horizon Dashboard およびパブリック API 以外に Floating IP にも使用することができます。
E.4. トランキングされたインターフェースでのネイティブ VLAN の使用
network_config:
- type: ovs_bridge
name: {get_input: bridge_name}
dns_servers: {get_param: DnsServers}
addresses:
- ip_netmask: {get_param: ExternalIpSubnet}
routes:
- ip_netmask: 0.0.0.0/0
next_hop: {get_param: ExternalInterfaceDefaultRoute}
members:
- type: ovs_bond
name: bond1
ovs_options: {get_param: BondInterfaceOvsOptions}
members:
- type: interface
name: nic3
primary: true
- type: interface
name: nic4
注記
E.5. ジャンボフレームの設定
注記
- type: ovs_bond
name: bond1
mtu: 9000
ovs_options: {get_param: BondInterfaceOvsOptions}
members:
- type: interface
name: nic3
mtu: 9000
primary: true
- type: interface
name: nic4
mtu: 9000
# The external interface should stay at default
- type: vlan
device: bond1
vlan_id: {get_param: ExternalNetworkVlanID}
addresses:
- ip_netmask: {get_param: ExternalIpSubnet}
routes:
- ip_netmask: 0.0.0.0/0
next_hop: {get_param: ExternalInterfaceDefaultRoute}
# MTU 9000 for Internal API, Storage, and Storage Management
- type: vlan
device: bond1
mtu: 9000
vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
- ip_netmask: {get_param: InternalApiIpSubnet}
付録F ネットワーク環境のオプション
表F.1 ネットワーク環境のオプション
|
パラメーター
|
説明
|
例
|
|---|---|---|
|
InternalApiNetCidr
|
内部 API ネットワークのネットワークおよびサブネット
|
172.17.0.0/24
|
|
StorageNetCidr
|
ストレージネットワークのネットワークおよびサブネット
| |
|
StorageMgmtNetCidr
|
ストレージ管理ネットワークのネットワークのおよびサブネット
| |
|
TenantNetCidr
|
テナントネットワークのネットワークおよびサブネット
| |
|
ExternalNetCidr
|
外部ネットワークのネットワークおよびサブネット
| |
|
InternalApiAllocationPools
|
内部 API ネットワークの割り当てプール (タプル形式)
|
[{'start': '172.17.0.10', 'end': '172.17.0.200'}]
|
|
StorageAllocationPools
|
ストレージネットワークの割り当てプール (タプル形式)
| |
|
StorageMgmtAllocationPools
|
ストレージ管理ネットワークの割り当てプール (タプル形式)
| |
|
TenantAllocationPools
|
テナントネットワークの割り当てプール (タプル形式)
| |
|
ExternalAllocationPools
|
外部ネットワークの割り当てプール (タプル形式)
| |
|
InternalApiNetworkVlanID
|
内部 API ネットワークの VLAN ID
|
200
|
|
StorageNetworkVlanID
|
ストレージネットワークの VLAN ID
| |
|
StorageMgmtNetworkVlanID
|
ストレージ管理ネットワークの VLAN ID
| |
|
TenantNetworkVlanID
|
テナントネットワークの VLAN ID
| |
|
ExternalNetworkVlanID
|
外部ネットワークの VLAN ID
| |
|
ExternalInterfaceDefaultRoute
|
外部ネットワークのゲートウェイ IP アドレス
|
10.1.2.1
|
|
ControlPlaneDefaultRoute
|
プロビジョニングネットワーク用のゲートウェイルーター (またはアンダークラウドの IP アドレス)
|
ControlPlaneDefaultRoute: 192.0.2.254
|
|
ControlPlaneSubnetCidr
|
プロビジョニングネットワーク用の CIDR サブネットマスクの長さ
|
ControlPlaneSubnetCidr: 24
|
|
EC2MetadataIp
|
EC2 メタデータサーバーの IP アドレス。通常はアンダークラウドの IP アドレスです。
|
EC2MetadataIp: 192.0.2.1
|
|
DnsServers
|
オーバークラウドノード用の DNS サーバーを定義します。最大で 2 つまで指定することができます。
|
DnsServers: ["8.8.8.8","8.8.4.4"]
|
|
BondInterfaceOvsOptions
|
ボンディングインターフェースのオプション
|
BondInterfaceOvsOptions:"bond_mode=balance-tcp"
|
|
NeutronFlatNetworks
|
フラットなネットワークが neutron プラグインで設定されるように定義します。外部ネットワークを作成ができるようにデフォルトは「datacentre」に設定されています。
|
NeutronFlatNetworks: "datacentre"
|
|
NeutronExternalNetworkBridge
|
各ハイパーバイザーで作成する Open vSwitch ブリッジ。デフォルト値は "br-ex" です。ブリッジ上のネイティブ VLAN で Floating IP アドレスを使用する場合には、
"br-ex" に設定してください。通常この値の変更は推奨しません。
|
NeutronExternalNetworkBridge: "br-ex"
|
|
NeutronBridgeMappings
|
使用する論理ブリッジから物理ブリッジへのマッピング。ホスト (br-ex) の外部ブリッジを物理名 (datacentre) にマッピングするようにデフォルト設定されています。これは、デフォルトの Floating ネットワークに使用されます。
|
NeutronBridgeMappings: "datacentre:br-ex"
|
|
NeutronPublicInterface
|
ネットワークノード向けにインターフェースを br-ex にブリッジするインターフェースを定義します。
|
NeutronPublicInterface: "eth0"
|
|
NeutronNetworkType
|
Neutron のテナントネットワーク種別
|
NeutronNetworkType: "vxlan"
|
|
NeutronTunnelTypes
|
neutron テナントネットワークのトンネリング種別。複数の値を指定するには、コンマ区切りの文字列を使用します。
|
NeutronTunnelTypes: 'gre,vxlan'
|
|
NeutronTunnelIdRanges
|
テナントネットワークを割り当てに使用できる GRE トンネリングの ID 範囲
|
NeutronTunnelIdRanges "1:1000"
|
|
NeutronVniRanges
|
テナントネットワークを割り当てに使用できる VXLAN VNI の ID 範囲
|
NeutronVniRanges: "1:1000"
|
|
NeutronEnableTunnelling
|
VLAN で区切られたネットワークまたは Neutron でのフラットネットワークを使用するためにトンネリングを有効化/無効化するかどうかを定義します。デフォルトでは有効化されます。
| |
|
NeutronNetworkVLANRanges
|
サポートされる Neutron ML2 および Open vSwitch VLAN マッピングの範囲。デフォルトでは、物理ネットワーク「datacentre」上の VLAN を許可するように設定されています。
|
NeutronNetworkVLANRanges: "datacentre:1:1000"
|
|
NeutronMechanismDrivers
|
neutron テナントネットワークのメカニズムドライバー。デフォルトでは、「openvswitch」に設定されており、複数の値を指定するにはコンマ区切りの文字列を使用します。
|
NeutronMechanismDrivers: 'openvswitch,l2population'
|
付録G Open vSwitch ボンディングのオプション
BondInterfaceOvsOptions:
"bond_mode=balance-tcp"
重要
- type: linux_bond
name: bond1
members:
- type: interface
name: nic2
- type: interface
name: nic3
bonding_options: "mode=802.3ad"表G.1 ボンディングオプション
bond_mode=balance-tcp
|
このモードは、レイヤー 2 とレイヤー 4 のデータを考慮して、ロードバランシングを実行します。たとえば、宛先の MAC アドレス、IP アドレス、および TCP ポート、また
balance-tcp には、スイッチ上で LACP が設定されている必要があります。このモードは、Linux ボンディングドライバーで使用されるモード 4 のボンディングと同様です。LACP はリンクの障害を検出するための高度な耐障害性と、ボンディングについての追加の診断情報を提供するので、可能な場合には、balance-tcp を使用することを推奨します。
LACP に
balance-tcp を設定するのは、推奨オプションですが、物理スイッチとLACP をネゴシエーションできない場合には active-backup にフォールバックします。
|
bond_mode=balance-slb
|
送信元の MAC アドレスと出力の VLAN に基づいてフローのバランスを取り、トラフィックパターンの変化に応じて定期的にリバランスを行います。
balance-slb とのボンディングにより、リモートスイッチについての知識や協力なしに限定された形態のロードバランシングが可能となります。SLB は送信元 MAC アドレスと VLAN の各ペアをリンクに割り当て、そのリンクを介して、対象の MAC アドレスとLAN からのパケットをすべて伝送します。このモードはトラフィックパターンの変化に応じて定期的にリバランスを行う、送信元 MAC アドレスと VLAN の番号に基づいた、簡単なハッシュアルゴリズムを使用します。これは、Linux ボンディングドライバーで使用されているモード 2 のボンディングと同様で、スイッチはボンディングで設定されているが、LACP (動的なボンディングではなく静的なボンディング) を使用するように設定されていない場合に使用されます。
|
bond_mode=active-backup
|
このモードは、アクティブな接続が失敗した場合にスタンバイの NIC がネットワーク操作を再開するアクティブ/スタンバイ構成のフェイルオーバーを提供します。物理スイッチに提示される MAC アドレスは 1 つのみです。このモードには、特別なスイッチのサポートや設定は必要なく、リンクが別のスイッチに接続された際に機能します。このモードは、ロードバランシングは提供しません。
|
lacp=[active|passive|off]
|
Link Aggregation Control Protocol (LACP) の動作を制御します。LACP をサポートしているのは特定のスイッチのみです。お使いのスイッチが LACP に対応していない場合には
bond_mode=balance-slb または bond_mode=active-backup を使用してください。
OVS ベースのボンディングでは LACP を使用しないでください。この構成は問題があるため、サポートされていません。この機能の代わりとして、bond_mode=balance-slb を使用することを検討してください。また、LACP は Linux ボンディングで使用することも可能です。この要件に関する技術的な詳細は、BZ#1267291 を参照してください。
|
other-config:lacp-fallback-ab=true
|
フォールバックとして bond_mode=active-backup に切り替わるように LACP の動作を設定します。
|
other_config:lacp-time=[fast|slow]
|
LACP のハートビートを 1 秒 (高速) または 30 秒 (低速) に設定します。デフォルトは低速です。
|
other_config:bond-detect-mode=[miimon|carrier]
|
リンク検出に miimon ハートビート (miimon) またはモニターキャリア (carrier) を設定します。デフォルトは carrier です。
|
other_config:bond-miimon-interval=100
|
miimon を使用する場合には、ハートビートの間隔をミリ秒単位で設定します。
|
other_config:bond_updelay=1000
|
フラッピングを防ぐためにアクティブ化してリンクが Up の状態である必要のある時間 (ミリ秒単位)
|
other_config:bond-rebalance-interval=10000
|
ボンディングメンバー間のリバランシングフローの間隔 (ミリ秒単位)。無効にするにはゼロに設定します。
|
重要
付録H 改訂履歴
| 改訂履歴 | |||
|---|---|---|---|
| 改訂 8.0-0.1 | Mon Sep 18 2017 | ||
| |||
| 改訂 8.0-0 | Tue Nov 24 2015 | ||
| |||
