【50回記念】サーバー構築ハンズオン in 温泉合宿のご報告

2/20~21に【50回記念】サーバー構築ハンズオン in 温泉合宿を、箱根のKKR宮ノ下にて開催しました。

当日はお昼前からあいにくの雨模様にもかかわらず、ご参加いただきましてありがとうございました。

サーバー構築ハンズオン組とVineLinux開発ハンズオン組に分かれての開催となりましたが、回線状況が悪いためにご迷惑をおかけしまして申し訳ございませんでした。

15時ごろからは温泉&LT宴会組も続々と到着し、温泉に散策にと宴会まで有意義にお過ごしいただきました。

ハンズオンの方もなんとか終了し、無事LT宴会にたどり着けました。

LT宴会では、業界向けの話や、そうではない話もいいバランスであり、楽しんでいただきました。

そんなわけで、二次会にはほぼ全員参加。

想定外の人数でお部屋にぎゅうぎゅうで申し訳なかったのですが、かえって話が弾んでよかったかも!?

持ち寄りのお酒や食べ物だけではたりず、ロビーの自販機にだいぶ活躍していただいたようです。笑

翌日は天気予報どおりに気持ちよく晴れ、みなさん思い思いに帰路につかれました。

なにはともあれ、無事終了することができましたのも、皆さんのおかげです。

ありがとうございました。

今月末はOSC東京/春が開催されMyDNS.JPもブース出していますので、よろしければ足をお運びいただければと思います。

サーバー構築ハンズオンの次回の通常開催は03/26(土)の予定です。

※写真ご提供いただきました皆さん、ありがとうございました。 🙂

□MyDNS.JPを使った複数WEBサーバーの負荷分散

ある程度のアクセスが見込めるWEBサイトを構築する場合、おのずとWEBサーバーを複数台用意して負荷分散することになります。

お勤め先(BiG-NET)でも、最初は共用サーバーから初めて、事業が順調に拡大してスケールアウトを検討してほしいなーと思うお客様もいますが、そんな時にどうしても腰が重たくなるのは

「費用が…」

ということになります。

事業規模が拡大したら事務所を広いところに引っ越すように、WEBシステムもより大人数が対応できるような仕組みに引っ越すのがいいと思うんですけど、なかなかそうもいかないみたいですね。

今までに数回のやり取りで専用サーバーや仮想環境の構築などにさっくりとスケールアウトしたお客様は全くいないです。WEBサーバーにアクセスできなくなっても、売り上げが頭打ちになってもいいのかなーと思うのに「なんでだろう?」と不思議です。

かなり機会損失していると思うんですが…

なんだか愚痴のようになってきたけど、本当にもったいないと思うんです。

大手SIerが提案するようなすんごいシステムを構築しなくても、要所要所を押さえておけば、MyDNS.JPを使うことで、コストをあまりかけずにWEBシステムをより顧客が満足できるものに移行できます。

一台当たりのWEBサーバー(WEBxxx)で処理できる人数は限られていますので、あらかじめ想定される顧客の接続数からWEBサーバーの台数がおのずと決定されるかと思います。そうすると、そのWEBサーバーの数に応じてたいていはロードバランサ(LBxxx)やデータベースサーバー(DBxxx)、ログサーバー(LOGxxx)などを必要台数用意することになります。

Internet --------------------- WEB001 ------- DB001

                         ↓

Internet ---+--- LB001 ---+--- WEB001 ---+--- DB001
            |             |              |
            +--- LB002 ---+--- WEB002 ---+--- DB002
                          |       :      |
                          +---    :   ---+
                          |       :      |
                          +--- WEBxxx ---+--- LOG001

いままで1台とか2台でよかったのに、いきなりサーバーが倍以上に増えるわけですから、さすがに経営層からすると「コストが…」となるかと思います。

そんな時にはMyDNS.JPを使って、もう少し増やす台数を抑えてみるのはいかがでしょう?

Internet --------------------- WEB001 ------- DB001

                         ↓

Internet -----------------+--- WEB001 ---+--- DB001
                          |              |
                          +--- WEB002 ---+
                          |              |
                          +--- WEB003 ---+
                          |              |
                          +--- CHK001 ---+

                ※WEB001のIPアドレス : x.x.x.1
                  WEB002のIPアドレス : x.x.x.2
                  WEB003のIPアドレス : x.x.x.3

この構成にはロードバランサ(LBxxx)がありませんが、このロードバランサの役割をMyDNS.JPにさせるのです。

なーんだ、それじゃただのDNSによるラウンドロビンじゃないか」と思うかもしれません。

確かにDNSによるラウンドロビンなのですが、利用するDNSサービスにフェイルオーバーのような仕組みがないと、WEBサーバーのうち一台に障害が発生したときに切り離しができません。

MyDNS.JPでしたら「DIRECT IP」(直接IP通知)機能を使うことで、この障害発生時の切り離しや自動復旧が可能になります。

まずはMyDNS.JPでID(=親ID:mydns000000)を一つ取得して、ドメイン情報を設定します。(例えば「test.mydns.jp」)
そして、この親IDで、別途子IDを必要分だけ取得します。

mydns111111                     WEB001用とする
mydns222222                     WEB002用とする
mydns333333                     WEB003用とする

そして、「親ID」のドメイン情報のホストとして、以下のように設定します。

www             A               子ID(mydns111111)
www             A               子ID(mydns222222)
www             A               子ID(mydns333333)

※子IDに委譲(DELEGATE)しないでAレコードとして、IPアドレスの関連付けで子IDを選択するのがポイント)

