スパイン/リーフ型ネットワーク

Red Hat OpenStack Platform 16.2

Red Hat OpenStack Platform director を使用したルーティング対応のスパイン/リーフ型ネットワークの設定

OpenStack Documentation Team

概要

本ガイドでは、オーバークラウドにおけるルーティング対応のスパイン/リーフ型ネットワークの設定方法について説明します。これには、アンダークラウドの設定、主要な設定ファイルの記述、ノード用のロールの作成が含まれます。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。

Jira でドキュメントのフィードバックを提供する

ドキュメントに関するフィードバックを提供するには、Create Issue フォームを使用します。Red Hat OpenStack Platform Jira プロジェクトで Jira Issue が作成され、フィードバックの進行状況を追跡できます。

  1. Jira にログインしていることを確認してください。Jira アカウントをお持ちでない場合は、アカウントを作成してフィードバックを送信してください。
  2. Create Issue をクリックして、Create Issue ページを開きます。
  3. Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
  4. Create をクリックします。

第1章 概要

本ガイドでは、Red Hat OpenStack Platform 環境に向けたスパイン/リーフ型ネットワークトポロジーの構築について説明します。これには、完全なエンドツーエンドのシナリオと、お使いの環境でより広範囲なネットワークトポロジーを複製するのに役立つサンプルファイルが含まれます。

1.1. スパイン/リーフ型ネットワーク

Red Hat OpenStack Platform のコンポーザブルネットワークアーキテクチャーを使用して、ネットワークをルーティング対応のスパイン/リーフ型データセンタートポロジーに適合させることができます。ルーティング対応のスパイン/リーフの実際の適用では、リーフは Compute または Storage のコンポーザブルロールに相当し、図 1.1, ルーティング対応のスパイン/リーフ型トポロジーの例 に示したように、通常はデータセンターのラック内にあります。Leaf 0 ラックには、アンダークラウドノード、コントローラーノード、およびコンピュートノードがあります。コンポーザブルネットワークはコンポーザブルロールに割り当てられたノードに提示されます。次の図は、以下の設定を示しています。

  • StorageLeaf ネットワークは、Ceph Storage とコンピュートノードに提示されます。
  • NetworkLeaf は、設定する任意のネットワークの例を示します。

図1.1 ルーティング対応のスパイン/リーフトポロジーの例

249 OpenStack Spine Leaf updates 0522 routed

1.2. スパイン/リーフ型ネットワークトポロジー

スパイン/リーフ型ネットワークのシナリオでは、OpenStack Networking (neutron) の機能を利用して、1 つのネットワークのセグメント内に複数のサブネットが定義されます。それぞれのネットワークは、Leaf 0 として動作するベースネットワークを使用します。director は、メインのネットワークのセグメントとして Leaf 1 および Leaf 2 サブネットを作成します。

このシナリオでは、以下のネットワークを使用します。

表1.1 Leaf 0 ネットワーク (ベースネットワーク)

ネットワークアタッチされているロールサブネット

Provisioning / Ctlplane / Leaf0

Controller、ComputeLeaf0、CephStorageLeaf0

192.168.10.0/24

Storage

Controller、ComputeLeaf0、CephStorageLeaf0

172.16.0.0/24

StorageMgmt

Controller、CephStorageLeaf0

172.17.0.0/24

InternalApi

Controller、ComputeLeaf0

172.18.0.0/24

Tenant [1]

Controller、ComputeLeaf0

172.19.0.0/24

External

Controller

10.1.1.0/24

[1] テナントネットワークは、プロジェクトネットワークとしても知られています。

表1.2 Leaf 1 ネットワーク

ネットワークアタッチされているロールサブネット

Provisioning / Ctlplane / Leaf1

ComputeLeaf1、CephStorageLeaf1

192.168.11.0/24

StorageLeaf1

ComputeLeaf1、CephStorageLeaf1

172.16.1.0/24

StorageMgmtLeaf1

CephStorageLeaf1

172.17.1.0/24

InternalApiLeaf1

ComputeLeaf1

172.18.1.0/24

TenantLeaf1 [1]

ComputeLeaf1

172.19.1.0/24

[1] テナントネットワークは、プロジェクトネットワークとしても知られています。

表1.3 Leaf 2 ネットワーク

ネットワークアタッチされているロールサブネット

Provisioning / Ctlplane / Leaf2

ComputeLeaf2、CephStorageLeaf2

192.168.12.0/24

StorageLeaf2

ComputeLeaf2、CephStorageLeaf2

172.16.2.0/24

StorageMgmtLeaf2

CephStorageLeaf2

172.17.2.0/24

InternalApiLeaf2

ComputeLeaf2

172.18.2.0/24

TenantLeaf2 [1]

ComputeLeaf2

172.19.2.0/24

[1] テナントネットワークは、プロジェクトネットワークとしても知られています。

図1.2 スパイン/リーフ型ネットワークトポロジー

249 OpenStack Spine Leaf updates 0522 API network

1.3. スパイン/リーフ型ネットワークの要件

L3 ルーティング対応アーキテクチャーを使用したネットワーク上でオーバークラウドをデプロイするには、前提条件として以下の手順を実施します。

レイヤー 3 ルーティング
ネットワークインフラストラクチャーのルーティングを設定し、異なる L2 セグメント間のトラフィックを有効にします。このルーティングは、静的または動的に設定することができます。
DHCP リレー
アンダークラウドにローカルではない各 L2 セグメントには、dhcp-relay を指定する必要があります。DHCP 要求は、アンダークラウドが接続されているプロビジョニングネットワークのセグメントでアンダークラウドに対して送信する必要があります。
注記

アンダークラウドは 2 つの DHCP サーバーを使用します。1 つは、ベアメタルノードのイントロスペクション用で、もう 1 つはオーバークラウドノードのデプロイ用です。dhcp-relay を設定する場合は、DHCP リレーの設定を読んで要件を理解するようにしてください。

1.4. スパイン/リーフ型ネットワークの制限事項

  • Controller ロールなどの一部のロールは、仮想 IP アドレスとクラスタリングを使用します。この機能の背後にあるメカニズムには、ノード間の L2 ネットワーク接続が必要です。これらのノードを同じリーフ内に配置する必要があります。
  • Networker ノードにも同様の制限が適用されます。Virtual Router Redundancy Protocol (VRRP) により、ネットワークサービスはネットワーク内に高可用性のデフォルトパスを実装します。VRRP は仮想ルーターの IP アドレスを使用するので、マスターとバックアップノードを同じ L2 ネットワークセグメントに接続する必要があります。
  • テナントまたはプロバイダーネットワークを VLAN セグメンテーションと共に使用する場合には、すべての Networker ノードおよびコンピュートノード間で特定の VLAN を共有する必要があります。
注記

ネットワークサービスは、複数の Networker ノードセットで設定することが可能です。各 Networker ノードセットはそれらのネットワークのルートを共有し、VRRP が各 Networker ノードセット内の高可用性のデフォルトパスを提供します。この種別の設定では、ネットワークを共有する全 Networker ノードが同じ L2 ネットワークセグメント上になければなりません。

第2章 アンダークラウドでのルーティング対応スパイン/リーフの設定

