Carpe Diem

  Top > スポンサー広告> ネットワーク > NICチーミング を構築する  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NICチーミング を構築する

2014 - 03/09 [Sun] - 00:18

NICチーミングとは、複数のNICを用いることで

・片方のNICが落ちた時に、もう片方で対応する(フォールトトレランス)
・帯域幅を広げる(リンクアグリゲーション)
・負荷分散をする(ロードバランシング)


などを実現する方法です。
Linuxでは、Bonding(ボンディング)ドライバを使用していることから、チーミングのことを"ボンディング"とも呼びます。
今回はVMを使って簡単に環境を実現します。

◆NICを増やす
以下の環境で構築します。
eth0・・・SSH用。すべてbondingで使用すると動作確認でSSHが途切れて不便なため
eth1・・・bonding用1
eth2・・・bonding用2
bond0・・・eth1, eth2をまとめた仮想NIC

ネットワークアダプタを選択
teaming01.png

今回はブリッジで構築します。
teaming02.png

こんな感じです。
teaming03.png


◆bondingドライバを使う
※/etc/modprobe.d/disable-ipv6.conf ファイルにinstall ipv6 /bin/trueの記述があるとbondingを使えないので注意

CentOS 5/6 の場合

$ sudo vi /etc/modprobe.d/bonding
alias bond0 bonding


CentOS 4 の場合

$ sudo vi /etc/modprobe.conf
alias bond0 bonding
options bond0 mode=1 miimon=100

bondingモードは以下のとおりです。
mode 名称 説明
0 balance-rr load balancing (round-robin)
全てのスレーブデバイス(NIC)を順番(ラウンドロビン)に使いパケットを送信。
送信のみ負荷分散。
1 active-backup fault-tolerance (active-backup)
1つの NIC のみをアクティブインターフェイスとしてパケットを送信。
送受信とも負荷分散なし。
2 balance-xor load balancing (xor)
送信元/先のMACアドレスを元に、送信スレーブデバイスを決定しパケットを送信。
送信のみ負荷分散。
3 broadcast fault-tolerance (broadcast)
全スレーブに同一パケットを送信。
通常の用途では使用しない。
4 802.3ad IEEE 802.3ad Dynamic link aggregation
IEEE 802.3ad(LACP)に準拠したリンクアグリゲーション。
接続するスイッチが IEEE 802.3ad に対応している必要がある。
5 balance-tlb transmit load balancing
各スレーブの負荷に応じて送信スレーブを分散させる。受信は現在のスレーブによって行われる。
送信のみ負荷分散。
6 balance-alb adaptive load balancing
balance-tlbの機能に加え、受信も負荷分散。


◆各ネットワークインタフェースの設定
NetworkManagerが起動してると邪魔をするので停止します。


$ sudo service NetworkManager stop
$ sudo chkconfig NetworkManager off

/etc/sysconfig/network-scripts にある、各インターフェースを設定するファイルを次のように設定します。

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes


$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2
BOOTPROTO=none
MASTER=bond0
SLAVE=yes


$ sudo vi /etc/sysconfig/network-scripts/ifcfg-bonding

DEVICE=bond0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100"

設定したらネットワークを再起動します

$ sudo service network restart


◆動作確認
ifconfigとprocを見てみます。

$ ifconfig

bond0 Link encap:Ethernet HWaddr 00:0C:29:96:21:C9
inet addr:192.168.1.100 Bcast:192.168.11.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe96:21c9/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:373 errors:0 dropped:0 overruns:0 frame:0
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:28770 (28.0 KiB) TX bytes:6406 (6.2 KiB)

eth0 Link encap:Ethernet HWaddr 00:0C:29:96:21:B5
inet addr:192.168.157.128 Bcast:192.168.157.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe96:21b5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14169 errors:0 dropped:0 overruns:0 frame:0
TX packets:8382 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18886214 (18.0 MiB) TX bytes:532463 (519.9 KiB)

eth1 Link encap:Ethernet HWaddr 00:0C:29:96:21:C9
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:197 errors:0 dropped:0 overruns:0 frame:0
TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15242 (14.8 KiB) TX bytes:5040 (4.9 KiB)

eth2 Link encap:Ethernet HWaddr 00:0C:29:96:21:C9
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:176 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13528 (13.2 KiB) TX bytes:1366 (1.3 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:26 errors:0 dropped:0 overruns:0 frame:0
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2310 (2.2 KiB) TX bytes:2310 (2.2 KiB)



$ cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 500
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:96:21:c9
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:96:21:bf
Slave queue ID: 0


実際にNICの接続を切ったり再接続したりします。
/var/log/message には bonding の動作ログが記録されるのでそれを見ます。
eth1を切断してみると

# sudo tail -fn50 /var/log/message

Mar 8 07:10:11 localhost kernel: e1000: eth1 NIC Link is Down
Mar 8 07:10:12 localhost kernel: bonding: bond0: link status definitely down for interface eth1, disabling it
Mar 8 07:10:12 localhost kernel: bonding: bond0: making interface eth2 the new active one.


また/proc/net/bonding/bond0は

$ cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth2
MII Status: up
MII Polling Interval (ms): 500
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:96:21:c9
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 00:0c:29:96:21:bf
Slave queue ID: 0


この状態で192.168.1.100にアクセスしてみると、きちんとアクセスできることが確認できます。
以上です。


ソース:
teaming
CentOS/NICの冗長化(bonding設定)
【メモ】CentOS6でIPv6を無効化するには

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。