それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

NIC2枚から始める冗長化。

bondigを使ってNIC故障に耐える。

サーバーインフラを支える技術でも紹介されている。またWEB+DBの2008年版で紹介されていた。この技術は高速化にも応用できるようです。


大学のサーバではグローバルIPを借りることができた。潤沢に使える。VRRPや、グローバル節約のNAT技術が無用。なにそれおいしいのってかんじ。今回はグローバルIPを2つ使って冗長化する。

NICの冗長化する。

まず、NICを二枚用意する。

NIC一枚の故障確率が10%でも、二枚なら1%にできるよね。(合ってるよね??)
それではNIC2枚を簡単に1枚にしてみましょう。*1


障害時に慌てないために。2枚のNIC⇒仮想NIC1枚に見せかける。

Bondingする

一般的にBondingやTeamingと呼ばれる機能。Ubuntu(Debian)の場合ifenslaveで登録されている。

aptitude search ifenslave
sudo aptitude install ifenslave
sudo vim /etc/network/interface
 15# auto bond0
 16# iface bond0 inet static
 17#     address xxx.xxx.xxx.xxx
 18#     netmask 255.255.255.0
 19#     broadcast xxx.xxx.xxx.255
 20#     gateway xxx.xxx.xxx.xxx
 21#     dns-nameservers 60.56.XXX.XXX 218.xxx.xxx.xxx
 22#     slaves eth0 eth1
 23# 
sudo vim /etc/modules

/etc/modules

たしか/etc/modulesに追記して、起動時に有効になるようにしました。デフォルト値と追加分で次のようになりました。

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

fuse
lp
bonding

/etc/modprobe.d/bonding

sudo vim /etc/modprobe.d/bonding 
#09/07/01追加
#/etc/modprobe.d/bonding に追記(新規作成)してbondingの設定をしました。
#bondingは耐障害性と負荷バランシングのmode=0を定義しています。
options bonding mode=0 miimon=200

modprobe

modprobeやModuleなど起動時に読み込まれる設定がきちんと動作するか、再起動して確かめます。
ちゃんと動作するか

適当なサーバーからTaskoonサーバーにPingを打ちながら、LANケーブルを抜いたりさしたりしてみてください。2本→eth0だけ→2本eth1だけ。などしてみてください。片方だけになっても両方になってもきちんと通信ができていれば成功です。
LANデバイスの書き換え

LANデバイスをソフトウェア的に書き換える技術はXenなどのサーバー仮想化で活用される技術なのでなれておいてください。

*1:設定ミスでネットワークが不通になる事故は防げないので注意。NICの故障に備えるならBondingが有効。人為ミスに備えるなら、NICを複数用意する。