CentOSとCisco Catalystでチーミングによるリンク冗長化(Static LAG)

CentOSとCisco Catalystでチーミング(Static LAG)によるリンク冗長化設定を検証してみました。
チーミングを構成することで、リンク障害時の可用性を向上させることができます。

なお、今回構成するStatic LAG(Link Aggregation Group)方式は、各ノードが独自にリンク経路を分散させるのが特徴のシンプルな方式です。経路断の検知はリンクダウンでしか行えないので、リンクの途中経路にメディアコンバータなど別機器が存在する場合は、別途LACP方式を検討すべきでしょう。

前提条件

前提条件は以下の通りです。

  • LAG方式は、Staticを使用する
  • CentOSの作業はroot権限を持つユーザで行う
  • Cisco Catalystの作業は特権ユーザで行う
  • ソフトウェアバージョン
    • サーバ: CentOS 8.0
    • スイッチ: IOS 12.2(55)SE12

システムの構成図は以下のとおりです。

CentOS側の設定

パッケージのインストール

チーミングに関するパッケージをインストールしていない場合、以下のコマンドでインストールします。

# yum -y install teamd NetworkManager-team

既存コネクションの削除

OSインストール時に接続されているNICによっては、デフォルトでNetworkManagerのコネクションが作成されている場合があります。その場合、一旦既存のコネクションを削除します。
以下は、enp0s3enp0s8のインターフェースを削除する場合のコマンド例です。
まずは、既存コネクションを確認します。

$ nmcli con
NAME               UUID                                  TYPE      DEVICE      
enp0s3             ac136f2a-71be-43c8-932a-bfa625f1c83c  ethernet  enp0s3
enp0s8             855824b2-0223-4102-25aa-2352ec7420ee  ethernet  enp0s3

既存コネクションをそれぞれ削除します。

# nmcli con del enp0s3
# nmcli con del enp0s8

チーミングインターフェース用コネクションの作成

以下のコマンドを実行し、チーミングインターフェースteam0のコネクションを作成します。
コネクション名は、con-nameの箇所で指定します。
負荷分散方式は、team.runnerの箇所で指定します。今回はStatic LAGを構成するのでloadbalanceを指定します。

### チーミングインターフェースの作成
# nmcli con add type team con-name team0 ifname team0 team.runner loadbalance
# nmcli con mod team0 team.link-watchers "name=ethtool"

# IPアドレスの設定
# nmcli con mod team0 ipv4.method manual ipv4.address "192.168.100.100/24"

### デフォルトゲートウェイの設定
# nmcli con mod team0 ipv4.gateway "192.168.100.254"

### DNSの設定
# nmcli con mod team0 +ipv4.dns "8.8.8.8"
# nmcli con mod team0 +ipv4.dns "8.8.4.4"

### IPv6の無効化
# nmcli con mod team0 ipv6.method ignore
# nmcli con mod team0 ipv4.may-fail no

物理インターフェースの割り当て

作成したチーミングインターフェースteam0に、物理インターフェースを割り当てます。

# nmcli con add type ethernet slave-type team con-name team0-enp0s3 ifname enp0s3 master team0
# nmcli con add type ethernet slave-type team con-name team0-enp0s8 ifname enp0s8 master team0

設定有効化

作成したチーミングインターフェースteam0の設定を有効化します。

# nmcli con up team0

team0に割り当てた物理インターフェースとteam0について、state欄がUP状態となっていることを確認します。

# ip a
(略)
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master team0 state UP group default qlen 1000
    link/ether 18:66:da:38:xx:xx brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master team0 state UP group default qlen 1000
    link/ether 18:66:da:38:xx:xx brd ff:ff:ff:ff:ff:ff
4: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 18:66:da:38:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.100/24 brd 192.168.100.255 scope global noprefixroute team0
       valid_lft forever preferred_lft forever
    inet6 fe80::3695:dbff:xxxx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever

Catalyst側の設定

Config投入

特権モードから以下のコマンドを実行し、Gi0/19Gi0/20でLAGを組みます。
2行目では、経路分散方式を、デフォルトのsrc-mac(送信元MACアドレス)からsrc-dst-ip(送信元/宛先IPアドレス)に変更しています。
3行目から6行目では、Port-channel 1インターフェースをポートVLAN(VLAN100)のswitchインターフェースとして定義します。
7行目から11行目では、GigabitEthernet0/19インターフェースとGigabitEthernet0/20インターフェースに対して、Port-channel 1に所属させる設定と、ポートをリンクアップ状態にする設定をまとめて指定しています。

# configure terminal
(config)# port-channel load-balance src-dst-ip 
(config)# interface Port-channel 1
(config-if)# switchport mode access
(config-if)# switchport access vlan 100
(config-if)# exit
(config)# interface range GigabitEthernet0/19, GigabitEthernet0/20 
(config-if-range)# description ### Port-channel1 ###
(config-if-range)# channel-group 1 mode on
(config-if-range)# no shutdown
(config-if-range)# end
# write memory
Building configuration...
[OK]

設定結果の確認

以下のコマンドの実行し、LAGの状態を確認します。LAGインターフェースのPo1SUと表示されていれば、該当インターフェースは通信できる状態になっています。また、Po1に割り当てた物理インターフェースGi0/19Gi0/20Pは、それぞれLAGインターフェースに割り当てられている状態であることを示します。

#show etherchannel summary 
Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      f - failed to allocate aggregator

        M - not in use, minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port


Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)          -        Gi0/19(P)   Gi0/20(P)   

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です