LoginSignup
19

More than 5 years have passed since last update.

RHEL7 Bondingによる冗長化

Last updated at Posted at 2017-11-30

RHEL7 Bondingによる冗長化

Bondingとは

1台のマシンに複数のネットワーク・インタフェース・カード(NIC)を搭載し,それらのNICを束ね一つの仮想的なNICとして扱うための技術です。

このボンディングを実現する機能は,Linuxカーネルの標準ドライバ(ボンディング・ドライバ)として実装されています。そのため,NICを複数枚搭載したLinuxマシンを用意して,カーネルにボンディング・ドライバを組み込み,簡単な設定を施すだけでボンディングが利用できます。

Bonding Mode

・balance-rr

全スレーブを順繰り(ラウンドロビン)に使ってパケットを送信。
送信のみ負荷分散。

・active-backup

1つのスレーブのみを active interfaceとしパケットを送信。
active interfaceに障害が発生した場合、他の backup slave を active interfaceに切り替え、冗長性を確保。

・balance-xor

送信元/先 MACアドレスを元に送信スレーブを決定しパケットを送信。
送信のみ負荷分散。

・802.3ad

IEEE 802.3ad(LACP)に準拠したリンクアグリゲーション。

・balance-tlb

スレーブの負荷に応じて送信スレーブを決定しパケットを送信。
送信のみ負荷分散

・balance-alb

balance-tlbの機能に加え、受信も負荷分散。

・balance-alb

balance-tlbの機能に加え、受信も負荷分散。

注意しなければならないのがactive-backup以外は、接続するスイッチに依存すること。(active-backupでも対向のスイッチはトランクが設定されているなど)

それとリンクアグリゲーションであっても1Gbps x 2本だからといって、通信帯域は2Gbpsにはならないことだ。(私の経験上、2本にしたところ1.1倍~1.3倍程度しか帯域は増えない)

Bonding 設定

・bondingモジュール有効化

# modprobe --first-time bonding
# lsmod | grep bonding

・bonding デバイス追加

# nmcli connection add type bond  autoconnect no con-name  <bond con-name> ifname <bond I/F name> mode <bonding mode>

Connection '<bond con-name>' (<uuid>) successfully added. 

・slave 追加

# nmcli connection add type bond-slave autoconnect no ifname <slave con-name>  master <bond con-name>

 ( Connection 'bond-slave-<slave con-name>' (<uuid>) successfully added. 

・BondingインターフェースにIPアドレス設定

# nmcli connection modify <bond con-name> ipv4.method manual ipv4.address <ip address/suffix> ipv4.gateway <gateway address> ipv6.method ignore

# nmcli  connection modify <bond con-name> ipv4.dns <dns address>

・設定確認

# nmcli -f ipv4 connection show <bond con-name>

・自動接続設定(物理I/F)

# nmcli connection modify <slave con-name①> connection.autoconnect no
# nmcli connection modify <slave con-name②> connection.autoconnect no

・自動接続設定(slave,bond I/F)

# nmcli connection modify bond-slave-<slave con-name①> connection.autoconnect yes

# nmcli connection modify bond-slave-<slave con-name②> connection.autoconnect yes
 
# nmcli connection modify <bond con-name> connection.autoconnect yes

# nmcli connection modify <bond con-name> connection.autoconnect-slaves 1

・設定反映

# nmcli connection reload
# systemctl restart network.service 

・active-backup mode時のprimary slave設定

※ただし、ここは従来通り、デバイス名の指定が必要

# nmcli connection modify <bond con-name> +bond.options primary=<slave I/F name①>

・設定確認

cat /proc/net/bonding/<bond con-name>

・slave を切り替えテスト

# ifenslave -c <bond con-name> <slave con-name①> 

# grep 'Active Slave:' /proc/net/bonding/<bond con-name>
Currently Active Slave:  <slave con-name①>

 # ifenslave -c <bond con-name>  <slave con-name②> 
$ grep 'Active Slave:' /proc/net/bonding/<bond con-name> 
Currently Active Slave:  <slave con-name②> 

・bonding 解除(slave)

# nmcli connection del bond-slave-<slave con-name>  

・bonding 解除(bond)

# nmcli connection del <bond con-name>

スループット

スループットが視覚的にしかも直感的に理解できるiptraf-ngというツールがあります。
iptraf-ngは、OSが認識しているネットワークインタフェース全てについて、トラフィックの有無、パケットの通信の様子を確認することができる。
スループットを見るツールは、まだまだ色々あるようなので後述とします。

参考

RedHatサイトにBondingとTeaming比較表があるので、どちらを選定するか参考にするといい。

5.3. ネットワークチーミングとボンディングの比較

詳細はRHEL7のマニュアル「ネットワークガイド第4章 ネットワークボンディングの設定」をご覧ください。

「ネットワークガイド第4章 ネットワークボンディングの設定」

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19