Novell(クラウドコンピューティングのセキュリティ・仮想化ソリューションを実現)

 

Novell Linux製品にボンディングを設定する方法

This document (3929220) is provided subject to the disclaimer at the end of this document.

環境

Novell SUSE Linux Enterprise Server 9
Novell SUSE Linux Enterprise Server 10
Novell Open Enterprise Server (Linux ベース)

問題の状況

数個の物理ネットワークカードを組み合わせて、1つの仮想ネットワークカードにすることができます。この記事では、ボンディングのすべての可能なオプションと機能を説明するのではなく、Novell Linux製品にボンディングを設定する方法について説明するにすぎません。ボンディング自体の詳細については、「/usr/src/linux/Documentation/networking/bonding.txt」ファイルを参照するか(カーネルソースをシステムにインストール済みの場合)、ボンディングプロジェクトのホームページを訪問してください。

解決策

注意: 以降の手順を開始する前に追加情報のセクションを参照してください。

このサンプルシナリオでは、2つのネットワークカードが、bondingmode=1(ホットスタンバイ)で組み合わされます。SLE10SP1以降は、YaST2でボンディングデバイスをセットアップできます(「TID 3815448 - YaST2でボンディングをセットアップする方法」参照)。ただし、それより前のバージョンではできないので、YaST2で作成したconfigファイルを手動で編集して設定する必要があります。

1. YaST2を使用して物理デバイスを設定します。タイプ入力が減るので、DHCPを使用するようにデバイスを設定します。
* SLE10SP1を使用している場合は、YaST2で設定を続けてください。ただし、ボンドインターフェイスを作成する前に、ボンドに含めるインターフェイスがIPアドレスなしで設定されていること(YaST2でのNone設定).を確認します。
* ボンディングモジュールオプションには特に注意してください。アクティブバックアップ(ホットスタンバイの同義語)モードを使用する場合は、[オプション]ダイアログでmiimon=100 use_carrier=1というパラメータを追加します。

2. /etc/sysconfig/networkに、ボンディングデバイスの設定を含む新しい設定ファイルを作成します。この設定をifcfg-bond0と名付けます。この設定は、各ネットワーク環境および該当モードごとに一意になります。例:
    BOOTPROTO='static'
    BROADCAST='192.168.1.255'
    IPADDR='192.168.1.1'
    NETMASK='255.255.255.0'
    NETWORK='192.168.1.0'
    STARTMODE='onboot'
    BONDING_MASTER='yes' ###注意: 行BONDING_MASTER='yes'は、デバイスをボンディングマスタデバイスとして指定します。
    BONDING_MODULE_OPTS='mode=1 miimon=100 use_carrier=0'
BONDING_SLAVE0='bus-pci-0000:06:08.1'
BONDING_SLAVE1='bus-pci-0000:06:09.1'
* スレーブごとに1つのBONDING_SLAVEn='slave_device'を指定します。'slave_device'には、インターフェイス名(「eth0」など)またはネットワークデバイスのデバイス指定子のいずれかを指定します。インターフェイス名は見つけやすいですが、ethn名は、シーケンスで先に処理されるデバイスが失敗した場合、ブート時に変更されます。デバイス指定子'bus-pci-0000:06:08.1'は、物理ネットワークデバイスを指定し、デバイスのバス位置が変わること(たとえば、あるPCIスロットから別のPCIスロットに物理的に移動するなど)がない限り変更されません。

3. BONDING_MODULE_OPTSのコンテンツは、このデバイスのボンディングモジュールのインスタンスに提供されます。ボンディングモード、リンクモニタリングなどのオプションは、ここで指定します。上記は、MIIリンク検出メソッドの例です。他メソッドは、次のとおりです:
* netif_carrierメソッド
BONDING_MODULE_OPTS='miimon=100 mode=1 use_carrier=1'
* ARPモニタリングメソッド
BONDING_MODULE_OPTS='arp_interval=2500 arp_ip_target=192.168.1.1 mode=1'

