ディスクレス 1CD Linux ロードバランサー
Linux LVS + Keepalived を使ったロードバランサーをKnoppix上に作って、故障しづらいディスクレスのロードバランサーを作ってみた。
Knoppixのカスタマイズは、「KNOPPIXを用いたLaTeX環境の構築とその活用」(http://www.ntt.co.jp/qos/tools/) をほとんどそのまんま使っている。
- 用意するもの
作業は、実マシンを用意しても良いけど、Windows上のVMwareで行った。
概要は以下のとおり
- 新しいVirtualMachineを1つ作り、CD-ROMドライブとして、Knoppix 5.1.1のISOイメージ を設定して起動する。
- そのVirtualMachine内にKnoppixのリマスタリング環境を作成する
- 不要モジュールの削除、ipvsadm, keepalived などのモジュール追加、設定ファイルの追加、sysctl パラメータの設定
- カスタムISOイメージの作成
という感じ。
VirtualMachine のスペックは、HDDを5GB、メモリを1GB程度以上で作成。
起動時に以下のようにテキストモードで起動する。
boot: knoppix 2
fdisk などで、パーティションを作成
# fdisk /dev/hda /dev/hda1 83(Linux) 5GBくらい /dev/hda2 82(Swap) 1GBくらい
# mke2fs /dev/hda1 # mkswap /dev/hda2
再起動
# reboot
テキストモードで起動
boot: knoppix 2
先ほどフォーマットしたファイルシステムをマウント後、必要なディレクトリ作成
# mount /dev/hda1 /mnt/hda1 # mkdir -p /mnt/hda1/source/KNOPPIX # mkdir -p /mnt/hda1/master/KNOPPIX/KNOPPIX
必要なファイルをコピー
# cp -Rpv /KNOPPIX/* /mnt/hda1/source/KNOPPIX # cp -p /cdrom/KNOPPIX/*.* /mnt/hda1/master/KNOPPIX/KNOPPIX # cp /cdrom/*.* /mnt/hda1/master/KNOPPIX/ # cp -Rpv /cdrom/boot /mnt/hda1/master/KNOPPIX/
大体 以下のようになる。
# ls /mnt/hda1/master/KNOPPIX KNOPPIX autorun.bat autorun.inf boot cdrom.ico index.html
# chroot /mnt/hda1/source/KNOPPIX # mount -t proc /proc proc
いったんchrootすると、ネットワークが使えなくなるので以下で再度使えるようにする
ネットワーク設定をバックアップ
# cd /etc/dhcpc # mv resolv.conf resolv.conf.org # cd ../network # mv interfaces interfaces.org
ALT+2 でchrootしていない別コンソールを開いて、繋がるネットワークの設定をchroot環境にコピー
# cd /etc/dhcpc # cp resolv.conf /mnt/hda1/source/KNOPPIX/etc/dhcpc/ # cd ../network # cp interfaces /mnt/hda1/source/KNOPPIX/etc/network/
ALT+1 でchrootしたコンソールへ戻り、ネットワークの疎通確認
# ping www.yahoo.com
ping がうまくいかない場合は、ネットワークを落としてから上げる。
# ifdown eth0 # ifup eth0 # ping www.yahoo.com
必要に応じて、apt レポジトリの編集。近くのレポジトリに変えたり、deb-src などを削除したりする。めんどくさければ省略化。
# vi /etc/apt/sources.list
いったんアップデート
# apt-get update
オリジナルKnoppixには要らないパッケージの削除(省略可)
# dpkg-query -W --showformat=’${Installed-Size} ${Package}\n’ | sort -nr | less
サイズの大きいパッケージ順に表示される。
openoffice-de-en sun-java5-bin kde-i18n-es wine kde-i18n-de kde-i18n-fr kde-i18n-it kde-i18n-ja qemu mplayer libgl1-mesa-dri gimp-data sun-java5-demo sun-java5-jdk kdevelop scribus mozilla xpdf kdvi
あたりを削除することにする。
以下のようにモジュールをリストして、削除のシミュレートをして、実際に削除 という感じで。
# dpkg -l | grep wine # apt-get -s remove --purge wine winetools # apt-get remove --purge wine winetools
# dpkg -l | grep openoffice # apt-get -s remove --purge openoffice-de-en openoffice.org-debian-menus ttf-openoffice # apt-get remove --purge openoffice-de-en openoffice.org-debian-menus ttf-openoffice
# dpkg -l | grep sun-java5-bin # apt-get -s remove --purge sun-java5-bin # apt-get remove --purge sun-java5-bin
...繰り返し
オリジナルKNOPPIXに入れたいモジュールをインストールする。
# apt-get install ipvsadm # apt-get install keepalived # apt-get install iproute # apt-get install subversion # apt-get install sysv-rc-conf # apt-get install sysvconfig
keepalived の設定 ( 2008-04-10 - Sleepless geek in Seattle 等を参照)
# vi /etc/keepalived/keepalived.conf # vi /etc/keepalived/web.conf # vi /etc/keepalived/smtp.conf
/etc/sysctl.conf の設定
net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 0
その他、自分好みの設定をしておく
chroot 終了前の掃除など
# cd /etc/dhcpc # mv resolv.comf.org resolv.conf # cd ../network # mv interfaces.org interfaces
# cd /var/lib/dpkg # ls alternatives diversions-old parts available info statoverride available-old lock status cmethopt methods status-old diversions methlock updates # rm *-old
# cd /var/lib/apt/lists/ # rm ring* # rm security* # rm deb* # ls lock partial
最後にlocate コマンドでファイルの高速検索を可能にするためにlocatedb のアップデートを行なう。
# updatedb
chroot の解除
# umount /proc # exit
bash の履歴などを削除
# rm /mnt/hda1/source/KNOPPIX/.bash_history # cd /mnt/hda1/master/KNOPPIX # rm -rf coLinux qemu-0.6.0-windows
以下のようにカスタムISOイメージのリビジョンを記録しておくと便利
# touch /mnt/hda1/master/KNOPPIX/Custom-080422
重要 KNOPPIX5.1.1 では、以下の作業が必須(旧バージョンでは不要だった)
# mkdir /mnt/hda1/master/KNOPPIX/KNOPPIX/modules # cp -p /cdrom/KNOPPIX/modules/*.* /mnt/hda1/master/KNOPPIX/KNOPPIX/modules
この設定は、最近のKNOPPIXで必要になったため、NTTの資料には載っていない。
cloopファイルを作成
# mkisofs -R -l -V "My KNOPPIX iso9660 filesystem" -hide-rr-moved -v /mnt/hda1/source/KNOPPIX | create_compressed_fs - 65536 > /mnt/hda1/master/KNOPPIX/KNOPPIX/KNOPPIX
イメージのテスト(省略可)
# mkdir /mnt/hda1/KNOPPIX # mkdir /mnt/hda1/KNOPPIX/modules # cp -p /cdrom/KNOPPIX/modules/*.* /mnt/hda1/KNOPPIX/modules/ # cd /mnt/hda1/KNOPPIX # ln -s ../master/KNOPPIX/KNOPPIX/KNOPPIX
再起動する。
再起動の際に、先ほど作成したcloopファイルから起動してテストするために以下のオプションを付けて起動する。
boot: knoppix fromhd=/dev/hda1
うまく起動できたら、ISOイメージを作成する。
# cd /mnt/hda1/master/KNOPPIX # mkisofs -l -r -J -V "My-KNOPPIX" -v -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -o ../my-knoppix041109.iso -no-emul-boot -boot-load-size 4 -boot-info-table /mnt/hda1/master/KNOPPIX