- 追加された行はこの色です。
- 削除された行はこの色です。
Linuxではボンディング(bonding)を使うことでNICの冗長化・負荷分散することが可能である。これによりケーブルが断線したり、間違えて抜いてしまうなどの人為的ミスが発生しても通信断を防ぐことができる。~
目次~
#contents
**概要 [#c1c3ee4b]
Linuxにて複数のNICを束ね冗長化・負荷分散を行う手順。
**環境情報 [#beeec6ea]
|OS|CentOS 5.3|
|NIC|Intel PRO/1000 MT QuadPort ServerAdapter|
~
ボンディングはNICを複数束ねて使うことで1個のチャンネルにすることができます。これはベンダーの異なるNICでも設定が可能である。(bondingは機能の名称で、束ねることはteamingと言う)~
**作業方針 [#a9532b53]
4ポートNICを使用し、1つの論理NICを構成する。~
設定の手順は以下となる。~
~
ボンディングしたNICを異なるスイッチ(更に、その上に異なるルーターとか)に接続することで経路の冗長化を行うことも可能。
-1) bondingドライバの組み込み~
-2) bondingポートの設定~
-3) NICとbondingポートの紐付け~
**設定 [#l61f26cd]
/etc/sysconfig/network-scripts/ifcfg-bond0 を作成
~
**作業手順 [#pa8b5418]
-1) bondingドライバの組み込み~
''/etc/modprobe.conf''に以下を追記~
設定値は後述の「bondingドライバのパラメータ」を参照~
~
【書式】~
alias bond0 bonding
options bond[n] mode=[MODE] miimon=[VALUE]
~
【例】~
alias bond0 bonding
options bond0 mode=balance-alb miimon=100
alias bond1 bonding
options bond1 mode=balance-alb miimon=100
~
~
-2) bondingポートの設定~
''/etc/sysconfig/network-scripts''配下にbondingポートの設定を作成~
~
【書式:ifcfg-bond[n]】~
DEVICE=bond[n]
BOOTPROTO=static
ONBOOT=yes
IPADDR=[IP ADDRESS]
NETMASK=[NETMASK]
NETWORK=[NETWORK ADDRESS]
BROADCAST=[BROADCAST ADDRESS]
GATEWAY=[DEFAULT GATEWAY]
~
【例:ifcfg-bond0】~
# Linux Ethernet Bonding Driver
#
DEVICE=bond0
BOOTPROTO=none
BOOTPROTO=static
ONBOOT=yes
NETWORK=192.168.1.0
IPADDR=192.168.100.200
NETMASK=255.255.255.0
IPADDR=192.168.1.11
ifcfg-eth0 と ifcfg-eth1 を編集
DEVICE=eth0
NETWORK=192.168.100.0
BROADCAST=192.168.1.255
GATEWAY=192.168.100.254
~
~
~
-3) NICとbondingポートの紐付け~
''/etc/sysconfig/network-scripts''配下にbondingポートと紐付ける物理NICの設定を作成~
~
【書式:ifcfg-eth[n]】~
DEVICE=eth[n]
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
MASTER=bond[n]
SLAVE=yes
DEVICE=eth1
~
【例:ifcfg-eth0】~
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
MASTER=bond1
SLAVE=yes
~
~
-4) bondingの有効化~
上記の設定の後、ネットワークを再起動する~
~
/etc/init.d/network restart
~
ネットワークケーブルの抜き差しをするなどでbondingの動作を確認する。~
~
~
【ifconfig例】~
# ifconfig
bond0 Link encap:Ethernet HWaddr 00:04:23:C6:B4:A4
inet addr:192.168.100.200 Bcast:192.168.1.255
Mask:255.255.255.0
inet6 addr: fe80::204:23ff:fec6:b4a4/64
Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST
MTU:1500 Metric:1
RX packets:41139981 errors:0 dropped:0
overruns:0 frame:0
TX packets:73872532 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:232665976 (221.8 MiB)
TX bytes:3337216009 (3.1 GiB)
eth0 Link encap:Ethernet HWaddr 00:04:23:D6:CA:3C
UP BROADCAST RUNNING SLAVE MULTICAST
MTU:1500 Metric:1
RX packets:67 errors:0 dropped:0
overruns:0 frame:0
TX packets:103200 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4266 (4.1 KiB)
TX bytes:6235233 (5.9 MiB)
Base address:0x9c00 Memory:fdde0000-fde00000
eth1 Link encap:Ethernet HWaddr 00:04:23:D6:CA:3D
UP BROADCAST RUNNING SLAVE MULTICAST
MTU:1500 Metric:1
RX packets:711 errors:0 dropped:0
overruns:0 frame:0
TX packets:102530 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:86431 (84.4 KiB)
TX bytes:6151106 (5.8 MiB)
Base address:0x9800 Memory:fddc0000-fdde0000
~
~
**bondingドライバのパラメータ [#j21828ce]
/etc/modules.conf を作成(or 編集)
bondingモジュールにて使用できるパラメータの一覧は次の通りです。 ~
alias bond0 bonding
options bond0 mode=0 miimon=200
bondingモジュールにて使用できるパラメータの一覧は次の通りです。 ~
(参考:http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-modules-ethernet.html)~
~
mode= — bondingモジュールに許可された 4つのポリシーの中から1つを指定します。このパラメータに有効な値は次の通りです。~
mode=~
bondingモジュールに許可された 4つのポリシーの中から1つを指定します。このパラメータに有効な値は次の通りです。~
-0 —~
-0: balance-rr~
耐障害性と負荷バランシングに対するラウンド ロビン ポリシーを設定します。ボンディングされたスレーブインターフェイスは使用できるものから順に、送受信を順次行ないます。~
-1 —~
-1: active-backup~
耐障害性に対するアクティブ バックアップ ポリシーを設定します。最初に使用できるボンディングされたスレーブインターフェイスによって送受信が行なわれます。ボンディングされた他のスレーブインターフェイスはアクティブなスレーブインターフェイスが失敗した場合のみ使用されます。~
-2 —~
-2: balance-xor~
耐障害性と負荷バランシングに対する XOR (exclusive-or)ポリシーを設定します。この方法では、インターフェイスによって1スレーブ NIC の MACアドレスと受信要求の MACアドレスが適合されます。このリンクが確立されると、最初に使用できるインターフェイスから送信を順次行ないます。~
-3 —~
-3: broadcast~
対障害性用のブロードキャストポリシーを設定します。全ての送信は、全てのスレーブインターフェイスで送られます。~
-4 —~
-4: 802.3ad~
IEEE 802.3ad ダイナミックリンク集合ポリシーを設定します。同じスピードとデュープレックス設定を共有する集合グループを作成します。アクティブな集合体内の全てのスレーブ上で送信と受信をします。そして802.3ad 対応のスイッチを必要とします。~
-5 —~
-5: balance-tlb~
対障害性とロードバランシング用の送信ロードバランシング (TLB)ポリシーを設定します。外部への送信は、各スレーブインターフェイス上の現在のロードに従って配信されます。受信は現在のスレーブにより受け付けられます。もし受信するスレーブに障害があるともう一つのスレーブが問題のスレーブの MAC アドレスを引き取ります。~
-6 —~
-6: balance-alb~
対障害性とロードバランシング用のアクティブロードバランシング (ALB)を設定します。IPV4 通信用の送信および受信ロードバランシングを含んでいます。受信のロードバランシングは ARP ネゴシエーションによって達成されます。~
-miimon= —~
-miimon=~
MIIリンク監視の実行頻度を指定します。(ミリ秒単位) NICがアクティブかを確認するのにMIIが使用されるため、高い可用性が必要になる場合便利です。~
~
【参考】~
[[Red Hat Enterprise Linux 4: リファレンスガイド:http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-modules-ethernet.html]]
~
最後に上記の変更を反映するために、ネットワークを再起動します。
# service network restart
試しにケーブルを片一方抜いても動いていれば動作しています。
**参考URL [#k69266bb]
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-networkscripts-interfaces.html#S2-NETWORKSCRIPTS-INTERFACES-CHAN~
http://d.hatena.ne.jp/sen-u/20061002/p1~