そうしたら、WEBサーバーから、もしくは監視サーバー(CHKxxx)から「DIRECT IP」で各WEBサーバーのIPアドレスを通知します。

wget -O - 'http://www.mydns.jp/directip.html?MID=mydns111111&PWD=password111&IPV4ADDR=x.x.x.1'
wget -O - 'http://www.mydns.jp/directip.html?MID=mydns222222&PWD=password222&IPV4ADDR=x.x.x.2'
wget -O - 'http://www.mydns.jp/directip.html?MID=mydns333333&PWD=password333&IPV4ADDR=x.x.x.3'

※ここでは、wgetを使って通知をしている。

こうすることで、「www.test.mydns.jp」のIPアドレスを問い合わせると

dig www.test.mydns.jp A

        :
www.lvs.pgw.jp.         300     IN      A       x.x.x.2
www.lvs.pgw.jp.         300     IN      A       x.x.x.1
www.lvs.pgw.jp.         300     IN      A       x.x.x.3
        :

dig www.test.mydns.jp A

        :
www.lvs.pgw.jp.         300     IN      A       x.x.x.3
www.lvs.pgw.jp.         300     IN      A       x.x.x.2
www.lvs.pgw.jp.         300     IN      A       x.x.x.1
        :

のように複数が返ります。(そしてほとんどのクライアントは最初のIPアドレスにアクセスします)

ここまでだと普通のDNSラウンドロビンですが、監視サーバーから各WEBサーバーの死活監視をします。
例えばpingでもいいですし、80番ポートの反応を見てもいいですし、SNMPでもいいと思います。
もしWEBサーバーに何らかの障害が発生して反応がなかったり、著しく高負荷だった場合には、「www.test.mydns.jp」から切り離す事になります。

この切り離し方法として、対象となるWEBサーバーのIPアドレスに「0.0.0.0」を設定すると、MyDNS.JPはそのIPアドレスを含まない情報を返すようになります。

wget -O - 'http://www.mydns.jp/directip.html?MID=mydns222222&PWD=password222&IPV4ADDR=0.0.0.0

※WEB002を切り離す場合。

こうすることで、「www.test.mydns.jp」のIPアドレスを問い合わせると、DNS情報のキャッシュの残り時間にもよりますが、

dig www.test.mydns.jp A

        :
www.lvs.pgw.jp.         300     IN      A       x.x.x.3
www.lvs.pgw.jp.         300     IN      A       x.x.x.1
        :

のようにして、「www.test.mydns.jp」からWEB002(x.x.x.2)の切り離しをすることができます。

WEBサーバーが復活したら、またそのWEBサーバーのIPアドレスを通知すればDNS情報に含まれますので、ラウンドロビンの仲間入りとなります。

…いかがでしょうか?

まぁ今回は分散の概要だけでしたが、では監視は実際にどうするんだ?というのは、スクリプトを書いたりプログラムができる人なら簡単かと思います。他にも、WEBサーバーを複数にするのでコンテンツの共有はどうするんだ?とか(NFSですかね)、既存のWEBシステムのセッション管理は大丈夫か?とか、ECサイトの場合には、決済システムがアクセス増加に耐えられるかどうか?というようなことも肝にはなってきますけど…

でも、もったいないよりはいいと思うんですけど?

高いロードバランサを使わなくても、これならVPSを必要台数借りるだけでも実現できるので、コストも抑えられるし簡単だと思いますがいかがでしょうか?

よくわからないけど、うちのWEBサーバーも分散したいからやって!!という方は、ぜひともお勤め先(BiG-NET)にご連絡ください。お安くやれるかもしれません。 🙂

□サーバー構築ハンズオン#049のご報告

今年最初のサーバー構築ハンズオン#049を01/30(土)に開催しました。

当日は実習組満員、見学組も飛び込みあり、さらに復習での参加ありと、狭いところではありますがにぎやかな開催になりました。

相変わらずの分量にもかかわらず、皆さん無事にフィニッシュできてよかったです。

来月は温泉合宿OSC東京/春のために、通常の開催はありませんが、OSCなどにも足をお運びいただければと思います。

サーバー構築ハンズオンの次回の通常開催は03/26(土)の予定です。

□【年末】サーバー構築ハンズオン忘年会ご報告

ご報告が遅くなりましたが、昨年12/26(土)に村役場@秋葉原にて、「サーバー構築ハンズオン忘年会&いつもの飲み会 in 秋葉原」を開催しました。

当日は久しぶりにご参加いただいた方、初めての方、いつもの方、入り乱れての大盛況のLT大会となりました。

また今年も開催したいと思いますので、皆さんネタ集めに頑張ってください。:-)

□都市伝説のその後

すっかり書いた気になっていたけれど、ツイッターでつぶやいただけだったみたいなので改めてここにも書いておく。

ちょっと前に書いた都市伝説のその後だけど、該当ユーザーの一人から返事があって、いろいろ聞けました。

で、その人はルーターにYAMAHAのRTXシリーズを使っているのだけど、それを再起動してもらっても古いASIAサーバーに通知に来ていました。

なのでルーターは白。(まぁYAMAHAのRTXですからねぇ)

で、あとは何に設定していますか?ということで聞いたら、Windows 2003 Server とのことでした。

これを再起動すると…あら不思議、古いASIAサーバーへの通知がなくなりましたよ!?

 

というわけで、少なくともWindows 2003 Serverは(Active Directoryの設定次第らしいけど)DNS情報のTTLを無視することが判明しました。

さてさて、ほかのマシン…というか古いOS!?ではどうですかねー?皆さん古いの使ってませんか? 🙂