So-net無料ブログ作成
検索選択

Ethernetのボンディング Linuxのサーバーマシンにbond0インターフェースを作成 [PC関係]



本日は、うちのネットワーク環境についての話題である。

サーバーマシンを少しでも速くして快適に開発ができるように、ネットワークカード2枚を使って、ボンディングしてみることにした。
サーバーマシンは、Linuxで稼働させているので、用語としては、ボンディングになる。Windowsの場合は、チーミングというらしい。
で、難しい解説はしないが、ネットワークカードを複数使って、冗長構成にすれば、信頼性とパフォーマンスの両方を改善できる、というもの。現状、マザーにオンボードで付いているEthernetポート(100Mbps)は使っていない。PCIバスに増設した、ギガビットのEthernetだけを使っている。eth0とeth1があって、eth1だけを使っている。eth0も線をつなげて、有効活用しようではないか、というのが今回の趣旨である。

まずは、Linuxのカーネルに、bonding用のドライバを組み込む。ボンディングは、bond0といった仮想のEthernetデバイスを作成することで、運用可能になる。まずは、カーネルモジュールを組み込もう。モジュールの組み込みのために、bond.confを作成した。

/etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 mode=6 miimon=100 arp_interval=0


これで、デバイスbond0が使用可能になる。
mode=6というところがミソで、ここを変えると「単に予備回線があるだけ」のモードになる。両方のポートを使って、通信速度を改善させたいのなら、適切なモードを指定する必要がある。
miimonとarp_intervalは、よくわからないが、ポートの生死を確認するための方式の指定。MII監視によってポートの生死確認を行うようになっている。arp_intervalを0以外にすると、ARPのポーリングを使った監視方法になるらしい。ボンディングで検索してみると、設定例がいくつか出てくるが、MIIの方が多かったので、それらに倣って設定してみた。

次に、bond0に参加させるEthernetポートを定義していく。
/etc/sysconfig/network-scriptsに、ifcfg-eth0とifcfg-eth1があるので、これらの設定ファイルを変更する。

ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes


ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes


eth1の方には、IPアドレスの指定が入っていたが、これは削除。MASTER=bond0として、SLAVE=yesを設定するのがミソ。

ifcfg-bond0を作成して、IPアドレスを設定。

ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.0.0
NETMASK=255.255.255.0
IPADDR=192.168.0.2
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=192.168.0.1
BONDING_OPTS="miimon=100 mode=balance-alb arp_interval=0"


おなじみの設定内容となっているが、BONDING_OPTSのところがボンディングならではの設定。modprobe.confでモジュールをロードしたときと同様なオプション設定が必要。bondデバイスごとに設定できるようになっているわけね。
じゃあ、modprobe.confの設定は要らないかも?

この状態で、再起動すると、bond0が上がってくる。IPアドレスは、bond0に付けられた状態。ネットワークアクセスすると、両方のポートのLEDがチカチカするので、負荷分散もされている模様。

ここで、ちゃんとボンディングされているかを確認してみる。
まずは、eth1の方をダウンさせてみる。

ifdown eth1

片方のEthernetが死んでも、通信可能。冗長構成だからね。
この状態で、FTPで転送速度を計測してみると... 約11Mバイト/秒
eth0は100MbpsのEthernetだから、こんなものか。

eth1(ギガビットの方)を復活させてみる。

ifup eth1

同様に、FTPで転送速度を計測してみると... 約52Mバイト/秒

おー、速くなった。
じゃあ、eth0を落として、eth1だけだと... 約50Mバイト/秒

あれー、あんまり変わらないじゃない。若干(2Mバイト/秒)は落ちたかも。
クライアントの方もチーミングしているので、ギガビットEtherの限界っていうことはないと思うが...論理値は(125Mバイト/秒)だからねぇ... スイッチングHUBの性能も関係するのかも。

50M+11Mで、60Mくらいは出てもよいと思うのだが。
と思って、何回かやっていると、60Mバイト/秒近くのパフォーマンスを出した。でも、どうも、なんかやる度にバラ付きが。

なんか、ちゃんと負荷分散されているのかどうか"怪しい感じ"である。ギガビットふたつなら50M+50Mで100Mくらい出るかも?もしかして、同じHUBに突っ込んでも同じかも?

ちょっと冷静になって考えよう。ふたつのEthernetを使って、冗長構成にすれば、フエールセーフにはなる。どちらかが死んでも、どちらかが生きていれば、通信可能な状態になる。これは問題なくできている。
どちらも生きている場合は、負荷分散のために、パケットをふたつのポートに対して、ラウンドロビンで交互に送信する。

ということは、やはりHUBをわけないと帯域アップにはならないのか。送信側のPCでは分散されていても、受け側のスイッチが同じなら、そこでシリアライズされちゃうもんね。
100Mのスイッチが眠っていたので、これを付けてみたが、スイッチ間で情報を交換しないとだめなので、通信できなくなった。

どうも、リンクアグリゲーション(IEEE802.3ad)すると、倍の帯域で通信できるらしい。当然ながら、スイッチの方も802.3adに対応している必要がある。
Intel PRO Setで「スイッチのテスト」を実行すると、対応しているスイッチかどうかが、わかる。当然、そんなスイッチングHUBではないので、アグリゲーションはできない。

スイッチのテスト.png

ギガビットで802.3adに対応のスイッチ、8ポートで1万円くらいする。ちょっと保留かな。フェールセーフできた、ということで満足しておこう。


関連記事
 Windows10でチーミングできなくなった Intelドライバ22.3を導入
 ボンディング・チーミングのその後 NETGEARのインテリジェントL2-SW 802.3adに対応したL2-SWを購入した話。


802.3adに対応したギガビットスイッチ

NETGEAR GS108T



BUFFALO BSL-WS-G2108M

BUFFALO 法人向けレイヤー2WebスマートGigaスイッチHUB 8ポート BSL-WS-G2108M

BUFFALO 法人向けレイヤー2WebスマートGigaスイッチHUB 8ポート BSL-WS-G2108M

  • 出版社/メーカー: バッファロー
  • メディア: Personal Computers



オフィスといってもSOHOなので、VLANやら、802.1Xはいらないのよね。導入するのなら、NETGEARの方かな。
これらの他にCiscoやアライドのスイッチももちろんあるが、何十万もするので。中古なら安いかもしれないが... ラックに入れるようなサイズだしねぇ。
サーバーのクライアントがひとつなら、あまり変わらないかも知れない。サーバーの強化をするときに、スイッチも変えようと思う。

関連記事
ボンディング・チーミングのその後 NETGEARのインテリジェントL2-SW



サイト内を検索


nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。


AREarthroidPro ARで地球を表示するアプリ

Copyright Atsushi Asai Google+朝井淳
[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/03/03
  • メディア: 単行本(ソフトカバー)
C言語 ポインタが理解できない理由 [改訂新版] (プログラミングの教科書)

C言語 ポインタが理解できない理由 [改訂新版] (プログラミングの教科書)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2011/04/08
  • メディア: 単行本(ソフトカバー)

かんたんAndroidアプリ作成入門 (プログラミングの教科書)

かんたんAndroidアプリ作成入門 (プログラミングの教科書)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2013/04/16
  • メディア: 単行本(ソフトカバー)