11.2.5. ボンディングを介した VLAN の設定
このセクションでは、サーバーとイーサネットスイッチの 2 つのイーサネットリンクで構成されるボンディングで VLAN を設定する方法を説明します。スイッチには、別のサーバーへの 2 つ目のボンディングがあります。最初のサーバーの設定は、基本的に
IP
アドレスとは異なる設定と同じであるように表示されます。
警告
ネットワークスイッチを使わずにケーブルの直接接続を使用すると、ボンディングはサポートされません。本章で説明されているフェイルオーバーメカニズムは、ネットワークスイッチがないと予想どおりに機能しません。詳細についてはナレッジベースの記事『ボンディングは、クロスオーバーケーブルを使用したダイレクトコレクションをサポートしますか?』を参照してください。
注記
active-backup、balance-tlb および balance-alb の各モードはスイッチの特定の設定を必要としません。他のボンディングモードでは、スイッチがリンクを集約するように設定する必要があります。たとえば、Cisco スイッチでは Modes 0、2、および 3 に EtherChannel を必要としますが、Mode 4 には LACP と EtherChannel が必要となります。kernel-doc パッケージでスイッチおよび
bonding.txt
ファイルで提供されるドキュメントを参照してください( 「その他のリソース」を参照)。
サーバーで利用可能なインターフェースを確認します。
~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 52:54:00:19:28:fe brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 52:54:00:f6:63:9a brd ff:ff:ff:ff:ff:ff
手順11.1 サーバーでのインターフェースの設定
eth0
を使用してスレーブインターフェースを設定します。~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 NAME=bond0-slave0 DEVICE=eth0 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes NM_CONTROLLED=no
NAME ディレクティブの使用は任意です。これは、nm-connection-editor、nm-applet などの GUI インターフェースにより表示されます。eth1
を使用してスレーブインターフェースを設定します。~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1 NAME=bond0-slave1 DEVICE=eth1 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes NM_CONTROLLED=no
NAME ディレクティブの使用は任意です。これは、nm-connection-editor、nm-applet などの GUI インターフェースにより表示されます。- チャンネルボンディングインターフェース
ifcfg-bond0
を設定します。~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0 NAME=bond0 DEVICE=bond0 BONDING_MASTER=yes TYPE=Bond IPADDR=192.168.100.100 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=none BONDING_OPTS="mode=active-backup miimon=100" NM_CONTROLLED=no
NAME ディレクティブの使用は任意です。これは、nm-connection-editor、nm-applet などの GUI インターフェースにより表示されます。この例では、リンク監視の詳細は、「ボンディングモジュールのディレクティブ」 セクションを参照してください。 - サーバー上のインターフェースのステータスを確認します。
~]$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:19:28:fe brd ff:ff:ff:ff:ff:ff inet6 fe80::5054:ff:fe19:28fe/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:f6:63:9a brd ff:ff:ff:ff:ff:ff inet6 fe80::5054:ff:fef6:639a/64 scope link valid_lft forever preferred_lft forever
手順11.2 インターフェースとの競合の解決
スレーブとして設定されたインターフェースは、
IPv6
のリンクローカルアドレス( fe80
の起動)とは別に IP
アドレスを割り当てないでください。予期しない IP
アドレスがある場合は、ONBOOT が yes
に設定されている別の設定ファイルが存在する可能性があります。
- この場合は、以下のコマンドを実行して、競合の原因となる可能性のあるすべての
ifcfg
ファイルを一覧表示します。~]$ grep -r "ONBOOT=yes" /etc/sysconfig/network-scripts/ | cut -f1 -d":" | xargs grep -E "IPADDR|SLAVE" /etc/sysconfig/network-scripts/ifcfg-lo:IPADDR=127.0.0.1
上記は、新規インストールで想定される結果を示します。ONBOOT ディレクティブと IPADDR または SLAVE ディレクティブの両方を含むファイルが表示されます。たとえば、ifcfg-eth1
ファイルが正しく設定されていない場合、表示は以下のようになります。~]# grep -r "ONBOOT=yes" /etc/sysconfig/network-scripts/ | cut -f1 -d":" | xargs grep -E "IPADDR|SLAVE" /etc/sysconfig/network-scripts/ifcfg-lo:IPADDR=127.0.0.1 /etc/sysconfig/network-scripts/ifcfg-eth1:SLAVE=yes /etc/sysconfig/network-scripts/ifcfg-eth1:IPADDR=192.168.55.55
- 見つかったその他の設定ファイルはバックアップのために別のディレクトリーに移動するか、HWADDR ディレクティブを使用して別のインターフェースに割り当てる必要があります。競合を解決すると、インターフェースが 「ダウン」 して再度 「起動」 するか、
root
としてネットワークサービスを再起動します。~]# service network restart Shutting down interface bond0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface bond0: Determining if ip address 192.168.100.100 is already in use for device bond0... [ OK ]
NetworkManager を使用している場合は、この時点で再起動して不要なIP
アドレスを忘れることがあります。root
で、以下を実行します。~]# service NetworkManager restart
手順11.3 サーバーのボンディングの確認
root
としてサーバー上でボンディングを起動します。~]# ifup /etc/sysconfig/network-scripts/ifcfg-bond0 Determining if ip address 192.168.100.100 is already in use for device bond0...
- サーバー上のインターフェースのステータスを確認します。
~]$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master bond0 state UP
qlen 1000 link/ether 52:54:00:19:28:fe brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fastmaster bond0 state UP
qlen 1000 link/ether 52:54:00:f6:63:9a brd ff:ff:ff:ff:ff:ff 4: bond0: <BROADCAST,MULTICAST,MASTER,UP
,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 52:54:00:19:28:fe brd ff:ff:ff:ff:ff:ff inet 192.168.100.100/24 brd 192.168.100.255 scope global bond0 inet6 fe80::5054:ff:fe19:28fe/64 scope link valid_lft forever preferred_lft forevereth0
とeth1
はmaster bond0 state UP
で、bond0
のステータスはMASTER,UP
であることに注意してください。 - ボンディング設定の詳細を表示します。
~]$ cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: transmit load balancing Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 52:54:00:19:28:fe Slave queue ID: 0 Slave Interface: eth1 MII Status: up Speed: 100 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 52:54:00:f6:63:9a Slave queue ID: 0
- サーバーのルートを確認します。
~]$ ip route 192.168.100.0/24 dev bond0 proto kernel scope link src 192.168.100.100 169.254.0.0/16 dev bond0 scope link metric 1004
手順11.4 サーバー上での VLAN の設定
重要
本ガイドの書き込み時に、ボンディングにはスレーブがあり、VLAN インターフェースを起動する前にそれらを稼働させることが重要です。「」書き込んだ時点では、スレーブなしで VLAN インターフェースをボンディングに追加することはできません。Red Hat Enterprise Linux 6nbsp;Hat Enterprise Linux 6nbsp;LinuxRed Hat Enterprise Linux 6nbsp;6 では、ONPARENT ディレクティブを
yes
に設定することは、ボンディングが起動する前に VLAN インターフェースが起動しないようにすることが重要です。これは、VLAN 仮想デバイスは親の MAC アドレスを取得し、NIC がスレーブになると、ボンディングはその MAC アドレスをその NIC の MAC アドレスに変更します。
注記
VLAN 仮想デバイスは、親の新規 MAC アドレスに一致するように MAC アドレスを変更できないため、
fail_over_mac=follow
オプションが指定されたボンディングで VLAN スレーブを設定することはできません。この場合、トラフィックは間違ったソースの MAC アドレスで送信されます。
一部の古いネットワークインターフェースカード、ループバックインターフェース、Wimax カード、および一部の Infiniband デバイスは VLAN チャレンジです。つまり、 VLAN に対応できません。通常、デバイスは VLAN ヘッダーと VLAN に関連付けられた MTU サイズが大きい場合に対応できないためです。
- VLAN インターフェースファイル
bond0.192
を作成します。~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0.192 DEVICE=bond0.192 NAME=bond0.192 BOOTPROTO=none ONPARENT=yes IPADDR=192.168.10.1 NETMASK=255.255.255.0 VLAN=yes NM_CONTROLLED=no
root
として VLAN インターフェースを起動します。~]# ifup /etc/sysconfig/network-scripts/ifcfg-bond0.192 Determining if ip address 192.168.10.1 is already in use for device bond0.192...
- ネットワークスイッチでの VLAN タグ付けの有効化スイッチのドキュメントを参照して、必要な設定を確認してください。
- サーバー上のインターフェースのステータスを確認します。
~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 52:54:00:19:28:fe brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 52:54:00:f6:63:9a brd ff:ff:ff:ff:ff:ff 4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 52:54:00:19:28:fe brd ff:ff:ff:ff:ff:ff inet 192.168.100.100/24 brd 192.168.100.255 scope global bond0 inet6 fe80::5054:ff:fe19:28fe/64 scope link valid_lft forever preferred_lft forever 5:
インターフェースの一覧にbond0.192@bond0
: <BROADCAST,MULTICAST,MASTER,UP
,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 52:54:00:19:28:fe brd ff:ff:ff:ff:ff:ff inet 192.168.10.1/24 brd 192.168.10.255 scope global bond0.192 inet6 fe80::5054:ff:fe19:28fe/64 scope link valid_lft forever preferred_lft foreverbond0.192@bond0
があり、ステータスがMASTER,UP
になっていることに注意してください。 - サーバーのルートを確認します。
~]$ ip route 192.168.100.0/24 dev bond0 proto kernel scope link src 192.168.100.100 192.168.10.0/24 dev
これで VLAN インターフェースbond0.192
proto kernel scope link src 192.168.10.1 169.254.0.0/16 dev bond0 scope link metric 1004 169.254.0.0/16 dev bond0.192 scope link metric 1005bond0.192
を参照する192.168.10.0/24
ネットワークのルートがある点に注意してください。
2 番目のサーバーの設定
同じサブネットとは異なる
IP
アドレスを使用して、2 番目のサーバーの設定手順を繰り返します。
ボンディングが起動し、ネットワークスイッチが想定どおりに機能しているかどうかをテストします。
~]$ ping -c4 192.168.100.100
PING 192.168.100.100 (192.168.100.100) 56(84) bytes of data.
64 bytes from 192.168.100.100: icmp_seq=1 ttl=64 time=1.35 ms
64 bytes from 192.168.100.100: icmp_seq=2 ttl=64 time=0.214 ms
64 bytes from 192.168.100.100: icmp_seq=3 ttl=64 time=0.383 ms
64 bytes from 192.168.100.100: icmp_seq=4 ttl=64 time=0.396 ms
--- 192.168.100.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.214/0.586/1.353/0.448 ms
VLAN のテスト
ネットワークスイッチが VLAN 用に設定されていることをテストするには、最初のサーバーの VLAN インターフェースに ping を試行します。
~]# ping -c2 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.781 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.977 ms
--- 192.168.10.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss
, time 1001ms
rtt min/avg/max/mdev = 0.781/0.879/0.977/0.098 ms
パケットロスは、すべてが正しく設定され、VLAN および基盤のインターフェースが 「up」 になっていることが示唆されません。
オプションのステップ
- 必要に応じて、ネットワークケーブルを 1 度に 1 つずつ削除および置き換えて、追加のテストを実行し、フェイルオーバーが想定どおりに機能することを確認します。ethtool ユーティリティーを使用して、どのインターフェースがどのケーブルに接続されているかを確認します。例:
ethtool
integer は、ネットワークインターフェースで LED をフラッシュする回数に置き換えます。--identify
ifname integer - ボンディングモジュールは
STP
に対応していないため、ネットワークスイッチからの BPDU パケット送信を無効にすることを検討してください。 - 設定した接続以外のシステムがネットワークにリンクされていない場合は、スイッチポートを直接送受信できるようにすることを検討してください。たとえば、Cisco スイッチでは、
portfast
コマンドを使用して行います。