Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 サーバーでのインターフェースの設定

  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-editornm-applet などの GUI インターフェースにより表示されます。
  2. 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-editornm-applet などの GUI インターフェースにより表示されます。
  3. チャンネルボンディングインターフェース 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-editornm-applet などの GUI インターフェースにより表示されます。この例では、リンク監視の詳細は、「ボンディングモジュールのディレクティブ」 セクションを参照してください。
  4. サーバー上のインターフェースのステータスを確認します。
    ~]$ 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 に設定されている別の設定ファイルが存在する可能性があります。
  1. この場合は、以下のコマンドを実行して、競合の原因となる可能性のあるすべての 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
  2. 見つかったその他の設定ファイルはバックアップのために別のディレクトリーに移動するか、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 サーバーのボンディングの確認

  1. root としてサーバー上でボンディングを起動します。
    ~]# ifup /etc/sysconfig/network-scripts/ifcfg-bond0
    Determining if ip address 192.168.100.100 is already in use for device bond0...
  2. サーバー上のインターフェースのステータスを確認します。
    ~]$ 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
    eth0eth1master bond0 state UP で、bond0 のステータスは MASTER,UP であることに注意してください。
  3. ボンディング設定の詳細を表示します。
    ~]$ 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
  4. サーバーのルートを確認します。
    ~]$ 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 サイズが大きい場合に対応できないためです。
  1. 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
  2. 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...
  3. ネットワークスイッチでの VLAN タグ付けの有効化スイッチのドキュメントを参照して、必要な設定を確認してください。
  4. サーバー上のインターフェースのステータスを確認します。
    ~]# 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 forever
    インターフェースの一覧に bond0.192@bond0 があり、ステータスが MASTER,UP になっていることに注意してください。
  5. サーバーのルートを確認します。
    ~]$ ip route
    192.168.100.0/24 dev bond0  proto kernel  scope link  src 192.168.100.100
    192.168.10.0/24 dev 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 1005
    これで VLAN インターフェース bond0.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 --identify ifname integer
    integer は、ネットワークインターフェースで LED をフラッシュする回数に置き換えます。
  • ボンディングモジュールは STP に対応していないため、ネットワークスイッチからの BPDU パケット送信を無効にすることを検討してください。
  • 設定した接続以外のシステムがネットワークにリンクされていない場合は、スイッチポートを直接送受信できるようにすることを検討してください。たとえば、Cisco スイッチでは、portfast コマンドを使用して行います。