ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
メインメニュー
My Twitter

Xen4.0 squeezeでのbonding

このトピックの投稿一覧へ

なし Xen4.0 squeezeでのbonding

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012-3-27 0:00 | 最終変更
takahashi  一人前 居住地: 千葉県船橋市  投稿数: 72
今回は業務用サーバ等でよくつかわれるボンディングについて書いてみます。

複数の物理ネットワークインターフェースを束ねて負荷分散、又は冗長性を持たせることをLinuxの世界ではボンディングと言っています。Windowsではチーミング、スイッチではリンクアグリゲーション(昔はトランク or トランキングとか言ってました。最近はLAGとか言います。)、Cisco用語ではイーサチャネル… まぁ、用語がばらばらで困ってしまいます(苦笑)。
※旧Nortel社ではMLT(Multi Link Trunk)とか言ってました。

スタンドアロンのサーバ(仮想化されていない)でのボンディングについてはググればそこそこ情報がヒットするので、今日は少々特殊な状況下での設定方法をご紹介します。

【検証】
    Debian GNU Linux 4.0 squeeze をDomain-0としてXen 4.0を動かします。
    このDomain-0において2つの物理ネットワークI/Fをボンディングします。

【環境】
    ・Domain-0  Debian GNU 4.0 squeeze
                linux-image-2.6.32-5-xen-amd64
                xen-hypervisor-4.0-amd64

    ・server    NEC Express5800/GT110b
                Xeon X3440 2.53GHz, 8MB cache, 4 core 8 threads
                Memory 16GB
                OnBoard NIC Intel 82574L
                ギガビット CT デスクトップ・アダプタ EXPI9301CT (Intel 82574L)
                ※どちらもドライバーではIntel PRO/1000と認識する。

【サマリー】
    1.ボンディングに必要なパッケージ(ifenslave-2.6)をインストール
    2.kernelモジュールのロード及び起動時の設定
    3./etc/network/interfaceの設定
    4./etc/xen/xend-config.sxpの設定
    5.再起動後、動作確認

それでは設定方法と検証を行います。

【注意】
今回はネットワークに関しての設定変更なので、リモートからの作業(telnetとかsshとか)はお勧め出来ません。ちょっとした操作ミスで外部から接続できなくなります。
サーバ本体にモニターとキーボードを接続して作業することをお勧めします。

また、hypervisorを動かしたままで設定する場合は、稼働中の仮想マシンを全て止めて(destroy)から作業を行って下さい。



1.ボンディングに必要なパッケージ(ifenslave-2.6)をインストール
  aptitude install ifenslave-2.6


2.kernelモジュールのロード及び起動時の設定

2-1./etc/modules の最後に bonding を追加します。

2-2./etc/modprobe.d/ に、bonding.conf というファイルを新規に作成します。
  alias bond0 bonding
  options bonding mode=1 miimon=100


3./etc/network/interfacesの設定
最初に書いてあったeth0とかeth1という物理インターフェースの設定は消すかコメントアウトします。
  auto lo
  iface lo inet loopback

  auto bond0
  iface bond0 inet manual
        slaves eth0 eth1

  auto br0
  iface br0 inet static
        address        192.168.0.155
        netmask        255.255.255.0
        network        192.168.0.0
        broadcast      192.168.0.255
        gateway        192.168.0.1
        bridge_ports   bond0
        bridge_stp     off
        bridge_maxwait 10
※bridge_stp off  ブリッジのスパニングツリーの設定はOFF
※bridge_maxwait 10 起動時にフォワーディングテーブル作成の為、10秒間ネットワークを監視&ラーニングするという設定。0にすると起動は速くなるが、Domain-0が起動後すぐにネットワークが使えない(動かない)ので10秒の設定がお勧め!


4./etc/xen/xend-config.sxpの設定
一般的には1つの物理インターフェースを複数のDomain-U(仮想マシン)がブリッジとして共有するという設定にするので、(network-script network-bridge) のコメントアウトを外して有効にしてある筈です。
しかし、このnetwork-bridgeというスクリプトはボンディングされたI/Fは想定されていないようで、どう設定してもうまく動いてくれません(起動時にエラーになる)。
※例えば、(network-script 'network-bridge netdev=bond0') とかやってもダメです。
※CentOSではnetwork-bridge-bondingというスクリプトがあるので、Debianでもそのうち用意されるかもしれません。

海外のMLを調べたり試行錯誤した結果、3.で書いたように先にブリッジインターフェースを作ってしまうとうまくいくことがわかりました。
…ということで、xend-config.sxpにある物理インターフェースからブリッジを自動作成するスクリプトは使いません。ですので、初期設定と同じようにコメントアウトします。
  #(network-script network-bridge)
しかし、各仮想マシンを起動するときに作成される仮想ネットワークインターフェースは必要なので、
  (vif-script  vif-bridge)
の設定は有効(コメントアウトしない)にして下さい。
※このスクリプトはブリッジI/Fが1個だけなら正常に動きますが、複数あるときはスクリプトを変更しないとダメかもしれません。


5.再起動後、動作確認
再起動前に modprobe -r bond0 と入力してエラーが出ないことを確認します。
種々設定内容に漏れが無いかどうかを指さし確認してからrebootします。

5-1.mode 1のボンディングについての動作確認については割愛しますが、接続しているスイッチにおいてスパニングツリーの設定がONになっていると、タイミングによってはイーサケーブルの抜き差し時にリンクが上がらなくなることがあります。
今回の設定ではボンディング側ではスパニングツリーをOFFにしているので、アクティブポートの切替時にタイミングによってはBPDUパケットが回ってしまいスイッチ側でブロックポートを作ってしまうのが理由です。その場合、時間がたてばリンクが上がるかどうかはスイッチの実装に依存するのでなんとも言えません。
※こういうことがあるので、一度フェイルオーバーしてポートが切り替わるとフェイルバックしても元のポートに戻さない実装が多かったりします。

5-2.xm create で停止中の仮想マシンを立ち上げて動作確認をします。
※特にネットワークまわり…

5-3.xen-create-image で仮想マシンの自動生成がうまくいくか確認します。


■以上でXen4.0でのボンディング設定については終了です。
実は起動時にXENBUS: Unable to read cpu state という表示が出て気になるのですが、iptables絡みという見当は付いたのですがまだよくわかりません。もう少し調べてみますが、『ワーニングだから気にするな!』っていう書き込みとかもあって… う〜ん、う〜ん
投票数:0 平均点:0.00

投稿ツリー

  条件検索へ


Calendar
TS3
TS3 Minolin server TeamSpeak Viewer