本項では、コンポーザブルネットワークを使用するルーティング対応のスパイン/リーフを取り入れるための、アンダークラウド設定方法のユースケースについて説明します。

2.1. スパイン/リーフ用のプロビジョニングネットワークの設定

スパイン/リーフインフラストラクチャー用のプロビジョニングネットワークを設定するには、undercloud.conf ファイルを編集して、以下の手順で説明する該当パラメーターを設定します。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. undercloud.conf ファイルがまだない場合には、サンプルのテンプレートファイルをコピーします。

    [stack@director ~]$ cp /usr/share/python-tripleoclient/undercloud.conf.sample ~/undercloud.conf
  3. undercloud.conf ファイルを編集します。
  4. [DEFAULT] セクションに以下の値を設定します。

    1. local_ipleaf0 上のアンダークラウド IP に設定します。

      local_ip = 192.168.10.1/24
    2. undercloud_public_host をアンダークラウドの外部向け IP アドレスに設定します。

      undercloud_public_host = 10.1.1.1
    3. undercloud_admin_host をアンダークラウドの管理用 IP アドレスに設定します。この IP アドレスは、通常 leaf0 上にあります。

      undercloud_admin_host = 192.168.10.2
    4. local_interface を、ローカルネットワーク用にブリッジを設定するインターフェイスに設定します。

      local_interface = eth1
    5. enable_routed_networkstrue に設定します。

      enable_routed_networks = true
    6. subnets パラメーターを使用してサブネットのリストを定義します。ルーティング対応のスパイン/リーフ内の各 L2 セグメントにサブネットを 1 つ定義します。

      subnets = leaf0,leaf1,leaf2
    7. local_subnet パラメーターを使用して、アンダークラウドにローカルな物理 L2 セグメントに関連付けられるサブネットを指定します。

      local_subnet = leaf0
    8. undercloud_nameservers の値を設定します。

      undercloud_nameservers = 10.11.5.19,10.11.5.20
      ヒント

      アンダークラウドのネームサーバーに使用する DNS サーバーの現在の IP アドレスは、/etc/resolv.conf を参照して確認することができます。

  5. subnets パラメーターで定義するサブネットごとに、新規セクションを作成します。

    [leaf0]
    cidr = 192.168.10.0/24
    dhcp_start = 192.168.10.10
    dhcp_end = 192.168.10.90
    inspection_iprange = 192.168.10.100,192.168.10.190
    gateway = 192.168.10.1
    masquerade = False
    
    [leaf1]
    cidr = 192.168.11.0/24
    dhcp_start = 192.168.11.10
    dhcp_end = 192.168.11.90
    inspection_iprange = 192.168.11.100,192.168.11.190
    gateway = 192.168.11.1
    masquerade = False
    
    [leaf2]
    cidr = 192.168.12.0/24
    dhcp_start = 192.168.12.10
    dhcp_end = 192.168.12.90
    inspection_iprange = 192.168.12.100,192.168.12.190
    gateway = 192.168.12.1
    masquerade = False
  6. undercloud.conf ファイルを保存します。
  7. アンダークラウドをインストールするコマンドを実行します。

    [stack@director ~]$ openstack undercloud install

この設定により、プロビジョニングネットワークまたはコントロールプレーン上に 3 つのサブネットが作成されます。オーバークラウドは、各ネットワークを使用して対応する各リーフ内にシステムをプロビジョニングします。

アンダークラウドへの DHCP 要求が適切にリレーされるようにするには、DHCP リレーを設定する必要がある場合があります。

2.2. DHCP リレーの設定

DHCP リレーサービスは、リクエストを転送したいリモートネットワークセグメントに接続されているスイッチ、ルーター、またはサーバーで実行します。

注記

アンダークラウド上で DHCP リレーサービスを実行しないでください。

アンダークラウドは、プロビジョニングネットワーク上の 2 つの DHCP サーバーを使用します。

  • イントロスペクション DHCP サーバー。
  • プロビジョニング DHCP サーバー。

DHCP リレーは、アンダークラウド上の両方の DHCP サーバーに DHCP リクエストを転送するように設定する必要があります。

UDP ブロードキャストに対応するデバイスで UDP ブロードキャストを使用して、アンダークラウドのプロビジョニングネットワークが接続されている L2 ネットワークセグメントに DHCP 要求をリレーすることができます。または、DHCP 要求を特定の IP アドレスにリレーする UDP ユニキャストを使用することができます。

注記

特定のデバイス種別での DHCP リレーの設定は、本書の対象外となっています。本ガイドでは参考として、ISC DHCP ソフトウェアの実装を使用した DHCP リレー設定の例を説明します。詳細は、dhcrelay(8) の man ページを参照してください。

重要

DHCP オプション 79 は、一部のリレー、特に DHCPv6 アドレスを提供するリレー、および元の MAC アドレスを渡さないリレーに必要です。詳細は、RFC6939 を参照してください。

ブロードキャスト DHCP リレー

この方法では、UDP ブロードキャストトラフィックを使用して DHCP 要求を、DHCP サーバーが存在する L2 ネットワークセグメントにリレーします。ネットワークセグメント上のすべてのデバイスがブロードキャストトラフィックを受信します。UDP ブロードキャストを使用する場合は、アンダークラウド上の両方の DHCP サーバーがリレーされた DHCP 要求を受信します。実装に応じて、インターフェイスまたは IP ネットワークアドレスを指定して設定できます。

インターフェイス
DHCP 要求がリレーされる L2 ネットワークセグメントに接続されるインターフェイスを指定します。
IP ネットワークアドレス
DHCP 要求がリレーされる IP ネットワークのネットワークアドレスを指定します。

ユニキャスト DHCP リレー

この方法では、UDP ユニキャストトラフィックを使用して DHCP 要求を特定の DHCP サーバーにリレーします。UDP ユニキャストを使用する場合には、DHCP リレーを提供するデバイスが、アンダークラウド上のイントロスペクション用に使用されるインターフェイスに割り当てられた IP アドレスと、ctlplane ネットワーク用の DHCP サービスをホストするために OpenStack Networking (neutron) サービスが作成するネットワーク名前空間の IP アドレスの両方に対して、DHCP 要求をリレーするように設定する必要があります。

イントロスペクションに使用されるインターフェイスは、undercloud.conf ファイルで inspection_interface として定義されるインターフェイスです。このパラメーターを設定していない場合には、アンダークラウドのデフォルトインターフェイスは br-ctlplane になります。

注記

br-ctlplane インターフェイスをイントロスペクションに使用するのは一般的です。undercloud.conf ファイルで local_ip として定義する IP アドレスは、br-ctlplane インターフェイス上にあります。

Neutron DHCP 名前空間に確保される IP アドレスは、undercloud.conf ファイルの local_subnet で設定する IP 範囲内で利用可能な最初のアドレスです。IP 範囲内の最初のアドレスは、設定の dhcp_start で定義するアドレスです。たとえば、以下の設定を使用する場合、192.168.10.10 がその IP アドレスになります。

[DEFAULT]
local_subnet = leaf0
subnets = leaf0,leaf1,leaf2

[leaf0]
cidr = 192.168.10.0/24
dhcp_start = 192.168.10.10
dhcp_end = 192.168.10.90
inspection_iprange = 192.168.10.100,192.168.10.190
gateway = 192.168.10.1
masquerade = False
警告

