第13章 ネットワークインターフェイスボンディング
本章では、カスタムネットワーク設定で使用することのできるボンディングのオプションを定義します。
13.1. ネットワークインターフェイスボンディングおよび Link Aggregation Control Protocol (LACP)
複数の物理 NIC をバンドルして、単一の論理チャネルを形成することができます。この設定はボンディングとも呼ばれます。ボンディングを設定して、高可用性システム用の冗長性またはスループットの向上を実現することができます。
ボンディングされたインターフェイスでの Single Root I/O Virtualization (SR-IOV) の使用はサポートされません。
Red Hat OpenStack Platform では、Linux ボンディング、Open vSwitch (OVS) カーネルボンディング、および OVS-DPDK ボンディングがサポートされます。
ボンディングは、オプションの Link Aggregation Control Protocol (LACP) と共に使用することができます。LACP は動的ボンディングを作成するネゴシエーションプロトコルで、これにより負荷分散機能および耐障害性を持たせることができます。
Red Hat では、OvS カーネルボンディング (ボンディング種別: ovs_bond) ではなく Linux カーネルボンディング (ボンディング種別: linux_bond) の使用を推奨します。ユーザーモードボンディング (ボンディング種別: ovs_dpdk_bond) は、カーネルモードブリッジ (種別: ovs_bridge) ではなくユーザーモードブリッジ (種別: ovs_user_bridge) と共に使用する必要があります。ただし、ovs_bridge と ovs_user_bridge を同じノード上で組み合わせないでください。
コントロールネットワークおよびストレージネットワークの場合は、Red Hat では VLAN を使用する Linux ボンディングと LACP の組み合わせを推奨します。OVS ボンディングを使用すると、更新、ホットフィックス等の理由により OVS または neutron エージェントが再起動すると、コントロールプレーンの中断が生じる可能性があるためです。Linux ボンディング/LACP/VLAN の設定であれば、OVS の中断を懸念することなく NIC を管理できます。
1 つの VLAN を使用する Linux ボンディングの設定例を以下に示します。
params: $network_config: 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 ボンディングの例を以下に示します。
params: $network_config: 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}
OVS ユーザースペースブリッジの例を以下に示します。
params: $network_config: network_config: - type: ovs_user_bridge name: br-ex use_dhcp: false members: - type: ovs_dpdk_bond name: dpdkbond0 mtu: 2140 ovs_options: {get_param: BondInterfaceOvsOptions} #ovs_extra: #- set interface dpdk0 mtu_request=$MTU #- set interface dpdk1 mtu_request=$MTU rx_queue: get_param: NumDpdkInterfaceRxQueues members: - type: ovs_dpdk_port name: dpdk0 mtu: 2140 members: - type: interface name: p1p1 - type: ovs_dpdk_port name: dpdk1 mtu: 2140 members: - type: interface name: p1p2