Red Hat Training

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

4.5. Ceph ノードごとに複数のボンディングされたインターフェイスを設定する方法

ボンディングされたインターフェイス を使用して複数の NIC を組み合わせ、ネットワーク接続に冗長性を持たせることができます。Ceph ノードに十分な NIC がある場合には、ノードごとに 複数のボンディングされたインターフェイス を作成すると、これをさらに一歩進めることができます。

これにより、ノードが必要とするそれぞれのネットワーク接続にボンディングされたインターフェイスを使用できます。これにより、冗長性と各ネットワーク専用の接続の両方が提供されます。

この設定を最も簡単に実装するには、2 つのボンディングを使用して、Ceph ノードが使用する各ストレージネットワークに 1 つずつボンディングを設定します。Ceph ノードが使用するストレージネットワークは以下のとおりです。

フロントエンドストレージネットワーク (StorageNet)
Ceph クライアントは、このネットワークを使用して Ceph クラスターと対話します。
バックエンドストレージネットワーク (StorageMgmtNet)
Ceph クラスターは、このネットワークを使用して、クラスターの placement group ポリシーに従ってデータのバランスを取ります。詳細は、Red Hat Ceph Storage Architecture GuidePlacement Groups (PGs) を参照してください。

director は複数のボンディングされた NIC をデプロイするためのテンプレートのサンプルは提供していないので、この設定を行うには、ネットワークインターフェイスのテンプレートをカスタマイズする必要があります。ただし、director は単一のボンディングされたインターフェイスをデプロイするテンプレート (/usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml) を提供します。このテンプレートで追加の NIC 用のボンディングされたインターフェイスを定義して追加することができます。

注記

カスタムインターフェイステンプレートの作成に関する詳細は、オーバークラウドの高度なカスタマイズカスタムネットワークインターフェイステンプレート を参照してください。

以下のスニペットには、/usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml で定義されている単一のボンディングされたインターフェイス用のデフォルトの定義が記載されています。

  type: ovs_bridge // 1
  name: br-bond
  members:
    -
      type: ovs_bond // 2
      name: bond1 // 3
      ovs_options: {get_param: BondInterfaceOvsOptions} 4
      members: // 5
        -
          type: interface
          name: nic2
          primary: true
        -
          type: interface
          name: nic3
    -
      type: vlan // 6
      device: bond1 // 7
      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}
1
br-bond という名前の単一のブリッジは、このテンプレートで定義されているボンディングをメンバーとします。この行は、ブリッジの種別 (OVS) を定義しています。
2
br-bond ブリッジの最初のメンバーは、ボンディングされたインターフェイス自体で、bond1 という名前が付いています。この行は、bond1 のボンディングの種別を定義しており、これも OVS に指定されています。
3
デフォルトのボンディングは、この行で定義されているように bond1 という名前です。
4
ovs_options のエントリーは、director が特定の ボンディングモジュールディレクティブ のセットを使用するように指示します。これらのディレクティブは、BondInterfaceOvsOptions に渡されます。これも同じファイルで設定できます。設定方法についての説明は、「ボンディングモジュールのディレクティブの設定」を参照してください。
5
ボンディングの members セクションは、bond1 でボンディングされるネットワークインターフェイスを定義します。この場合は、ボンディングされるインターフェイスは nic2 (プライマリーインターフェイスとして設定) と nic3 を使用します。
6
br-bond ブリッジには、他にも 2 つのメンバーが含まれています。これは、フロントエンドストレージネットワーク (StorageNetwork) とバックエンドストレージネットワーク (StorageMgmtNetwork) の両方の VLAN です。
7
device パラメーターは、VLAN が使用する必要のあるデバイスを定義します。この場合は、両方の VLAN がボンディングされたインターフェイス bond1 を使用します。

NIC を少なくとも 2 つ追加すると、ブリッジとボンディングされたインターフェイスをもう 1 つ定義できます。これで、VLAN の 1 つを新しいボンディングされたインターフェイスに移動できるようになります。これにより、スループットが高くなり、両ストレージネットワーク接続の信頼性が向上します。

/usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml をこの目的でカスタマイズする場合には、デフォルトの OVS (type: ovs_bond) の代わりに Linux ボンディング (type: linux_bond) を使用することも推奨します。このボンディングの種別は、エンタープライズレベルの実稼働デプロイメントにより適しています。

以下の編集済みスニペットは、bond2 という名前の新しい Linux ボンディングをメンバーとする追加の OVS ブリッジ (br-bond2) を定義します。bond2 インターフェイスは、2 つの追加の NIC (nic4nic5) を使用し、バックエンドストレージネットワークトラフィック専用に使用されます。

  type: ovs_bridge
  name: br-bond
  members:
    -
      type: linux_bond
      name: bond1
      **bonding_options**: {get_param: BondInterfaceOvsOptions} // 1
      members:
        -
          type: interface
          name: nic2
          primary: true
        -
          type: interface
          name: nic3
    -
      type: vlan
      device: bond1
      vlan_id: {get_param: StorageNetworkVlanID}
      addresses:
        -
          ip_netmask: {get_param: StorageIpSubnet}
-
  type: ovs_bridge
  name: br-bond2
  members:
    -
      type: linux_bond
      name: bond2
      **bonding_options**: {get_param: BondInterfaceOvsOptions}
      members:
        -
          type: interface
          name: nic4
          primary: true
        -
          type: interface
          name: nic5
    -
      type: vlan
      device: bond1
      vlan_id: {get_param: StorageMgmtNetworkVlanID}
      addresses:
        -
          ip_netmask: {get_param: StorageMgmtIpSubnet}
1
bond1 および bond2 は両方とも (OVS ではなく) Linux ボンディングであるため、ovs_options の代わりに bonding_options を使用してボンディングディレクティブを設定します。関連情報については、「ボンディングモジュールのディレクティブの設定」を参照してください。

このカスタマイズされたテンプレートの完全な内容は、付録B カスタムインターフェイステンプレートの例: 複数のボンディングされたインターフェイスを参照してください。

4.5.1. ボンディングモジュールのディレクティブの設定

ボンディングされたインターフェイスを追加および設定したら、BondInterfaceOvsOptions パラメーターを使用して各インターフェイスが使用するディレクティブを設定します。このパラメーターは、/usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yamlparameters: セクションにあります。以下のスニペットには、このパラメーターのデフォルトの定義 (空欄) を示しています。

BondInterfaceOvsOptions:
    default: ''
    description: The ovs_options string for the bond interface. Set
                 things like lacp=active and/or bond_mode=balance-slb
                 using this option.
    type: string

default: の行に必要なオプションを定義します。たとえば、802.3ad (モード 4) と LACP レート 1 (fast) を使用するには、'mode=4 lacp_rate=1' を以下のように設定します。

BondInterfaceOvsOptions:
    default: 'mode=4 lacp_rate=1'
    description: The bonding_options string for the bond interface. Set
                 things like lacp=active and/or bond_mode=balance-slb
                 using this option.
    type: string

サポートされるその他のボンディングオプションに関する詳細は、オーバークラウドの高度なカスタマイズOpen vSwitch ボンディングのオプション を参照してください。カスタマイズした /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml テンプレートの完全な内容は、付録B カスタムインターフェイステンプレートの例: 複数のボンディングされたインターフェイスを参照してください。