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などのサーバー仮想化で活用される技術なのでなれておいてください。
参考サイト。
http://blog.dc-d.jp/archives/333.html
http://dsas.blog.klab.org/archives/50649051.html
http://d.hatena.ne.jp/sen-u/20061002/p1
http://wiki.livedoor.jp/ryunosinfx/d/Bonding@Ubuntu9.04
http://www.howtoforge.com/network_bonding_ubuntu_6.10
*1:設定ミスでネットワークが不通になる事故は防げないので注意。NICの故障に備えるならBondingが有効。人為ミスに備えるなら、NICを複数用意する。