DHCP 名前空間の IP アドレスは自動的に割り当てられます。多くの場合、これは IP 範囲の最初のアドレスになります。これを確認するには、アンダークラウドで以下のコマンドを実行します。

$ openstack port list --device-owner network:dhcp -c "Fixed IP Addresses"
+----------------------------------------------------------------------------+
| Fixed IP Addresses                                                         |
+----------------------------------------------------------------------------+
| ip_address='192.168.10.10', subnet_id='7526fbe3-f52a-4b39-a828-ec59f4ed12b2' |
+----------------------------------------------------------------------------+
$ openstack subnet show 7526fbe3-f52a-4b39-a828-ec59f4ed12b2 -c name
+-------+--------+
| Field | Value  |
+-------+--------+
| name  | leaf0  |
+-------+--------+

dhcrelay の設定例

以下の例では、dhcp パッケージの dhcrelay コマンドは以下の設定を使用します。

  • DHCP の受信要求をリレーするインターフェイスは eth1eth2eth3 です。
  • ネットワークセグメント上のアンダークラウドの DHCP サーバーが接続されているインターフェイスは eth0 です。
  • イントロスペクションに使用される DHCP サーバーがリッスンしている IP アドレスは 192.168.10.1 です。
  • プロビジョニングに使用される DHCP サーバーがリッスンしている IP アドレスは 192.168.10.10 です。

これで、dhcrelay コマンドは以下のようになります。

  • dhcrelay バージョン 4.2.x:

    $ sudo dhcrelay -d --no-pid 192.168.10.10 192.168.10.1 \
      -i eth0 -i eth1 -i eth2 -i eth3
  • dhcrelayバージョン 4.3.x 以降:

    $ sudo dhcrelay -d --no-pid 192.168.10.10 192.168.10.1 \
      -iu eth0 -id eth1 -id eth2 -id eth3

Cisco IOS ルーティングスイッチの設定例

この例では、次のタスクを実行するために、以下に示す Cisco IOS 設定を使用しています。

  • プロビジョニングネットワークに使用する VLAN を設定する。
  • リーフの IP アドレスを追加する。
  • IP アドレス 192.168.10.1 をリッスンするイントロスペクション用 DHCP サーバーに、UDP および BOOTP 要求を転送する。
  • IP アドレス 192.168.10.10 をリッスンするプロビジョニング用 DHCP サーバーに、UDP および BOOTP 要求を転送する。
interface vlan 2
ip address 192.168.24.254 255.255.255.0
ip helper-address 192.168.10.1
ip helper-address 192.168.10.10
!

これでプロビジョニングネットワークの設定が完了したので、残りのオーバークラウドリーフネットワークを設定することができます。

2.3. リーフネットワーク向けのフレーバーの作成とノードのタグ付け

各リーフネットワークのそれぞれのロールには、フレーバーとロールの割り当てが必要です。これにより、ノードを対応するリーフにタグ付けすることができます。各フレーバーを作成してロールに割り当てるには、以下の手順を実施します。

手順

  1. stackrc ファイルを取得します。

    [stack@director ~]$ source ~/stackrc
  2. 各カスタムロール用のフレーバーを作成します。

    $ ROLES="control compute_leaf0 compute_leaf1 compute_leaf2 ceph-storage_leaf0 ceph-storage_leaf1 ceph-storage_leaf2"
    $ for ROLE in $ROLES; do openstack flavor create --id auto --ram <ram_size_mb> --disk <disk_size_gb> --vcpus <no_vcpus> $ROLE ; done
    $ for ROLE in $ROLES; do openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property resources:DISK_GB='0' --property resources:MEMORY_MB='0' --property resources:VCPU='0' $ROLE ; done
    • <ram_size_mb> をベアメタルノードの RAM (MB 単位) に置き換えます。
    • <disk_size_gb> をベアメタルノード上のディスク容量 (GB 単位) に置き換えます。
    • <no_vcpus> をベアメタルノードの CPU 数に置き換えます。
  3. ノードリストを取得して UUID を把握します。

    (undercloud)$ openstack baremetal node list
  4. カスタムリソースクラスを使用して、各ベアメタルノードをリーフネットワークおよびロールにタグ付けします。

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.LEAF-ROLE <node>

    <node> をベアメタルノードの ID に置き換えてください。

    たとえば、以下のコマンドを実行して、UUID 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 のノードを Leaf2 上の Compute ロールにタグ付けします。

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.COMPUTE-LEAF2 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13
  5. 各リーフネットワークロールフレーバーをカスタムリソースクラスに関連付けます。

    (undercloud)$ openstack flavor set \
     --property resources:CUSTOM_BAREMETAL_LEAF_ROLE=1 \
    <custom_role>

    Bare Metal Provisioning サービスノードのリソースクラスに対応するカスタムリソースクラスの名前を指定するには、リソースクラスを大文字に変換し、それぞれの句読点をアンダースコアに置き換え、CUSTOM_ の接頭辞を追加します。

    注記

    フレーバーが要求できるのは、ベアメタルリソースクラスの 1 つのインスタンスだけです。

  6. node-info.yaml ファイルで、各カスタムリーフロールに使用するフレーバーおよび各カスタムリーフロールに割り当てるノード数を指定します。たとえば、以下の設定では、使用するフレーバーと、カスタムのリーフロール compute_leaf0compute_leaf1compute_leaf2ceph-storage_leaf0ceph-storage_leaf1、および ceph-storage_leaf2 に割り当てるノード数を指定します。

    parameter_defaults:
      OvercloudControllerFlavor: control
      OvercloudComputeLeaf0Flavor: compute_leaf0
      OvercloudComputeLeaf1Flavor: compute_leaf1
      OvercloudComputeLeaf2Flavor: compute_leaf2
      OvercloudCephStorageLeaf0Flavor: ceph-storage_leaf0
      OvercloudCephStorageLeaf1Flavor: ceph-storage_leaf1
      OvercloudCephStorageLeaf2Flavor: ceph-storage_leaf2
      ControllerLeaf0Count: 3
      ComputeLeaf0Count: 3
      ComputeLeaf1Count: 3
      ComputeLeaf2Count: 3
      CephStorageLeaf0Count: 3
      CephStorageLeaf1Count: 3
      CephStorageLeaf2Count: 3

2.4. ベアメタルノードのポートからコントロールプレーンのネットワークセグメントへのマッピング

L3 ルーティング対応のネットワーク上でのデプロイメントを有効にするには、ベアメタルポートの physical_network フィールドを設定する必要があります。各ベアメタルポートは、OpenStack Bare Metal (ironic) サービス内のベアメタルノードに関連付けられます。物理ネットワーク名は、アンダークラウドの設定の subnets オプションで指定する名前です。

注記

undercloud.conf ファイルの local_subnet で指定されるサブネットの物理ネットワーク名には、必ず ctlplane という名前が付けられます。

手順

  1. stackrc ファイルを取得します。

    $ source ~/stackrc
  2. ベアメタルノードをチェックします。

    $ openstack baremetal node list
  3. ベアメタルノードは enroll または manageable の状態であることを確認してください。ベアメタルノードがこれらのいずれかの状態にない場合、ベアメタルポートで physical_network プロパティーを設定するコマンドは失敗します。全ノードを manageable の状態に設定するには、以下のコマンドを実行します。

    $ for node in $(openstack baremetal node list -f value -c Name); do openstack baremetal node manage $node --wait; done
  4. ベアメタルポートとベアメタルノードの関連付けを確認します。

    $ openstack baremetal port list --node <node-uuid>
  5. ポートの physical-network パラメーターを設定します。以下の例では、leaf0leaf1、および leaf2 の 3 つのサブネットが設定で定義されています。local_subnet は leaf0 です。local_subnet の物理ネットワークは常に ctlplane であるため、leaf0 に接続されたベアメタルポートは必ず ctlplane を使用します。残りのポートは他のリーフ名を使用します。

    $ openstack baremetal port set --physical-network ctlplane <port-uuid>
    $ openstack baremetal port set --physical-network leaf1 <port-uuid>
    $ openstack baremetal port set --physical-network leaf2 <port-uuid>
  6. オーバークラウドをデプロイする前に、ノードをイントロスペクションします。--all-manageable オプションと -provide オプションを付けて、デプロイ可能なノードとして設定します。

    $ openstack overcloud node introspect --all-manageable --provide

2.5. スパイン/リーフ型のプロビジョニングネットワークへの新規リーフの追加

新しい物理サイトの追加など、ネットワーク容量を増やす場合には、新しいリーフと、対応するサブネットを Red Hat OpenStack Platform のスパイン/リーフ型のプロビジョニングネットワークに追加する必要がある場合があります。オーバークラウドでリーフをプロビジョニングする場合には、対応するアンダークラウドのリーフが使用されます。

前提条件

  • RHOSP デプロイメントでスパイン/リーフ型ネットワークトポロジーが使用されている。