注意: SLE10でのコードの変更により、このパラメータは、IPアドレスの前に「+」(arpターゲットを追加)または「-」(arpターゲットを削除)を付けて修飾する必要があります。例: arp_ip_target=+192.168.1.1
注意: SLES9(.283カーネル)でのコード変更によって、ボンディングモジュール(v 3.1.0)は更新され、ARPモニタリングの使用時にarp_validateオプションが必要になりました。詳細については、Linuxカーネルのマニュアルを参照してください。

4. 作成済みの設定ファイル(/etc/sysconfig/network/ifcfg-eth-id-xx:xx:xx:xx:xx:xx)を編集して、次のように変更します:

    BOOTPROTO='none'
STARTMODE='off'
* これらの設定ファイルのPCI IDに注意してください。PCI IDは、次のようになります:
_nm_name+'bus-pci-0000:06:08.1

5. ネットワークを再起動します。
rcnetwork restart

この設定を検証するには、次の手順を実行します:

1. システムログファイルを確認します。端末を開き、次のコードを入力します:
tail -f /var/log/messages
2. 別の端末を開き、ホストをpingします:
ping192.168.1.2
3. Linuxホスト上のプライマリインターフェイスのネットワークケーブルを取り外します。

正しく設定されている場合は、どちらのインターフェイスがアクティブであるかに関わらず、pingの続行が表示されます。ログファイルには、一方のデバイスのリンクがダウンし、もう一方のデバイスがアクティブになったという通知が含まれます。どのようなロギングメッセージが出るかチェックしたり、何が起こっているか理解するため、ケーブルの差し込み/取り外しを繰り返します(もう一方のケーブルまたは両方のケーブルについてもテストします)。

追加情報

問題が起こらないように、すべてのネットワークカードで同じドライバを使用することが推奨されています。異なるドライバを使用する場合は、次の点に注意してください。

  • ネットワークカードがリンクを持つか、ネットワーク接続を持つかをチェックする3つのドライバ依存メソッドがあります:
    • MIIリンクステータス検出
    • ドライバのnetif_carrierでの登録
    • ARPモニタリング

使用するドライバが同じメソッドをサポートすることが非常に重要です。そうでない場合は、別のドライバを使用するために一方のネットワークカードを交換するしかありません。

ドライバがどのメソッドをサポートしているか見つけるには、次の手順に従います。

MIIリンクステータスは、mii-toolツールまたはethtoolツールで判別できます。

netif_carrierとARPモニタリングの場合は、ドライバのソースコードを参照して、それらのメソッドがサポートされているかどうか判別します。このためには、対応するカーネルソースがインストールされていなければなりません。

  • netif_carrierの場合は、ドライバのソースコードから、次の文字列を検索します。
    grep netif_carrierdriver_name.c
  • ARPモニタリングメソッドの場合は、ドライバがregister last_rxまたはtrans_startのどちらかをサポートしている必要があります。  したがって、ドライバのソースコードで、次のように検索します。
    grep "last_rx¥|trans_start"driver_name.c

この情報を確認した後でのみ、セットアップを開始してください。


Linuxボンディングドライバは、複数のネットワークインターフェイスを1つの論理的に「ボンドされた」インターフェイスに集約する方法を提供します。ボンディングインターフェイスの動作は、モードに依存します。一般に、モードは、ホットスタンバイまたはロードバランシングのどちらかのサービスを提供します。さらに、リンクの整合性モニタリングも実行されることがあります。

ボンディングでできること - ボンディングを使用すると、主に、次の2つのことができます。

  • 2つ以上のネットワークデバイスを組み合わせ、その結果の仮想デバイス上でネットワークトラフィックをバランスさせます。トラフィックをバランスさせるには、いくつかのバランシングアルゴリズムがあります。
  • ネットワークデバイスがダウンした場合、フェールオーバーを行う2つ以上のネットワークデバイスをセットアップします(ホットスタンバイ)。

