4.2. ネットワークインターフェイスの設定オプション
次の表は、Red Hat OpenStack Services on OpenShift (RHOSO) 環境のネットワークインターフェイスを設定する際に使用できるオプションを説明しています。
RHOSO では Linux ブリッジはサポートされません。代わりに、Linux ボンディングや RHOSO トラフィック用の専用 NIC などの方法を使用してください。
4.2.1. interface リンクのコピーリンクがクリップボードにコピーされました!
単一のネットワークインターフェイスを定義します。ネットワークインターフェイスの name には、実際のインターフェイス名 (eth0、eth1、enp0s25) または一連の番号付きインターフェイス (nic1、nic2、nic3) が使用されます。eth0 や eno2 などの名前付きインターフェイスではなく、nic1 や nic2 などの番号付きインターフェイスを使用する場合、ロール内のホストのネットワークインターフェイスがまったく同じである必要はありません。たとえば、あるホストに em1 と em2 のインターフェイスが指定されており、別のホストには eno1 と eno2 が指定されていても、両ホストの NIC は nic1 および nic2 として参照することができます。
番号によるインターフェイスの順序は、名前によるネットワークインターフェイス種別の順序に対応します。
ethXインターフェイス (eth0、eth1など)。udevで一貫したデバイス命名がオフになっている場合、名前はこの形式で表示されます。enoXおよびemXインターフェイス (eno0、eno1、em0、em1など)。通常はオンボードインターフェイスです。
enXとその他のインターフェイス (enp3s0、enp3s1、ens3など)。英数字順に表示されます。これらは、通常アドオンのインターフェイスです。
番号による NIC スキームには、アクティブなインターフェイスだけが含まれます (たとえば、インターフェイスにスイッチに接続されたケーブルがあるかどうかが考慮されます)。4 つのインターフェイスを持つホストと、6 つのインターフェイスを持つホストがある場合は、nic1 から nic4 を使用して各ホストで 4 本のケーブルだけを結線します。
| オプション | デフォルト | 説明 |
|---|---|---|
|
|
インターフェイスの名前。ネットワークインターフェイスの | |
|
| False | DHCP を使用して IP アドレスを取得します。 |
|
| False | DHCP を使用して v6 の IP アドレスを取得します。 |
|
| インターフェイスに割り当てられる IP アドレスのリスト | |
|
| インターフェイスに割り当てられるルートのリスト。詳細は、「routes」 を参照してください。 | |
|
| 1500 | 接続の最大伝送単位 (MTU: Maximum Transmission Unit) |
|
| False |
プライマリーインターフェイスとしてインターフェイスを定義します。 |
|
| False | システム名の代わりにデバイスのエイリアス設定を記述します。 |
|
| None | DHCP クライアントに渡す引数 |
|
| None | インターフェイスに使用する DNS サーバーのリスト |
|
|
特定の NIC で VXLAN を使用する際にスループットを向上させるには、このオプションを |
例
...
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: interface
name: nic2
...
4.2.2. vlan リンクのコピーリンクがクリップボードにコピーされました!
VLAN を定義します。parameters セクションから渡された VLAN ID およびサブネットを使用します。
| オプション | デフォルト | 説明 |
|---|---|---|
| vlan_id | VLAN ID | |
| device | VLAN の接続先となる親デバイス。VLAN が OVS ブリッジのメンバーではない場合に、このパラメーターを使用します。たとえば、このパラメーターを使用して、ボンディングされたインターフェイスデバイスに VLAN を接続します。 | |
| use_dhcp | False | DHCP を使用して IP アドレスを取得します。 |
| use_dhcpv6 | False | DHCP を使用して v6 の IP アドレスを取得します。 |
| addresses | VLAN に割り当てられる IP アドレスのリスト | |
| routes | VLAN に割り当てられるルートのリスト。詳細は、「routes」 を参照してください。 | |
| mtu | 1500 | 接続の最大伝送単位 (MTU: Maximum Transmission Unit) |
| primary | False | プライマリーインターフェイスとして VLAN を定義します。 |
| persist_mapping | False | システム名の代わりにデバイスのエイリアス設定を記述します。 |
| dhclient_args | None | DHCP クライアントに渡す引数 |
| dns_servers | None | VLAN に使用する DNS サーバーのリスト |
例
...
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
...
members:
- type: vlan
device: nic{{ loop.index + 1 }}
mtu: {{ lookup(vars, networks_lower[network] ~ _mtu) }}
vlan_id: {{ lookup(vars, networks_lower[network] ~ _vlan_id) }}
addresses:
- ip_netmask:
{{ lookup(vars, networks_lower[network] ~ _ip) }}/{{ lookup(vars, networks_lower[network] ~ _cidr) }}
routes: {{ lookup(vars, networks_lower[network] ~ _host_routes) }}
...
4.2.3. ovs_bridge リンクのコピーリンクがクリップボードにコピーされました!
Open vSwitch (OVS) で、複数の interface、ovs_bond、vlan オブジェクトを接続するブリッジを定義します。
ネットワークインターフェイス種別 ovs_bridge には、パラメーター name を使用します。
Control グループネットワークを ovs_bridge インターフェイスに配置すると、ダウンタイムが発生する可能性があります。OVS ブリッジは、Networking サービス (neutron) サーバーに接続して設定データを取得します。OpenStack の制御トラフィック (通常 Control Plane および Internal API ネットワーク) が OVS ブリッジに配置されていると、OVS がアップグレードされたり、管理ユーザーやプロセスによって OVS ブリッジが再起動されたりする度に、neutron サーバーへの接続が失われます。このような状況でダウンタイムが許容されない場合は、コントロールグループのネットワークを OVS ブリッジではなく別のインターフェイスまたはボンディングに配置する必要があります。
- Internal API ネットワークをプロビジョニングインターフェイス上の VLAN および 2 番目のインターフェイス上の OVS ブリッジに配置すると、最小の設定を行うことができます。
- ボンディングを実装する場合は、少なくとも 2 つのボンディング (4 つのネットワークインターフェイス) が必要です。コントロールグループを Linux ボンディングに配置します。PXE ブート用のシングルインターフェイスへの LACP フォールバックをスイッチがサポートしていない場合には、このソリューションには少なくとも 5 つの NIC が必要となります。
複数のブリッジがある場合は、デフォルト名の bridge_name を受け入れるのではなく、個別のブリッジ名を使用する必要があります。個別の名前を使用しないと、コンバージフェーズ時に 2 つのネットワークボンディングが同じブリッジに配置されます。
| オプション | デフォルト | 説明 |
|---|---|---|
| name | ブリッジ名 | |
| use_dhcp | False | DHCP を使用して IP アドレスを取得します。 |
| use_dhcpv6 | False | DHCP を使用して v6 の IP アドレスを取得します。 |
| addresses | ブリッジに割り当てられる IP アドレスのリスト | |
| routes | ブリッジに割り当てられるルートのリスト。詳細は、「routes」 を参照してください。 | |
| mtu | 1500 | 接続の最大伝送単位 (MTU: Maximum Transmission Unit) |
| members | ブリッジで使用するインターフェイス、VLAN、およびボンディングオブジェクトのリスト | |
| ovs_options | ブリッジ作成時に OVS に渡すオプションのセット | |
| ovs_extra | ブリッジのネットワーク設定ファイルで OVS_EXTRA パラメーターとして設定するオプションのセット | |
| defroute | True |
DHCP サービスにより提供されるデフォルトのルートを使用します。 |
| persist_mapping | False | システム名の代わりにデバイスのエイリアス設定を記述します。 |
| dhclient_args | None | DHCP クライアントに渡す引数 |
| dns_servers | None | ブリッジに使用する DNS サーバーのリスト |
例
...
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: ovs_bridge
name: br-bond
dns_servers: {{ ctlplane_dns_nameservers }}
domain: {{ dns_search_domains }}
members:
- type: ovs_bond
name: bond1
mtu: {{ min_viable_mtu }}
ovs_options: {{ bound_interface_ovs_options }}
members:
- type: interface
name: nic2
mtu: {{ min_viable_mtu }}
primary: true
- type: interface
name: nic3
mtu: {{ min_viable_mtu }}
...
4.2.4. ネットワークインターフェイスボンディング リンクのコピーリンクがクリップボードにコピーされました!
複数の物理 NIC をバンドルして、単一の論理チャネルを形成することができます。この設定はボンディングとも呼ばれます。ボンディングを設定して、高可用性システム用の冗長性またはスループットの向上を実現することができます。
Red Hat OpenStack Platform では、Open vSwitch (OVS) カーネルボンディング、OVS-DPDK ボンディング、および Linux カーネルボンディングがサポートされます。
| ボンディング種別 | 種別の値 | 許可されるブリッジ種別 | 許可されるメンバー |
|---|---|---|---|
| OVS カーネルボンディング |
|
|
|
| OVS-DPDK ボンディング |
|
|
|
| Linux カーネルボンディング |
|
|
|
ovs_bridge と ovs_user_bridge を同じノード上で組み合わせないでください。
4.2.4.1. ovs_bond リンクのコピーリンクがクリップボードにコピーされました!
Open vSwitch (OVS) で、複数の interfaces を結合するボンディングを定義します。これにより、冗長性や帯域幅が向上します。
| オプション | デフォルト | 説明 |
|---|---|---|
| name | ボンディング名 | |
| use_dhcp | False | DHCP を使用して IP アドレスを取得します。 |
| use_dhcpv6 | False | DHCP を使用して v6 の IP アドレスを取得します。 |
| addresses | ボンディングに割り当てられる IP アドレスのリスト | |
| routes | ボンディングに割り当てられるルートのリスト。詳細は、「routes」 を参照してください。 | |
| mtu | 1500 | 接続の最大伝送単位 (MTU: Maximum Transmission Unit) |
| primary | False | プライマリーインターフェイスとしてインターフェイスを定義します。 |
| members | ボンディングで使用するインターフェイスオブジェクトのリスト | |
| ovs_options |
ボンディング作成時に OVS に渡すオプションのセット詳細は、表4.6「OVS ボンディングの | |
| ovs_extra | ボンディングのネットワーク設定ファイルで OVS_EXTRA パラメーターとして設定するオプションのセット | |
| defroute | True |
DHCP サービスにより提供されるデフォルトのルートを使用します。 |
| persist_mapping | False | システム名の代わりにデバイスのエイリアス設定を記述します。 |
| dhclient_args | None | DHCP クライアントに渡す引数 |
| dns_servers | None | ボンディングに使用する DNS サーバーのリスト |
ovs_option | 説明 |
|---|---|
|
|
送信元負荷分散 (slb) は、送信元 MAC アドレスと出力 VLAN に基づいてフローのバランスを取り、トラフィックパターンの変化に応じて定期的に再調整します。 |
|
|
|
|
|
Link Aggregation Control Protocol (LACP) の動作を制御します。LACP をサポートしているのは特定のスイッチのみです。お使いのスイッチが LACP に対応していない場合には |
|
| LACP が失敗した場合は、ボンドモードとしてアクティブバックアップを設定します。 |
|
| LACP のハートビートを 1 秒 (高速) または 30 秒 (低速) に設定します。デフォルトは低速です。 |
|
| リンク検出に miimon ハートビート (miimon) またはモニターキャリア (carrier) を設定します。デフォルトは carrier です。 |
|
| miimon を使用する場合には、ハートビートの間隔をミリ秒単位で設定します。 |
|
| フラッピングを防止するためにリンクがアクティブになっている必要がある間隔 (ミリ秒) を設定します。 |
|
| ボンドメンバー間でフローがリバランスする間隔 (ミリ秒) を設定します。この値をゼロに設定すると、ボンドメンバー間のフローのリバランスが無効になります。 |
例 - OVS ボンディング
...
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
...
members:
- type: ovs_bond
name: bond1
mtu: {{ min_viable_mtu }}
ovs_options: {{ bond_interface_ovs_options }}
members:
- type: interface
name: nic2
mtu: {{ min_viable_mtu }}
primary: true
- type: interface
name: nic3
mtu: {{ min_viable_mtu }}
例 - OVS DPDK ボンディング
この例では、OVS ユーザースペースブリッジの一部としてボンディングが作成されます。
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
...
members:
- type: ovs_user_bridge
name: br-dpdk0
members:
- type: ovs_dpdk_bond
name: dpdkbond0
rx_queue: {{ num_dpdk_interface_rx_queues }}
members:
- type: ovs_dpdk_port
name: dpdk0
members:
- type: interface
name: nic4
- type: ovs_dpdk_port
name: dpdk1
members:
- type: interface
name: nic5
4.2.5. OVS ボンディングモードを備えた LACP リンクのコピーリンクがクリップボードにコピーされました!
オプションの Link Aggregation Control Protocol (LACP) と Open vSwitch (OVS) ボンディングを組み合わせて使用できます。LACP は動的ボンディングを作成するネゴシエーションプロトコルで、これにより負荷分散機能および耐障害性を持たせることができます。
以下の表を使用して、LACP オプションと組み合わせた OVS カーネルおよび OVS-DPDK ボンディングインターフェイスのサポート互換性を説明します。
VLAN および LACP を使用した Linux ボンディングを使用することで、コントロールプレーンの中断を回避します。OVS ボンディングを使用し、更新、ホットフィックス、その他のイベントのために OVS または neutron エージェントを再起動すると、コントロールプレーンに影響が出ます。
| 目的 | OVS ボンディングモード | 互換性のある LACP オプション | 備考 |
| 高可用性 (active-passive) |
|
| |
| スループットの向上 (active-active) |
|
|
|
|
|
|
|
4.2.6. linux_bond リンクのコピーリンクがクリップボードにコピーされました!
複数の インターフェイス を結合する Linux ボンディングを定義します。これにより、冗長性や帯域幅が向上します。bonding_options パラメーターには、カーネルベースのボンディングオプションを指定するようにしてください。
| オプション | デフォルト | 説明 |
|---|---|---|
| name | ボンディング名 | |
| use_dhcp | False | DHCP を使用して IP アドレスを取得します。 |
| use_dhcpv6 | False | DHCP を使用して v6 の IP アドレスを取得します。 |
| addresses | ボンディングに割り当てられる IP アドレスのリスト | |
| routes | ボンディングに割り当てられるルートのリスト。「routes」を参照してください。 | |
| mtu | 1500 | 接続の最大伝送単位 (MTU: Maximum Transmission Unit) |
| members | ボンディングで使用するインターフェイスオブジェクトのリスト | |
| bonding_options |
ボンディングを作成する際のオプションのセット。Linux ボンディングの | |
| defroute | True |
DHCP サービスにより提供されるデフォルトのルートを使用します。 |
| persist_mapping | False | システム名の代わりにデバイスのエイリアス設定を記述します。 |
| dhclient_args | None | DHCP クライアントに渡す引数 |
| dns_servers | None | ボンディングに使用する DNS サーバーのリスト |
Linux ボンディングの bonding_options パラメーター
bonding_options パラメーターは、Linux ボンディング用の特定のボンディングオプションを設定します。下表の後に記載された Linux ボンディングの例を参照してください。
bonding_options | 説明 |
|---|---|
|
|
ボンディングモードを設定します。この例では、 |
|
| LACP パケットの送信間隔を 1 秒または 30 秒に定義します。 |
|
| インターフェイスをトラフィックに使用する前にそのインターフェイスがアクティブである必要のある最低限の時間を定義します。この最小設定は、ポートフラッピングによる停止を軽減するのに役立ちます。 |
|
| ドライバーの MIIMON 機能を使用してポートの状態を監視する間隔 (ミリ秒単位) |
例 - Linux ボンディング
...
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: linux_bond
name: bond1
mtu: {{ min_viable_mtu }}
bonding_options: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100 xmit_hash_policy=layer3+4"
members:
type: interface
name: ens1f0
mtu: {{ min_viable_mtu }}
primary: true
type: interface
name: ens1f1
mtu: {{ min_viable_mtu }}
...
例 - Linux ボンディング: 2 つのインターフェイスのボンディング
...
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: linux_bond
name: bond1
members:
- type: interface
name: nic2
- type: interface
name: nic3
bonding_options: "mode=802.3ad lacp_rate=[fast|slow] updelay=1000 miimon=100"
...
例 - 1 つの VLAN を持つ active-backup モードに設定された Linux ボンディング
....
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: linux_bond
name: bond_api
bonding_options: "mode=active-backup"
use_dhcp: false
dns_servers:
get_param: DnsServers
members:
- type: interface
name: nic3
primary: true
- type: interface
name: nic4
- type: vlan
vlan_id:
get_param: InternalApiNetworkVlanID
device: bond_api
addresses:
- ip_netmask:
get_param: InternalApiIpSubnet
例 - OVS ブリッジ上の Linux ボンディング
この例では、ボンディングは LACP モードと 1 つの VLAN を持つ 802.3ad に設定されています。
...
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: ovs_bridge
name: br-tenant
use_dhcp: false
mtu: 9000
members:
- type: linux_bond
name: bond_tenant
bonding_options: "mode=802.3ad updelay=1000 miimon=100"
use_dhcp: false
dns_servers:
get_param: DnsServers
members:
- type: interface
name: p1p1
primary: true
- type: interface
name: p1p2
- type: vlan
device: bond_tenant
vlan_id: {get_param: TenantNetworkVlanID}
addresses:
- ip_netmask: {get_param: TenantIpSubnet}
...
4.2.7. routes リンクのコピーリンクがクリップボードにコピーされました!
ネットワークインターフェイス、VLAN、ブリッジ、またはボンディングに適用するルートのリストを定義します。
| オプション | デフォルト | 説明 |
|---|---|---|
| ip_netmask | None | 接続先ネットワークの IP およびネットマスク |
| default | False |
このルートをデフォルトルートに設定します。 |
| next_hop | None | 接続先ネットワークに到達するのに使用するルーターの IP アドレス |
例 - ルート
...
edpm_network_config_template: |
---
{% set mtu_list = [ctlplane_mtu] %}
{% for network in nodeset_networks %}
{{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }}
{%- endfor %}
{% set min_viable_mtu = mtu_list | max %}
network_config:
- type: ovs_bridge
name: br-tenant
...
routes: {{ [ctlplane_host_routes] | flatten | unique }}
...