手順

  1. アンダークラウドホストに stack ユーザーとしてログインします。
  2. source コマンドでアンダークラウドの認証情報ファイルを読み込みます。

    $ source ~/stackrc
  3. /home/stack/undercloud.conf ファイルで、以下の手順を実施します。

    1. subnets パラメーターを特定し、追加するリーフ用の新規サブネットを追加します。

      サブネットは、ルーティング対応のスパイン/リーフ内の L2 セグメントを表します。

      以下の例では、新しいリーフ (leaf3) に新規サブネット (leaf3) が追加されます。

      subnets = leaf0,leaf1,leaf2,leaf3
    2. 追加したサブネットのセクションを作成します。

      以下の例では、新しいサブネット (leaf3[leaf3] セクションが追加されます。

      [leaf0]
      cidr = 192.168.10.0/24
      dhcp_start = 192.168.10.10
      dhcp_end = 192.168.10.90
      inspection_iprange = 192.168.10.100,192.168.10.190
      gateway = 192.168.10.1
      masquerade = False
      
      [leaf1]
      cidr = 192.168.11.0/24
      dhcp_start = 192.168.11.10
      dhcp_end = 192.168.11.90
      inspection_iprange = 192.168.11.100,192.168.11.190
      gateway = 192.168.11.1
      masquerade = False
      
      [leaf2]
      cidr = 192.168.12.0/24
      dhcp_start = 192.168.12.10
      dhcp_end = 192.168.12.90
      inspection_iprange = 192.168.12.100,192.168.12.190
      gateway = 192.168.12.1
      masquerade = False
      
      [leaf3]
      cidr = 192.168.13.0/24
      dhcp_start = 192.168.13.10
      dhcp_end = 192.168.13.90
      inspection_iprange = 192.168.13.100,192.168.13.190
      gateway = 192.168.13.1
      masquerade = False
  4. undercloud.conf ファイルを保存します。
  5. アンダークラウドを再インストールします。

    $ openstack undercloud install

第3章 その他のプロビジョニングネットワーク設定手法

本項では、コンポーザブルネットワークを使用するルーティング対応のスパイン/リーフを取り入れるための、プロビジョニングネットワークを設定するのに使用できるその他の方法について説明します。

3.1. VLAN プロビジョニングネットワーク

以下の例では、director はプロビジョニングネットワークを通じて新たなオーバークラウドノードをデプロイし、L3 トポロジー全体にまたがる VLAN トンネルを使用します。詳細は、図 3.1、VLAN プロビジョニングネットワークトポロジー を参照してください。VLAN プロビジョニングネットワークを使用すると、director の DHCP サーバーは、任意のリーフに DHCPOFFER ブロードキャストを送信することができます。このトンネルを確立するには、トップオブラック (ToR) リーフスイッチ間で VLAN をトランク接続します。以下の図では、StorageLeaf ネットワークは Ceph Storage とコンピュートノードに提示されます。NetworkLeaf は、設定する任意のネットワークの例を示します。

図3.1 VLAN プロビジョニングネットワークトポロジー

249 OpenStack Spine Leaf updates 0522 VLAN

3.2. VXLAN プロビジョニングネットワーク

以下の例では、director はプロビジョニングネットワークを通じて新たなオーバークラウドノードをデプロイし、レイヤー 3 トポロジー全体をカバーするために VXLAN トンネルを使用します。詳細は、図 3.2、VXLAN プロビジョニングネットワーク・トポロジー を参照してください。VXLAN プロビジョニングネットワークを使用すると、director の DHCP サーバーは、任意のリーフに DHCPOFFER ブロードキャストを送信することができます。このトンネルを確立するには、トップオブラック (ToR) リーフスイッチで VXLAN エンドポイントを設定します。

図3.2 VXLAN プロビジョニングネットワークトポロジー

249 OpenStack Spine Leaf updates 0522 VXLAN

第4章 オーバークラウドの設定

アンダークラウドを設定したら、設定ファイルのセットを使用して残りのオーバークラウドリーフネットワークを設定することができます。残りのオーバークラウドリーフネットワークを設定してオーバークラウドをデプロイすると、デプロイされる環境には、ルーティングを利用できるネットワークが複数セット実装されます。

4.1. ネットワークデータファイルの作成

リーフネットワークを定義するには、コンポーザブルネットワークとその属性のリストが YAML 形式で記載された、ネットワークデータファイルを作成します。subnets パラメーターを使用して、ベースネットワークと共に追加のリーフサブネットを定義します。

手順

  1. stack ユーザーのホームディレクトリーに、新たな network_data_spine_leaf.yaml ファイルを作成します。デフォルトの network_data_subnets_routed.yaml ファイルをベースとして使用します。

    $ cp /usr/share/openstack-tripleo-heat-templates/network_data_subnets_routed.yaml /home/stack/network_data_spine_leaf.yaml
  2. network_data_spine_leaf.yaml ファイルの YAML リストを編集して、各ベースネットワークおよび対応するリーフサブネットをコンポーザブルネットワーク項目として定義します。以下に示す構文の例を使用して、ベースのリーフおよび 2 つのリーフサブネットを定義します。

    - name: <base_name>
      name_lower: <lowercase_name>
      vip: <true/false>
      vlan: '<vlan_id>'
      ip_subnet: '<network_address>/<prefix>'
      allocation_pools: [{'start': '<start_address>', 'end': '<end_address>'}]
      gateway_ip: '<router_ip_address>'
      subnets:
        <leaf_subnet_name>:
          vlan: '<vlan_id>'
          ip_subnet: '<network_address>/<prefix>'
          allocation_pools: [{'start': '<start_address>', 'end': '<end_address>'}]
          gateway_ip: '<router_ip_address>'
        <leaf_subnet_name>:
          vlan: '<vlan_id>'
          ip_subnet: '<network_address>/<prefix>'
          allocation_pools: [{'start': '<start_address>', 'end': '<end_address>'}]
          gateway_ip: '<router_ip_address>'

    以下の例は、内部 API ネットワークおよびそのリーフネットワークを定義する方法を示しています。

    - name: InternalApi
      name_lower: internal_api
      vip: true
      vlan: 10
      ip_subnet: '172.18.0.0/24'
      allocation_pools: [{'start': '172.18.0.4', 'end': '172.18.0.250'}]
      gateway_ip: '172.18.0.1'
      subnets:
        internal_api_leaf1:
          vlan: 11
          ip_subnet: '172.18.1.0/24'
          allocation_pools: [{'start': '172.18.1.4', 'end': '172.18.1.250'}]
          gateway_ip: '172.18.1.1'
        internal_api_leaf2:
          vlan: 12
          ip_subnet: '172.18.2.0/24'
          allocation_pools: [{'start': '172.18.2.4', 'end': '172.18.2.250'}]
          gateway_ip: '172.18.2.1'
注記

Control Plane ネットワークは、アンダークラウドですでに作成済みなので、ネットワークデータファイルでは定義しません。ただし、パラメーターを手動で設定して、オーバークラウドが NIC を適切に設定できるようにする必要があります。

注記

Controller ベースのサービスが含まれるネットワークについて、vip: true と定義します。上記の例では、InternalApiLeaf0 にそれらのサービスが含まれます。

4.2. ロールデータファイルの作成

各リーフ用のそれぞれのコンポーザブルロールを定義して、コンポーザブルネットワークをそれぞれのロールに接続するには、以下の手順を実施します。

手順

  1. stack ユーザーのホームディレクトリーに、カスタム roles ディレクトリーを作成します。

    $ mkdir ~/roles
  2. デフォルトの Controller、Compute、Ceph Storage ロールを、director のコアテンプレートコレクションから roles ディレクトリーにコピーします。Leaf 0 に合わせて、Compute および Ceph Storage 用ファイルの名前を変更します。

    $ cp /usr/share/openstack-tripleo-heat-templates/roles/Controller.yaml ~/roles/Controller.yaml
    $ cp /usr/share/openstack-tripleo-heat-templates/roles/Compute.yaml ~/roles/Compute0.yaml
    $ cp /usr/share/openstack-tripleo-heat-templates/roles/CephStorage.yaml ~/roles/CephStorage0.yaml
  3. Leaf 0 の Compute および Ceph Storage ファイルをベースとして、Leaf 1 および Leaf 2 ファイル用にコピーを作成します。

    $ cp ~/roles/Compute0.yaml ~/roles/Compute1.yaml
    $ cp ~/roles/Compute0.yaml ~/roles/Compute2.yaml
    $ cp ~/roles/CephStorage0.yaml ~/roles/CephStorage1.yaml
    $ cp ~/roles/CephStorage0.yaml ~/roles/CephStorage2.yaml
  4. それぞれのリーフパラメーターと整合するように、Leaf 0、Leaf 1、および Leaf 2 ファイルの nameHostnameFormatDefault、および deprecated_nic_config_name パラメーターを編集します。たとえば、Leaf 0 Compute ファイルのパラメーター値は、以下のように設定します。

    - name: ComputeLeaf0
      HostnameFormatDefault: '%stackname%-compute-leaf0-%index%'
      deprecated_nic_config_name: 'computeleaf0.yaml'

    Leaf 0 Ceph Storage ファイルのパラメーター値は、以下のように設定します。

    - name: CephStorageLeaf0
      HostnameFormatDefault: '%stackname%-cephstorage-leaf0-%index%'
      deprecated_nic_config_name: 'ceph-strorageleaf0.yaml'
  5. それぞれのリーフネットワークのパラメーターと整合するように、Leaf 1 および Leaf 2 ファイルの networks パラメーターを編集します。たとえば、Leaf 1 Compute ファイルのパラメーター値は、以下のように設定します。

    - name: ComputeLeaf1
      networks:
        InternalApi:
          subnet: internal_api_leaf1
        Tenant:
          subnet: tenant_leaf1
        Storage:
          subnet: storage_leaf1

    Leaf 1 Ceph Storage ファイルのパラメーター値は、以下のように設定します。

    - name: CephStorageLeaf1
      networks:
        Storage:
          subnet: storage_leaf1
        StorageMgmt:
          subnet: storage_mgmt_leaf1
    注記

    この設定を行うのは、Leaf 1 および Leaf 2 だけです。Leaf 0 の networks パラメーターは、ベースサブネットの値のままにします (各サブネットの小文字を使用した名前に接尾辞 _subnet を追加したもの)。たとえば、Leaf 0 の内部 API は internal_api_subnet となります。

  6. ロールの設定が完了したら、以下のコマンドを実行して完全なロールデータファイルを生成します。

    $ openstack overcloud roles generate --roles-path ~/roles -o roles_data_spine_leaf.yaml Controller Compute Compute1 Compute2 CephStorage CephStorage1 CephStorage2

    これにより、各リーフネットワーク用の全カスタムロールが含まれた完全な roles_data_spine_leaf.yaml ファイルが作成されます。

ロールごとに独自の NIC 設定があります。スパイン/リーフ設定を設定する前に、現在の NIC 設定に適した NIC テンプレートの基本セットを作成する必要があります。

4.3. カスタム NIC 設定の作成

各ロールには、固有の NIC 設定が必要です。NIC テンプレートの基本セットのコピーを作成し、新しいテンプレートを対応する NIC 設定リソースにマッピングするには、以下の手順を実施します。

手順

  1. コア Heat テンプレートディレクトリーに移動します。

    $ cd /usr/share/openstack-tripleo-heat-templates
  2. tools/process-templates.py スクリプト、カスタム network_data ファイル、およびカスタム roles_data ファイルを使用して、Jinja2 テンプレートをレンダリングします。

    $ tools/process-templates.py \
        -n /home/stack/network_data_spine_leaf.yaml \
        -r /home/stack/roles_data_spine_leaf.yaml \
        -o /home/stack/openstack-tripleo-heat-templates-spine-leaf
  3. ホームディレクトリーに移動します。

    $ cd /home/stack
  4. デフォルト NIC テンプレートのいずれかからコンテンツをコピーし、スパイン/リーフ型テンプレートのベースとして使用します。たとえば、single-nic-vlans NIC テンプレートをコピーするには、以下のコマンドを実行します。

    $ cp -r openstack-tripleo-heat-templates-spine-leaf/network/config/single-nic-vlans/* /home/stack/templates/spine-leaf-nics/.
  5. /home/stack/templates/spine-leaf-nics/ の各 NIC 設定を編集し、設定スクリプトの場所を絶対パスに変更します。以下のスニペットに示すような、ネットワーク設定のセクションにスクロールします。

    resources:
      OsNetConfigImpl:
        type: OS::Heat::SoftwareConfig
        properties:
          group: script
          config:
            str_replace:
              template:
                get_file: ../../scripts/run-os-net-config.sh
              params:
                $network_config:
                  network_config:

    スクリプトの場所を絶対パスに変更します。

    resources:
      OsNetConfigImpl:
        type: OS::Heat::SoftwareConfig
        properties:
          group: script
          config:
            str_replace:
              template:
                get_file: /usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh
              params:
                $network_config:
                  network_config:

    それぞれのリーフの各ファイルについてこの変更を行い、変更を保存します。

    注記

    NIC をさらに変更する場合には、Advanced Overcloud CustomizationCustom network interface templates を参照してください。

  6. spine-leaf-nics.yaml という名前のファイルを作成し、そのファイルを編集します。
  7. ファイルに resource_registry セクションを作成し、*::Net::SoftwareConfig リソースのセットを追加して、対応する NIC テンプレートにマッピングします。

    resource_registry:
      OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/controller.yaml
      OS::TripleO::ComputeLeaf0::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf0.yaml
      OS::TripleO::ComputeLeaf1::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf1.yaml
      OS::TripleO::ComputeLeaf2::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf2.yaml
      OS::TripleO::CephStorageLeaf0::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf0.yaml
      OS::TripleO::CephStorageLeaf1::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf1.yaml
      OS::TripleO::CephStorageLeaf2::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf2.yaml

    これらのリソースマッピングは、デプロイメント時にデフォルトのリソースマッピングをオーバーライドします。

  8. spine-leaf-nics.yaml ファイルを保存します。
  9. レンダリング済みテンプレートのディレクトリーを削除します。

    $ rm -rf openstack-tripleo-heat-templates-spine-leaf

    上記の手順を実施すると、NIC テンプレートのセットと共に、必要な ::Net::SoftwareConfig リソースをそれらのテンプレートにマッピングする環境ファイルが作成されます。

  10. 最終的に openstack overcloud deploy コマンドを実行する際には、環境ファイルを以下の順番で追加するようにしてください。

    1. /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml: ネットワーク分離を有効にします。director はこのファイルを network-isolation.j2.yaml Jinja2 テンプレートからレンダリングする点に注意してください。
    2. /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml: デフォルトの NIC リソースマッピングが含まれるデフォルトのネットワーク環境ファイル。director はこのファイルを network-environment.j2.yaml Jinja2 テンプレートからレンダリングする点に注意してください。
    3. /home/stack/templates/spine-leaf-nics.yaml: カスタム NIC リソースマッピングが含まれるこのファイルは、デフォルトの NIC リソースマッピングをオーバーライドします。

      以下のコマンドスニペットに、環境ファイルの順番を示します。

      $ openstack overcloud deploy --templates
          ...
          -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
          -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
          -e /home/stack/templates/spine-leaf-nics.yaml \
          ...
  11. ネットワーク環境ファイルに情報を追加してスパイン/リーフアーキテクチャーの特定機能を定義するには、以降のセクションに記載する手順を実施します。この設定を完了したら、このファイルを openstack overcloud deploy コマンドに追加します。

関連情報

4.4. コントロールプレーンのパラメーターの設定

分離されたスパイン/リーフネットワークのネットワーク詳細の定義には、通常 network_data ファイルを使用します。コントロールプレーンネットワークは例外で、これはアンダークラウドによって作成されます。ただし、オーバークラウドには、各リーフのコントロールプレーンへのアクセスが必要です。このアクセスを有効にするには、デプロイメントに追加パラメーターを定義する必要があります。

以下の例では、Leaf 0 上の対応するコントロールプレーンネットワークの IP、サブネット、デフォルトルートを定義します。

手順

  1. spine-leaf-ctlplane.yaml という名前のファイルを作成し、そのファイルを編集します。
  2. ファイルに parameter_defaults セクションを作成し、それぞれのスパイン/リーフ型ネットワークについてコントロールプレーンのサブネットのマッピングを追加します。

    parameter_defaults:
      ...
      ControllerControlPlaneSubnet: leaf0
      Compute0ControlPlaneSubnet: leaf0
      Compute1ControlPlaneSubnet: leaf1
      Compute2ControlPlaneSubnet: leaf2
      CephStorage0ControlPlaneSubnet: leaf0
      CephStorage1ControlPlaneSubnet: leaf1
      CephStorage2ControlPlaneSubnet: leaf2
  3. spine-leaf-ctlplane.yaml ファイルを保存します。

4.5. 仮想 IP アドレス用サブネットの設定

通常、Controller ロールは各ネットワークの仮想 IP (VIP) アドレスをホストします。デフォルトでは、コントロールプレーンを除き、オーバークラウドは各ネットワークのベースサブネットから仮想 IP を取得します。コントロールプレーンは、標準のアンダークラウドのインストール時に作成されたデフォルトのサブネット名である ctlplane-subnet を使用します。

以下のスパイン/リーフのシナリオでは、デフォルトのベースプロビジョニングネットワークは ctlplane-subnet ではなく leaf0 です。つまり、VipSubnetMap パラメーターにオーバーライド用の値を追加して、コントロールプレーンの仮想 IP が使用するサブネットを変更する必要があります。

また、各ネットワークの仮想 IP がそのネットワークのベースサブネットを使用しない場合、VipSubnetMap パラメーターにさらにオーバーライド値を追加して、director がコントローラーノードに接続する L2 ネットワークセグメントに関連付けられたサブネット上の仮想 IP を作成するようにしなければなりません。

手順

  1. spine-leaf-vips.yaml という名前のファイルを作成し、そのファイルを編集します。
  2. ファイルに parameter_defaults セクションを作成し、それぞれの要件に応じて VipSubnetMap パラメーターを追加します。

    • プロビジョニング / コントロールプレーンネットワークに leaf0 を使用する場合には、ctlplane の仮想 IP 再マッピングを leaf0 に設定します。

      parameter_defaults:
        VipSubnetMap:
          ctlplane: leaf0
    • 複数の仮想 IP に異なるリーフを使用する場合には、要求に応じて仮想 IP の再マッピングを設定します。たとえば、以下のスニペットを使用して、すべての仮想 IP に leaf1 を使用するように VipSubnetMap パラメーターを設定します。

      parameter_defaults:
        VipSubnetMap:
          ctlplane: leaf1
          redis: internal_api_leaf1
          InternalApi: internal_api_leaf1
          Storage: storage_leaf1
          StorageMgmt: storage_mgmt_leaf1
  3. spine-leaf-vips.yaml ファイルを保存します。

4.6. 異なるネットワークのマッピング

デフォルトでは、OpenStack Platform は Open Virtual Network (OVN) を使用します。この場合、外部ネットワークへのアクセス用に、すべてのコントローラーおよびコンピュートノードを 1 つの L2 ネットワークに接続する必要があります。つまり、コントローラーおよびコンピュートネットワークの設定は、共に br-ex ブリッジを使用し、director はデフォルトではこのブリッジをオーバークラウド内の datacentre ネットワークにマッピングします。このマッピングは、通常フラットネットワークマッピングまたは VLAN ネットワークマッピングのいずれかに使用されます。スパイン/リーフのアーキテクチャーでは、各リーフがそのリーフ上の特定のブリッジまたは VLAN 経由でトラフィックをルーティングするように、これらのマッピングを変更することができます。この設定は、エッジコンピューティングのシナリオで頻繁に使用されます。

手順

  1. spine-leaf-separate.yaml という名前のファイルを作成し、そのファイルを編集します。
  2. spine-leaf-separate.yaml ファイルに parameter_defaults セクションを作成し、それぞれのスパイン/リーフネットワークについて外部ネットワークのマッピングを追加します。

    • フラットネットワークのマッピングの場合には、NeutronFlatNetworks パラメーターに各リーフのリストを定義し、各リーフの NeutronBridgeMappings パラメーターを設定します。

      parameter_defaults:
        NeutronFlatNetworks: leaf0,leaf1,leaf2
        Controller0Parameters:
          NeutronBridgeMappings: "leaf0:br-ex"
        Compute0Parameters:
          NeutronBridgeMappings: "leaf0:br-ex"
        Compute1Parameters:
          NeutronBridgeMappings: "leaf1:br-ex"
        Compute2Parameters:
          NeutronBridgeMappings: "leaf2:br-ex"
    • VLAN ネットワークのマッピングの場合には、さらに NeutronNetworkVLANRanges を設定して、3 つすべてのリーフネットワーク用に VLAN をマッピングします。

        NeutronNetworkType: 'geneve,vlan'
        NeutronNetworkVLANRanges: 'leaf0:1:1000,leaf1:1:1000,leaf2:1:1000'
  3. spine-leaf-separate.yaml ファイルを保存します。

4.7. スパイン/リーフ対応のオーバークラウドのデプロイ

スパイン/リーフ型オーバークラウドの設定が完了したら、以下の手順を実施して各ファイルを確認してからデプロイメントコマンドを実行します。

手順

  1. /home/stack/template/network_data_spine_leaf.yaml ファイルをチェックして、各リーフ用のネットワークおよびサブネットがすべて含まれていることを確認します。

    注記

    現在、ネットワークサブネットおよび allocation_pools の値に対する自動検証はありません。これらの値を一貫性を持って定義し、既存のネットワークと競合しないようにしてください。

  2. /home/stack/templates/roles_data_spine_leaf.yaml の値をチェックして、各リーフのロールが定義されていることを確認します。
  3. ~/templates/spine-leaf-nics/ ディレクトリーの NIC テンプレートをチェックして、各リーフ上のそれぞれのロールのインターフェイスが正しく定義されていることを確認します。
  4. spine-leaf-nics.yaml カスタム環境ファイルをチェックして、各ロールのカスタム NIC テンプレートを参照する resource_registry セクションが含まれていることを確認します。
  5. /home/stack/templates/nodes_data.yaml ファイルをチェックして、全ロールにフレーバーとノード数が割り当てられていることを確認します。また、各リーフのノードがすべて適切にタグ付けされていることを確認します。
  6. openstack overcloud deploy コマンドを実行して、スパイン/リーフの設定を適用します。以下に例を示します。

    $ openstack overcloud deploy --templates \
        -n /home/stack/templates/network_data_spine_leaf.yaml \
        -r /home/stack/templates/roles_data_spine_leaf.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
        -e /home/stack/templates/spine-leaf-nics.yaml \
        -e /home/stack/templates/spine-leaf-ctlplane.yaml \
        -e /home/stack/templates/spine-leaf-vips.yaml \
        -e /home/stack/templates/spine-leaf-separate.yaml \
        -e /home/stack/templates/nodes_data.yaml \
        -e [OTHER ENVIRONMENT FILES]
    • network-isolation.yaml は、同じ場所にある Jinja2 ファイル (network-isolation.j2.yaml) のレンダリング後の名前です。デプロイメントコマンドにこのファイルを追加して、director が各ネットワークを正しいリーフに分離できるようにします。これにより、ネットワークはオーバークラウドの作成プロセス中に動的に作成されるようになります。
    • network-isolation.yaml ファイルの後に network-environment.yaml ファイルを指定します。network-environment.yaml ファイルにより、コンポーザブルネットワークパラメーターのデフォルトネットワーク設定が提供されます。
    • network-environment.yaml ファイルの後に spine-leaf-nics.yaml ファイルを指定します。spine-leaf-nics.yaml ファイルは、network-environment.yaml ファイルで定義されるデフォルト NIC テンプレートマッピングをオーバーライドします。
    • これ以外にスパイン/リーフネットワークの環境ファイルを作成した場合には、spine-leaf-nics.yaml ファイルの後にそれらの環境ファイルを追加します。
    • 環境ファイルを更に追加します。(例: コンテナーイメージの場所や Ceph クラスターの設定を定義した環境ファイルなど)。
  7. スパイン/リーフ対応のオーバークラウドがデプロイされるまで待ちます。

4.8. スパイン/リーフ型デプロイメントへの新たなリーフの追加

ネットワーク容量の増加や、新しい物理サイトの追加を行う場合には、Red Hat OpenStack Platform (RHOSP) のスパイン/リーフネットワークに新たなリーフが必要になる場合があります。

前提条件

  • RHOSP デプロイメントでスパイン/リーフ型ネットワークトポロジーが使用されている。

手順

  1. アンダークラウドホストに stack ユーザーとしてログインします。
  2. source コマンドでアンダークラウドの認証情報ファイルを読み込みます。

    $ source ~/stackrc
  3. /usr/share/openstack-tripleo-heat-templates/network_data_spine_leaf.yaml ファイルの適切なベースネットワークの下にリーフサブネットを追加して、追加する新しいリーフ用のコンポーザブルネットワーク項目としてリーフサブネットを追加します。

    以下の例では、新しいリーフ (leaf3) のサブネットエントリーが追加されました。

    - name: InternalApi
      name_lower: internal_api
      vip: true
      vlan: 10
      ip_subnet: '172.18.0.0/24'
      allocation_pools: [{'start': '172.18.0.4', 'end': '172.18.0.250'}]
      gateway_ip: '172.18.0.1'
      subnets:
        internal_api_leaf1:
          vlan: 11
          ip_subnet: '172.18.1.0/24'
          allocation_pools: [{'start': '172.18.1.4', 'end': '172.18.1.250'}]
          gateway_ip: '172.18.1.1'
        internal_api_leaf2:
          vlan: 12
          ip_subnet: '172.18.2.0/24'
          allocation_pools: [{'start': '172.18.2.4', 'end': '172.18.2.250'}]
          gateway_ip: '172.18.2.1'
        internal_api_leaf3:
          vlan: 13
          ip_subnet: '172.18.3.0/24'
          allocation_pools: [{'start': '172.18.3.4', 'end': '172.18.3.250'}]
          gateway_ip: '172.18.3.1'
  4. 追加する新しいリーフ用のロールデータファイルを作成します。

    1. 追加する新しいリーフ用にリーフ Compute およびリーフ Ceph Storage ファイルをコピーします。

      この例では、Compute1.yaml および CephStorage1.yaml が新しいリーフ (Compute3.yaml および CephStorage3.yaml) にコピーされ、再度実行されます。

      $ cp ~/roles/Compute1.yaml ~/roles/Compute3.yaml
      $ cp ~/roles/CephStorage1.yaml ~/roles/CephStorage3.yaml
    2. それぞれのリーフパラメーターと整合するように、新しい leaf ファイルの nameHostnameFormatDefault、および deprecated_nic_config_name パラメーターを編集します。

      たとえば、Leaf 1 Compute ファイルのパラメーター値は、以下のように設定します。

      - name: ComputeLeaf1
        HostnameFormatDefault: '%stackname%-compute-leaf1-%index%'
        deprecated_nic_config_name: 'computeleaf1.yaml'

      Leaf 1 Ceph Storage ファイルのパラメーター値は、以下のように設定します。

      - name: CephStorageLeaf1
        HostnameFormatDefault: '%stackname%-cephstorage-leaf1-%index%'
        deprecated_nic_config_name: 'ceph-strorageleaf1.yaml'
    3. それぞれのリーフネットワークのパラメーターと整合するように、新しい Leaf ファイルの networks パラメーターを編集します。

      たとえば、Leaf 1 Compute ファイルのパラメーター値は、以下のように設定します。

      - name: ComputeLeaf1
        networks:
          InternalApi:
            subnet: internal_api_leaf1
          Tenant:
            subnet: tenant_leaf1
          Storage:
            subnet: storage_leaf1

      Leaf 1 Ceph Storage ファイルのパラメーター値は、以下のように設定します。

      - name: CephStorageLeaf1
        networks:
          Storage:
            subnet: storage_leaf1
          StorageMgmt:
            subnet: storage_mgmt_leaf1
    4. ロールの設定が完了したら、以下のコマンドを実行して完全なロールデータファイルを生成します。ネットワークにすべてのリーフと、新たに追加するリーフを含めます。

      以下の例では、leaf3 が leaf0、leaf1、および leaf2 に追加されます。

      $ openstack overcloud roles generate --roles-path ~/roles -o roles_data_spine_leaf.yaml Controller Compute Compute1 Compute2 Compute3 CephStorage CephStorage1 CephStorage2 CephStorage3

      これにより、各リーフネットワーク用の全カスタムロールが含まれた完全な roles_data_spine_leaf.yaml ファイルが作成されます。

  5. 追加するリーフ用のカスタム NIC 設定を作成します。

    1. 追加する新しいリーフ用のリーフ Compute およびリーフ Ceph Storage NIC 設定ファイルをコピーします。

      この例では、computeleaf1.yaml および ceph-storageleaf1.yaml が新しいリーフ (computeleaf3.yaml および ceph-storageleaf3.yaml) にコピーされます。

      $ cp ~/templates/spine-leaf-nics/computeleaf1.yaml ~/templates/spine-leaf-nics/computeleaf3.yaml
      $ cp ~/templates/spine-leaf-nics/ceph-storageleaf1.yaml ~/templates/spine-leaf-nics/ceph-storageleaf3.yaml
    2. /usr/share/openstack-tripleo-heat-templates/network_data_spine_leaf.yaml のファイルの resource_registry セクションで、::Net::SoftwareConfig リソースのセットを追加して、各 NIC テンプレートにマップします。

      以下の例では、新たなリーフ NIC 設定ファイル (computeleaf3.yaml および ceph-storageleaf3.yaml) が追加されました。

      resource_registry:
        OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/controller.yaml
        OS::TripleO::ComputeLeaf0::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf0.yaml
        OS::TripleO::ComputeLeaf1::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf1.yaml
        OS::TripleO::ComputeLeaf2::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf2.yaml
        OS::TripleO::ComputeLeaf3::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf3.yaml
        OS::TripleO::CephStorageLeaf0::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf0.yaml
        OS::TripleO::CephStorageLeaf1::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf1.yaml
        OS::TripleO::CephStorageLeaf2::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf2.yaml
        OS::TripleO::CephStorageLeaf3::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf3.yaml

      これらのリソースマッピングは、デプロイメント時にデフォルトのリソースマッピングをオーバーライドします。

      上記の手順を実施すると、NIC テンプレートのセットと共に、必要な ::Net::SoftwareConfig リソースをそれらのテンプレートにマッピングする環境ファイルが作成されます。最終的に openstack overcloud deploy コマンドを実行する際には、環境ファイルを以下の順番で追加するようにしてください。

    3. /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml: ネットワーク分離を有効にします。

      director はこのファイルを network-isolation.j2.yaml Jinja2 テンプレートからレンダリングする点に注意してください。

    4. /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml: デフォルトの NIC リソースマッピングが含まれるデフォルトのネットワーク環境ファイル。

      director はこのファイルを network-environment.j2.yaml Jinja2 テンプレートからレンダリングする点に注意してください。

    5. /home/stack/templates/spine-leaf-nics.yaml: カスタム NIC リソースマッピングが含まれるこのファイルは、デフォルトの NIC リソースマッピングをオーバーライドします。

      以下のコマンドスニペットに、環境ファイルの順番を示します。

      $ openstack overcloud deploy --templates
          ...
          -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
          -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
          -e /home/stack/templates/spine-leaf-nics.yaml \
          ...
  6. コントロールプレーンのパラメーターを更新します。

    ~/templates/spine-leaf-ctlplane.yamlparameter_defaults セクションに、新しいリーフネットワーク用のコントロールプレーンのサブネットマッピングを追加します。

    以下の例では、新しいリーフ (leaf3) エントリーを追加します。

    parameter_defaults:
      ...
      ControllerControlPlaneSubnet: leaf0
      Compute0ControlPlaneSubnet: leaf0
      Compute1ControlPlaneSubnet: leaf1
      Compute2ControlPlaneSubnet: leaf2
      Compute3ControlPlaneSubnet: leaf3
      CephStorage0ControlPlaneSubnet: leaf0
      CephStorage1ControlPlaneSubnet: leaf1
      CephStorage2ControlPlaneSubnet: leaf2
      CephStorage3ControlPlaneSubnet: leaf3
  7. 新しいリーフネットワークをマッピングします。

    ~/templates/spine-leaf-separate.yamlparameter_defaults セクションで、新規リーフネットワーク用の外部ネットワークのマッピングを追加します。

    • フラットネットワークのマッピングの場合には、NeutronFlatNetworks パラメーターの新しいリーフ (leaf3) をリスト表示し、新しいリーフの NeutronBridgeMappings パラメーターを設定します。

      parameter_defaults:
        NeutronFlatNetworks: leaf0,leaf1,leaf2, leaf3
        Controller0Parameters:
          NeutronBridgeMappings: "leaf0:br-ex"
        Compute0Parameters:
          NeutronBridgeMappings: "leaf0:br-ex"
        Compute1Parameters:
          NeutronBridgeMappings: "leaf1:br-ex"
        Compute2Parameters:
          NeutronBridgeMappings: "leaf2:br-ex"
        Compute3Parameters:
          NeutronBridgeMappings: "leaf3:br-ex"
    • VLAN ネットワークのマッピングの場合には、さらに NeutronNetworkVLANRanges を設定して、新しいリーフネットワーク用 (leaf3) に VLAN をマッピングします。

        NeutronNetworkType: 'geneve,vlan'
        NeutronNetworkVLANRanges: 'leaf0:1:1000,leaf1:1:1000,leaf2:1:1000,leaf3:1:1000'
  8. 「スパイン/リーフ対応のオーバークラウドのデプロイ」に記載の手順に従って、スパイン/リーフ型のオーバークラウドを再デプロイします。

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.