ユーザの観点からは、ボンディングデバイスは、任意の通常のネットワークデバイスのように動作します。したがって、次のようなことができます:

  • ボンディングデバイス上に802.1q VLANをセットアップする。
  • ネットワークトラフィックをスニフする。
  • その他

ボンディングでできないこと - ボンディングは、デッドリンクの検出に基づいています。したがって、すべての可能なネットワーク障害を検出できるわけではありません。たとえば、次の場合は、ボンディングがバランシングやフェールオーバーに失敗します:

  • リンク検出が正しく機能しない。
  • ネットワークカードのドライバにバグがあって、動作しなくなる。
  • スイッチは誤動作しているが、リンクをアップとして報告する。
  • 使用中のサービスが利用不可である。
  • ルーティングが間違っている。

時おり、システムの再同期後、一部のネットワークインターフェイスがアクティブにならないことがあります。これを防ぐには、モジュールのロードを再同期プロセスの早い段階で開始する必要があります。この場合、次の手順が役に立ちます。

  1. /etc/sysconfig/kernelファイルを編集し、次の行を追加します: MODULES_LOADED_ON_BOOT="driver_name"
  2. サーバを再起動し、コマンドlspciおよびifconfigを使用して、すべてのネットワークインターフェイスのステータスをチェックします。
  3. この方法が成功しない場合は、/etc/sysconfig/kernelファイルを再編集し、ステップ1で挿入した行を削除します。INITRD_MODULESステートメントを含む行を変更します(driver_nameをこの行に追加します)。変更後の行は、次のようになります。
    INITRD_MODULES="cdrom scsi_mod ide-cd ehci-hcd reiserfs driver_name"
  4. mkinitrdコマンドを呼び出します。
  5. ステップ2と同様に、サーバを再起動します。

別の方法では、ネットワークインターフェイスの機動をモジュールのロード後に遅延します。

  1. /etc/sysconfig/network/configファイルを編集し、WAIT_FOR_INTERFACES変数を秒単位で必要な遅延に変更します。インターフェイスを3秒遅延させるには、次のコードを入力します。
    WAIT_FOR_INTERFACES="3"
  2. サーバを再起動して、この方法の成功を確認します。

現在、SLE10では、ボンディングオプション"primary=ethX"の使用時に、プライマリインターフェイスへのフェールオーバーが機能しません。これは、ドライバオプションが/sysfsに移動し、少なくとも1つのスレーブがあるときだけ設定できるからです。これは、SLE10 SP1で修正されます。

回避策:

  1. POST_UP_SCRIPT="enable-primary"/etc/sysconfig/network/ifcfg-bond0に追加します。
  2. 次のファイルを作成します: /etc/sysconfig/networking/scripts/enable-primaryこのファイルは、次のコンテンツを含む必要があります。
    #!/bin/sh
    sleep 1
    echo "eth0" >/sys/class/net/bond0/bonding/primary
    exit 0
  3. /etc/sysconfig/networking/scripts/enable-primaryを実行可能にします。つまり、chmod +x /etc/sysconfig/networking/scripts/enable-primaryにします。

これで、プライマリがブート時またはネットワーク再起動時に正しくセットアップされます。


/etc/sysconfig/network/routesファイルが、YaSTを介して設定されたとき、ルーティングテーブルを含まない場合があります。その場合は、このファイルを、正しいルーティングテーブルを使用して手動で変更できます。

Disclaimer

この情報は、米国Novell, Inc.およびノベル株式会社の内外から発生したものです。本文書の内容または本文書を使用した結果について、いかなる保証、表明または約束も行っていません。また、本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。

本文書に記載されている会社名、製品名はそれぞれ各社の商品、商標または登録商標です。

  • ドキュメントID: 3929220
  • 作成年月日: 11-JAN-2008
  • 修正年月日: 24-DEC-2008
  • ドキュメントリビジョン:
  • 分類:
  • 対象NOVELL製品およびバージョン: Open Enterprise Server, SUSE Linux Enterprise Server
  • カテゴリ: