Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第7章 ネットワークの分離

director は、分離されたオーバークラウドネットワークを設定する方法を提供します。これは、オーバークラウド環境がネットワークトラフィックのタイプを異なるネットワークに分離し、ネットワークトラフィックを特定のネットワークインターフェイスまたはボンドに割り当てることを意味します。隔離されたネットワークを設定した後、director は、隔離されたネットワークを使用するように OpenStack サービスを設定します。隔離されたネットワークが設定されていない場合、すべてのサービスはプロビジョニングネットワークで実行されます。

この例では、すべてのサービスに個別のネットワークを使用しています。

  • ネットワーク 1: プロビジョニング
  • ネットワーク 2: 内部 API
  • ネットワーク 3: テナントネットワーク
  • ネットワーク 4: ストレージ
  • ネットワーク 5: ストレージ管理
  • ネットワーク 6 - 管理
  • ネットワーク 7: External および Floating IP (オーバークラウドの作成後にマッピング)

この例では、各オーバークラウドノードは、ボンディング内の 2 つのネットワークインターフェイスを使用して、タグ付き VLAN 内のネットワークにサービスを提供します。この結合には、次のネットワーク割り当てが適用されます。

表7.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

External: Floating IP

10.1.1.0/24

100

7.1. カスタムインターフェイステンプレートの作成

オーバークラウドのネットワーク設定には、ネットワークインターフェイスのテンプレートセットが必要です。これらのテンプレートをカスタマイズして、ロールごとにノードインターフェイスを設定します。これらのテンプレートは YAML 形式の標準の heat テンプレートです (「Heat テンプレート」 を参照してください)。director には、開始するためのサンプルテンプレートのセットが含まれています。

  • /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans - ロールごとに VLAN 設定を持つ単一の NIC のテンプレートを含むディレクトリー。
  • /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans - ロールごとに結合された NIC 設定のテンプレートを含むディレクトリー。
  • /usr/share/openstack-tripleo-heat-templates/network/config/multiple-nics - ロールごとに 1 つの NIC を使用する複数の NIC 設定のテンプレートを含むディレクトリー。
  • /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-linux-bridge-vlans - Open vSwitch ブリッジの代わりに Linux ブリッジを使用し、ロールベースに VLAN を使用した単一 NIC の設定を行うためのテンプレートが含まれるディレクトリーです。
注記

これらの例には、デフォルトロールのテンプレートのみが含まれています。カスタムロールのネットワークインターフェイス設定を定義するには、これらのテンプレートをベースとして使用します。

この例では、デフォルトの結合 NIC の設定例をベースとして使用します。/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

これにより、ロールごとにボンディングされたネットワークインターフェイス設定を定義する Heat テンプレートのローカルセットが作成されます。各テンプレートには、標準の parametersresources、および 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 で、複数の interfaceovs_bondvlan オブジェクトを接続するブリッジを定義します。

          - 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

複数の インターフェイス を結合する Linux ボンディングを定義します。これにより、冗長性や帯域幅が向上します。bonding_options パラメーターには、カーネルベースのボンディングオプションを指定するようにしてください。Linux ボンディングオプションの詳細については、次を参照してください。 4.5.1.結合モジュールディレクティブRed Hat Enterprise Linux 7 ネットワークガイドに記載されています。

            - type: linux_bond
              name: bond1
              members:
              - type: interface
                name: nic2
              - type: interface
                name: nic3
              bonding_options: "mode=802.3ad"
linux_bridge

複数の interfacelinux_bondvlan オブジェクトを接続する 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}

これらの各項目のパラメーターの完全なリストについては、付録C ネットワークインターフェイスパラメーター を参照してください。

この例では、デフォルトの結合インターフェイス設定を使用します。たとえば、/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}
注記

管理ネットワークセクションは、ネットワークインターフェイスの Heat テンプレートでコメント化されています。管理ネットワークを有効にするには、このセクションのコメントを外します。

このテンプレートは、ブリッジ (通常は br-ex という名前の外部ブリッジ) を定義し、2 つの番号付きインターフェイス (nic2 および nic3) から bond1 という結合インターフェイスを作成します。ブリッジには、bond1 を親デバイスとして使用するタグ付き VLAN デバイスも多数含まれています。テンプレートには、ディレクター (nic1) に接続するインターフェイスも含まれています。

ネットワークインターフェイステンプレートのその他の例については、付録B ネットワークインターフェイステンプレートの例 を参照してください。

これらのパラメーターの多くは get_param 関数を使用していることに注意してください。これらは、ネットワーク専用に作成した環境ファイルで定義します。

重要

未使用のインターフェイスは、不要なデフォルトルートやネットワークループを引き起こす可能性があります。たとえば、テンプレートには、OpenStack サービスの IP 割り当てを使用せずに DHCP やデフォルトルートを使用するネットワークインターフェイス (nic4) が含まれている場合があります。ネットワークの競合を回避するには、ovs_bridge デバイスから未使用のインターフェイスをすべて削除し、DHCP とデフォルトのルート設定を無効にします。

- type: interface
  name: nic4
  use_dhcp: false
  defroute: false