Menu Close

2.10. テナントとプロバイダーネットワーク

以下の図には、テナントとプロバイダーネットワークの種別の概要と、それらが OpenStack Networking トポロジー全体でどのように対話するかを図解しています。

network types

2.10.1. テナントネットワーク

ユーザーは、プロジェクト内の接続のためにテナントネットワークを作成します。デフォルトではテナントネットワークは完全に分離され、他のプロジェクトとは共有されません。OpenStack Networking はさまざまな種別のテナントネットワークをサポートしています。

  • フラット: 全インスタンスが同じネットワークに存在し、そのネットワークは、ホストと共有することも可能です。VLAN タグ付けやその他のネットワーク分離は行われません。
  • VLAN: OpenStack Networking では、物理ネットワークにある VLAN に対応する VLAN ID (802.1Q タグ付け)を使用してユーザーが複数のプロバイダーネットワークまたはテナントネットワークを作成することができます。これにより、インスタンスは環境全体で相互に通信を行うことが可能になります。また、専用のサーバー、ファイアウォール、ロードバランサー、および同じレイヤー 2 上にあるその他のネットワークインフラストラクチャーと通信することもできます。
  • VXLAN および GRE のトンネル: VXLAN および GRE は、ネットワークオーバーレイを使用して、インスタンス間のプライベートの通信をサポートします。OpenStack Networking ルーターは、トラフィックが GRE または VXLAN テナントネットワークの外部に通過できるようにするために必要です。また、ルーターは、直接接続されたテナントネットワークを外部ネットワーク (インターネットを含む) に接続するのにも必要とされ、Floating IP アドレスを使用して外部ネットワークから直接インスタンスに接続する機能を提供します。
注記

テナントネットワークの QoS ポリシーを設定することが可能です。詳細な情報は、「10章Quality-of-Service (QoS) の設定」を参照してください。

2.10.2. プロバイダーネットワーク

OpenStack の管理者は、プロバイダーネットワークを作成します。プロバイダーネットワークは、データセンター内の既存の物理ネットワークに直接マップします。このカテゴリーの中で有用なネットワークタイプには、フラット (タグなし) と VLAN (802.1Q タグ付き) があります。ネットワーク作成プロセスの一環で、テナント間でプロバイダーネットワークを共有することもできます。

2.10.2.1. フラットプロバイダーネットワーク

フラットプロバイダーネットワークを使用してインスタンスを直接外部ネットワークに接続することができます。これは、複数の物理ネットワーク (例: physnet1 および physnet2)、さらにそれぞれ別の物理インターフェース (eth0 → physnet1 および eth1 → physnet2) があり、各コンピュートおよびネットワークノードをこれらの外部ネットワークに接続する場合に便利です。複数のプロバイダーネットワークに接続するために、単一のインターフェース上で VLAN タグ付けされたインターフェースを複数使用する場合には、「VLAN プロバイダーネットワークの使用」の項を参照してください。

2.10.2.2. コントローラーノード用ネットワークの設定

1. /etc/neutron/plugin.ini (/etc/neutron/plugins/ml2/ml2_conf.ini へのシンボリックリンク) を編集し、既存の値リストに flat を追加し、flat_networks* に設定します。以下に例を示します。

type_drivers = vxlan,flat
flat_networks =*

2. フラットネットワークとして外部ネットワークを作成して、設定済みの physical_network に関連付けます。このネットワークを共有ネットワークとして設定し (--shared を使用)、他のユーザーが外部ネットワークに直接接続されたインスタンスを作成できるようにします。

neutron net-create public01 --provider:network_type flat --provider:physical_network physnet1 --router:external=True --shared

3. neutron subnet-create またはダッシュボードを使用してサブネットを作成します。以下に例を示します。

# neutron subnet-create --name public_subnet --enable_dhcp=False --allocation_pool start=192.168.100.20,end=192.168.100.100 --gateway=192.168.100.1 public01 192.168.100.0/24

4. neutron-server サービスを再起動して、変更を適用します。

systemctl restart neutron-server

2.10.2.3. ネットワークおよびコンピュートノード用ネットワークの設定

ノードを外部ネットワークに接続し、インスタンスが外部ネットワークと直接通信できるようにするには、ネットワークノードおよびコンピュートノードで以下の手順を実施します。

1. 外部ネットワークのブリッジ (br-ex) を作成して、関連付けたポート(eth1) を追加します。

/etc/sysconfig/network-scripts/ifcfg-br-ex に外部ネットワークのブリッジを作成します。

DEVICE=br-ex
TYPE=OVSBridge
DEVICETYPE=ovs
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none

/etc/sysconfig/network-scripts/ifcfg-eth1eth1br-ex に接続するように設定します。

DEVICE=eth1
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none

ノードを再起動するか、ネットワークサービスを再起動して、変更を適用します。

2. /etc/neutron/plugins/ml2/openvswitch_agent.ini で物理ネットワークを設定して、ブリッジをその物理ネットワークにマッピングします。

bridge_mappings = physnet1:br-ex
注記

ブリッジマッピングについての詳しい情報は、「11章ブリッジマッピングの設定」を参照してください。

3. ネットワークノードとコンピュートノードの両方で neutron-openvswitch-agent サービスを再起動して、変更を適用します。

systemctl restart neutron-openvswitch-agent

2.10.2.4. ネットワークノードの設定

1. /etc/neutron/l3_agent.iniexternal_network_bridge = に空の値を設定します。

external_network_bridge = に空の値を設定すると、複数の外部ネットワークブリッジを使用することができます。OpenStack Networking は、各外部ブリッジから br-int へのパッチポートを作成します。

external_network_bridge =

2. neutron-l3-agent を再起動して変更を適用します。

systemctl restart neutron-l3-agent
注記

複数のフラットプロバイダーネットワークが存在する場合には、ネットワークごとに独立した物理インターフェースおよびブリッジを使用して外部ネットワークに接続する必要があります。ifcfg-* スクリプトを適切に設定し、bridge_mappings オプションで各ネットワークのコンマ区切りリストによりマッピングを指定します。ブリッジマッピングについての詳しい情報は、「11章ブリッジマッピングの設定」を参照してください。