オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

Xenによる仮想化でProDHCPのデモ環境を作成

»

説教臭い話などが続きましたので、たまには技術話でも。。
お客さんから、大規模向けDHCPサーバ:ProDHCPの、冗長構成でのデモのご依頼をいただきました。大抵はお客さんの方でOSが動く状態のホストを用意していただいて、評価用にソフトウェアをお貸し出しして、という感じなのですが、とりあえずデモ環境を一式持って来て説明して欲しい、とのことで、デモ環境を用意してみました。

少々遠方のお客さんですので、持参して伺うことを想定すると、コンパクトなハードでないと私がくたばりますので、まずハードはお気に入りのコンパクトマシン、AxiomtekのNA-813に決めました。

Ax
蓋が開いているのは、HDDを入れ替えたり、VGAケーブルを引っ張り出したりしているためで、落ち着いたらもちろん閉じます。

さすがに小さいといっても2台持っていくのは辛いので、1台に仮想で2つOSを入れることにします。OSは、お客さんがRHELをお使いになるようなので、CentOSにします。せっかくなので最新の5.5で。仮想化はKVMも考えたのですが、CPUがAtomなので、Xenでいくことにします。

当社にはXenの著書を書いたメンバーがいるのですが、私はVMwareとParallelsしか使ったことがなかったので、彼に質問しながら、自分でやってみました。

まずは普通にCentOS5.5をネットワークインストールし、yumでVirtualizationをインストールします。多少確認などするくらいでリブートするともうXenを使える状態になります。昔は面倒だったようですが、実に簡単です。

次に、子OSを2つインストールしますが、今回の場合、2つの子OSはネットワークの設定など以外は全く同じもので良いので、1つインストールしてProDHCPのセットアップなどを終え、ディスクイメージをコピーして2つにしました。これまた実に簡単。

やり方の説明は私が中途半端に行うより、詳しい情報がそこら中にありますので、省略!

親OS
[root@centos55 ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      483     2 r-----   2619.6
centos55-1                                 8      255     1 -b----     90.4
centos55-2                                 7      255     1 -b----     68.0

ちゃんと子OSが2つ動いてます。

子OSその1
[komata@centos55-1 ~]$ ps -ef|grep dhcpd
root      1706  1704  0 14:50 ?        00:00:00 ./dhcpd

ProDHCPのサーバプログラムが動いています。こちらがマスターとなっています。

子OSその2
[komata@centos55-2 ~]$ ps -ef|grep mapsync
root      1584  1583  0 14:50 ?        00:00:00 ./mapsync 192.168.0.150 31111 Lease.Map /usr/local/ncad/ProDHCP/ProDHCPd-II/mapsync.ini

ProDHCPのリース情報同期プログラムが動いています。こちらはスレーブ。

子OSその1を停止すると・・・
[root@centos55 ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      483     2 r-----   2633.6
centos55-2                                 7      255     1 -b----     74.3

子OSその2でProDHCPのサーバプログラムが自動的に起動し、マスターになります。
[komata@centos55-2 ~]$ ps -ef|grep dhcpd
root      1972  1970  2 15:31 ?        00:00:00 ./dhcpd

その状態で、子OSその1を復活させると・・・
[root@centos55 ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      483     2 r-----   2646.5
centos55-1                                 9      255     1 -b----     28.5
centos55-2                                 7      255     1 -b----     77.2

子OSその1では、
[komata@centos55-1 ~]$ ps -ef|grep mapsync
root      1495  1494  0 15:34 ?        00:00:00 ./mapsync 192.168.0.151 31111 Lease.Map /usr/local/ncad/ProDHCP/ProDHCPd-II/mapsync.ini

ProDHCPのリース情報同期プログラムが動いて、スレーブとして稼働します。

こんな感じで、お客さんに実際の冗長化の動きをお見せしながら説明してくる予定です。Xenはやってみたらとても簡単でした!!

Comment(0)