ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

プログラミング部コミュのネットワーク構築

  • mixiチェック
  • このエントリーをはてなブックマークに追加
オープンソースを駆使して分散サーバを構築しようと思っています。
特定の中規模サービス以外に、負荷的には1台で十分まかなえるものを障害対策として2台にするのにも使いたいです。

1.ロードバランサーでIP分散を行う
2.サーバ間で特定ディレクトリのディスク同期を行う
3.WEB,DBを両方分散
4.障害時にホットスワップを行うようにする。
5.監視、障害復旧をできる限り自動化する
6.安定したバックアップを行う

商用ロードバランサーと商用のNASを使って複数台構成のシステムをいくつも構築してきましたが、オープンソースを使ってうまく仮装化したものを作りたいです。
プログラム開発時は分散であることを気にせず、かつ堅牢で性能が良いシステムをめざす。

1.ロードバランサーでIP分散を行う
・LVSを用いる。ディスクレスにして障害率を下げる。
・PCはもちろん、携帯セッションもサポートしたい。
・同じIPでもドメインで分散を行う。
商用ロードバランサーでスペックを表記してるものが見あたらなかったのですが、商用のものは結構低スペックではないかと考えています。

2.サーバ間でディレクトリ毎のディスク同期を行う
・rsyncで1方的な同期は行えるが、両方の書込をマージする方法はまだ思いつかず。
・オープンソースのものがあれば検討。

3.WEB,DBを両方分散
・DBはMySQLでマルチマスタにする。

4.障害時にホットスワップを行うようにする。
・DBをマルチマスタにしておき、プログラムにてDB死活により接続先を自動分岐するようにしておけば障害が起きても稼働する。

5.監視、障害復旧をできる限り自動化する
・監視はnagiosで行う。LVSサーバが監視サーバになると、セキュリティで届かないサーバにも通信が行えて良い気がしている。
・アラートはメール通知で行う。単純な解析を行って復旧を行うプログラムを設置したい。
 例えば、Javaの場合はサーブレットの障害がほとんどで、再起動によりひとまずの復旧は行える。

6.アマゾンE3を要検討。または、バックアップマシンを用意し、rsyncで差分バックアップを行う。

1ラックで複数のサービスをプラットフォームのように扱えるといいなと。
消費電力もかなり気をつけてるのですが、省電力設計のCPU使わない限り大差つかないので正直気をつけるの疲れました。2系統の電源を気をつけて配線するようにします。(クリティカルなサーバのみ最大電源を下回るレベルで1系統につなげて、残りを1系統につなげるなど)
で、シミュレーションとして、xen、パラレルズ、VMwareあたりを使ってぐりぐり試行錯誤してみたいです。Windows上でネットワーク構築テストできるのないですかねぇ。

コメント(6)

ディスク同期→NFS
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/367usenfs.html

ルーター
http://www.vyatta.com/download/index.php
うーん、cisco製品より性能が良いという噂のvyattaですが、どうなんでしょうね。こうなってくると、vyattaやlvsに最適なディスクレス小型マシンが欲しいところ。
ciscoのルータがHDD替わりにフラッシュメモリ使っていて、小容量のSSDでいいのかもしれないですが。
ciscoはフラッシュメモリの書換寿命ってどのくらいなんでしょうね。長くもつために極力書換は発生しないようにしてると予想してますが。
LVS1,LVS2,WEB1,WEB2
で、仮想IPによるLVS分散とNAT接続でWEB分散の構成が確認できました。
・LVS2がLVS1を監視して、LVS1が死んだらLVS2がリアルタイムで処理を行う
・WEB1,WEB2に分散して配信し、片方が死んだらリアルタイムで生きてる方だけに配信

□次のステップ
固定IP8の回線を使うんですが、unnumbered接続によって全てのIPをLVSに流して、LVSがIP振り分けを行うようにする実験を行います。
・ルーターが故障すると全部死んでしまうため、LVSがルーターの役目を行うようにしたい
・WEBの監視状況により、アラートを通信する機能もLVSに持たせる
・16ポート以上、大量通信可能なスイッチングHUBを使って、マシンを追加していくだけでいいシンプル構成にする。
http://www1.jp.dell.com/content/products/productdetails.aspx/pwcnt_2716?c=jp&l=ja&s=bsd&cs=jpbsd1

USEN IP8 100MB占有回線

高性能スイッチングHUB

LVS,LVS,WEB,WEB・・・サーバ群

・LVSはネットワークブートを行ってディスクレスで動作可能にする。
・ネットワークインストールをできるサーバを用意する。このサーバにrpmなどパッケージも入れて、大抵このマシンからサクサクセットアップできるようにしたい。
・ネットワークマウント
・内部で回線帯域制限をかける

ウノウでは、ディスクシステムでLVMは遅いので安定したext3を使っているという記事があったのですが、実際どうなんでしょうか。かなり気になってます。
ウノウのカンファレンス資料
http://www.php.gr.jp/seminar/20070901/data/php-conference-2007.pdf
このカンファレンス出席者のメモ
http://labs.uechoco.com/blog3/2007/09/service_management_unoh_edition.html

あと、もうひとつ電力オーバーしないことが非常に大事なんですが、なるべく省電力マシンを買うのと電力を2系統にする方針。

ネットワーク構築おもしろい!
だいぶ慣れてきました。
ロードバランサー2台でハートビートしたり、
PXEブート方式もできるようになりました。

□電力
1Uサーバの消費電力を1台ずつ計測しているんですが、省電力とうたってるサーバでも負荷かかってない状態で最低100Wはかかってしまってます。
ただ、100%負荷をかけても150W-200Wだったりします。メーカーは400Wと出してるサーバでも実際はそんなに電力食いません。

PXEブートは使いこなしたいですね。
インフラ面を安価にハイレベルなものを作れるようになると、サービス開発が気楽になるので楽しくなってきます。
Atomマシンがネットワークカード認識しない。
http://d.hatena.ne.jp/hkano/20081014/1223910948
同じ問題ではまってます。これでやってもifconfig -aでeth0が出現しません。
CentOS5.3のあとCentOS5.2を入れて失敗中。
「開発ツール」と「GNOME環境」を入れたら初期状態で認識したという情報もあるのですが、「開発ツール」と「GNOME環境」はインストールしています。
CentOS5.2のマイナーバージョンで違うんですかね。
Ubuntuでは問題なく動きました。
Ubuntuはデスクトップのイメージが強かったんですが、サーバとしてちょっと注目しはじめています。
http://japan.cnet.com/news/biz/story/0,2000056020,20388664,00.htm?ref=rss
「EC2ライクなクラウドコンピューティングを実装するための機能として、Eucalyptusプロジェクトの成果も取り入れる。」
デュアルAtomマシン、LANのデバイス入れてCentOS5.2でも動きました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

プログラミング部 更新情報

プログラミング部のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング