第7章 ネットワークの分離
director は、分離されたオーバークラウドネットワークを設定する方法を提供します。これは、オーバークラウド環境がネットワークトラフィックのタイプを異なるネットワークに分離し、ネットワークトラフィックを特定のネットワークインターフェイスまたはボンドに割り当てることを意味します。隔離されたネットワークを設定した後、director は、隔離されたネットワークを使用するように OpenStack サービスを設定します。隔離されたネットワークが設定されていない場合、すべてのサービスはプロビジョニングネットワークで実行されます。
この例では、すべてのサービスに個別のネットワークを使用しています。
- ネットワーク 1: プロビジョニング
- ネットワーク 2: 内部 API
- ネットワーク 3: テナントネットワーク
- ネットワーク 4: ストレージ
- ネットワーク 5: ストレージ管理
- ネットワーク 6 - 管理
- ネットワーク 7: External および Floating IP (オーバークラウドの作成後にマッピング)
この例では、各オーバークラウドノードは、ボンディング内の 2 つのネットワークインターフェイスを使用して、タグ付き 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 テンプレートのローカルセットが作成されます。各テンプレートには、標準の 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
複数の
インターフェイス
を結合する 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
複数の
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}
これらの各項目のパラメーターの完全なリストについては、付録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