プロフィール

けい

Author:けい
公開したWebサービス・アプリ一覧はこちら

※2014年12月、私が個人で開発したWebサービス・アプリへの
累計アクセス数は8億を超えました。
負荷対策頑張ります。日々精進していきます!!


■■■ 業務経歴 ■■■
社会人1年目:携帯電話開発。画面周りを1年間
2年目 :海外向け携帯電話ミドルウェア開発
     ブラウザとプロトコルスタック周り
2年目後半~:携帯電話の通信専用チップ開発
3年目:カーナビ。画面周りの開発
3年目後半~:BDビデオカメラ
     組み込みLinux カーネルと
     ドライバの開発。
4年目12月:プロジェクト途中で退社
~ここまではC、またはC++で開発~

~ここからJavaがメインの開発~
4年目1月:Web系の会社に転職
       ~4ヶ月間の研修
5年目5月:製造業向け生産管理システム開発
6年目9月:証券会社向けシステム開発
7年目10月~携帯電話向けコミックサイトの運用・開発
8年目12月:プロジェクト途中で退社

~ここからPHPがメインの開発~
8年目1月~仲介手数料が無料の不動産屋の社内SEに転職
交渉しほぼ完全に裁量労働が可能な立場になる。
業務内容はシステム全般ですが、
最近はSEO対策の作業が多いです。
現在14年目 まだ、しばらくはこの会社に居るつもりです。

あと、全ての記事がリンクフリーです。

最近の記事

過去ログ

全ての記事を表示する

全ての記事を表示する

カテゴリー

FC2カウンター

RSSフィード

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.--    [ Myカテゴリ:スポンサー広告 ]

仮想化のススメ

今日は仮想化技術についての話です。
最近、自宅のLinuxでは結構な数のサービスが動いているのですが、
中には結構不安定なサービスもあります。
そんな不安定なサービスが引き起こすトラブルと、運用方法について説明します。

1.不安定なサービス
 Javaで動いているアプリケーションならばVM上で動くため、
落ちたとしてもOSを巻き込んで落ちることはないのですが、
オープンソースの有名なアプリケーションのほとんどがネイティブコードであるゆえ、
中にはOSごと巻き込んで落ちるアプリケーションもあったりします。

枯れたアプリケーション・技術だけを使っていれば、そうそう落ちることもないのですが、
最新の物を使う場合には、それだけリスクも増す傾向にあります。
予算が許せば、枯れたアプリケーションを動かすサーバーと、
最新のアプリケーションを動かすサーバーを分けたいところですが、
個人の開発者だと中々そういうわけにも行きません。(電気代とかもね・・・)

2.バックアップ
 バックアップに関しても同様で、ファイルのバックアップはcpやrsyncで簡単にできますが、
動作中のOSを含むルートパーティションのバックアップをやろうとすると、
バックアップ+復旧にはかなり手間がかかります。

完全に整合性が取れた状態でのバックアップということになると、
一度OSを落としてから、バックアップする必要性があります。
当然、バックアップにも復旧にも時間を要します。

つまりルートパーティションはバックアップには不向きなわけです

じゃあ、ルートパーティションにはRAID1使えよと思う方がいるかもしれませんが、
そもそも安いマザボのRAID機能は生死、復旧がBIOS設定画面からしか
できないものが多いのです。

確認できるマザボであっても、Windows以外のOSでは確認する方法が無かったりします。
個人の開発者が趣味でやっている開発で毎日とか、毎週再起動して
HDDの生死確認なんてやりたくはありません。

また、シリンダ数が同じHDDでないと復旧に使用できないため、
数年後に1台壊れたときに、もはやそんな古いHDDが売っていない可能性は
非常に高いのです。
あらかじめ買っておくのも一つの方法ではありますが、
RAID1で既に2台に加えて+バックアップ用のHDD数台となると予算が厳しい。
また、RAID1はオペレーションミスには対応できないので、
オペレーションミスについても考慮しなければなりません。

そんな嫌な前置きばっかりではありますが、上記の様な問題をほとんど解決してくれる
素晴らしいソリューションが仮想化技術なのです。
以下に仮想化技術のメリット・デメリットを述べます。

メリット
・一つのOS上(以下「メインOS」と呼ぶ)にいくつものOSを立ち上げることができる
 そのため、安定しているアプリケーションが動くサーバーを「サブOS1」、
不安定なアプリケーションが動いているサーバーを「サブOS2」として立ち上げることができるのです。
また、たとえ「サブOS2」が落ちるにしても、「メインOS」を巻き込んで落とさないため、
「サブOS1」はそのままサービスを提供し続けることができます。
このことから「1.不安定なサービス」で書いた問題は解決されます。

・バックアップが容易
 バックアップは非常に簡単です。動いている「サブOS」を止めてコピーするだけ。
コピーが終わったら、もう一度「サブOS」を起動させます。

・環境全てをRAIDの管理化に置ける
 ソフトウェアRAIDの上に仮想環境を載せることができます。
冗長性があるRAIDレベルを設定し、どれか一台でもHDDが死んだらメールを投げるように
設定しておけばよいのです。

また、仮想化技術の特徴というわけではありませんが、
ソフトウェアRAIDなのでHDDは当然既存のHDDには非依存です。
シリンダ数なんて関係なく、その時点で一番良いと思われるHDDを自由に選び、
RAIDアレイに追加することができます。

では「メインOS」のバックアップはどうするかというと・・・「メインOS」のバックアップはしません。
大事なOSは全て仮想環境の上にあるので、「メインOS」のバックアップは不要なのです。
あらかじめ余っているHDDとかUSBメモリとかに、OSをセットアップしておいて、
「メインOS」が壊れたら、そのまま入れ替えます。
その後、仮想環境を立ち上げれば復旧終了です。
よって、「メインOS」にはできるだけ設定をしない、書かない環境にすることが大事です。

デメリット
・遅い
 やはり仮想化している以上、宿命になってしまうのですが、
速度は「メインOS」で動かしているときよりは遅いです。
仮想化ソフトウェアによって違うのですが、大体5~30%の速度の低下があるようです。

・仮想環境自体がメモリを食う
 仮想環境自体もメモリを使うので、「サブOS」の数だけメモリは使います。
考えたくもありませんが、Vista上でVistaを動かした日にはもう・・・
不要なサービスはガンガン切ってしまうことを推奨します。

仮想環境作りの考え方
 これはあくまで私の考え方なのですが、仮想環境上にデータを持たせるべきではないと思います。
なぜならば、仮想環境を丸ごとバックアップする際に、
容量が大きいとそれなりに時間がかかってしまうからです。

例えばDebianならばインストール時の最小環境+Apacheで150MBくらいしかHDDを使いません。
これならばバックアップもあっという間に終わりますが、htmlのデータなどを仮想環境上に
持たせてしまうと、バックアップに時間がかかってしまいます。
また、仮想環境上にあるファイルについてはインクリメンタルバックアップができません。

データは「メインOS」以外のHDD上に置き、
NFSで使用するのがベストなのではないかと思います。
NFSが「メインOS」上で動くことになりますが、仮想環境上で動かすよりは
より管理がしやすいと思います。

この辺りの実運用の考え方については、もっと調査が必要です。

※2009/07/21 追記
仮想化にOpenVZを使用すれば、データを「メインOS」にそのまま配置できるため
データの持ち方としてはベストだと思います。
スポンサーサイト
コメント(0)   2008.08.24    [ Myカテゴリ:試してみた ]

コメントの投稿













管理者にだけ表示を許可する

Template Designed By
ぐらいんだぁ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。