2017年3月4日土曜日

仮想サーバの冗長化設計

平成28年秋季 問13. 仮想サーバの冗長化設計

問題文「仮想サーバの冗長化設計における可用性評価に関する記述のうち、クラスタソフトウェアを用いた評価として、適切なものはどれか。」

解答群
ア. OS、アプリケーションおよびハードウェアの障害に対応し、障害時に障害が発生していないサーバに自動的に処理を引き継ぐので、切替え時間の短い安定した運用が求められる場合に有効である。
イ. 仮想サーバを停止させずに物理サーバ間で仮想サーバを移動することが可能となるので、メンテナンスなど業務移行の際も含めて業務の停止が全く許容できない場合に有効である。
ウ. 物理サーバに備わっている機能を利用するので、ハードウェアの障害にだけ対応し、障害時に業務停止が許容される場合に有効である。
エ. 物理サーバのリソース(CPU、メモリなど)をブロック単位に物理的に分割し、あるブロックの障害が他のブロックに影響しないようにするので、障害時に業務の停止が許容できない場合に有効である。

まず、多少チート気味だが解答群のそれぞれの用語を見てみることにする。
ア. クラスタリング方式
イ. ライブマイグレーション方式
ウ. 仮想マシン方式
エ. パーティショニング方式

で、答えであるクラスタリング方式というものから調査を始めたところ・・・見事にラビリンスに迷い込んだ。
ただし、この分野の迷宮は実際に仕事で接する機会も多かったりするので恐怖のラビリンスというよりかはワクワクしながらあっちこっち見回っている感じである。

クラスタリングから仮想サーバ、そしてそもそもの仮想化に至るまで迷宮内部に入り込んだ時点で非常に時間を浪費していることに気がついた。そして、都合4日間お気に入り保存せずにブラウジングした結果を酔っぱらって間違ってシャットダウンしてしまった。。。

そこで、まずは「サーバ仮想化」という言葉でGoogle先生に聞いてみた。
広告を除く検索結果2位に目を引くタイトルが表示された。「5分で絶対にわかるサーバ仮想化-IT」というサイトだ。

流し読みしてみたが、具体的な名詞は少なく、概念的に仮想化というのを捉えるのであればよいのかもしれないが、では俺基準で「絶対に理解できたか?」と言うとそうは言い難い。あくまで俺基準ではあるが・・・

かなり長いシリーズで仮想化を詳述してくれていたサイトがあったのだが、シャットダウンしてしまったのが悔やまれる。。。

と・・・しばらく自分が考えそうなキーワード検索したところ、あったっ(*´▽`*)
これは久しぶりに自分をほめてあげたい。

検索ワード「仮想化 パーティショニング」で検索したところ、ASCII.jpさんの「パーティショニングによる仮想化とは?」というサイトが引っ掛かった。

このサイトさんでは、仮想化技術についてかなり詳細に取り扱っていてくれていて、第一回は「さまざまな仮想化技術の基本を理解する」となっている。ここを読み始めたが結構な分量になるのでシリーズ3分の1ぐらいで、
ハッ( ゚Д゚) 結局問題の解答を得られていないっ( ゚Д゚)
と思ったわけである。

上のシリーズは問題を解くだけでなく、最近の大規模な基幹システムなどでは普通に使われている(今働いている企業でも使われている)ものなので、時間があったら読んでみたいと思う。

では、俺が犯した間違いを繰り返さないように、必要な情報だけ拾って問題に解答できる力のみつけれるように、拾い読みして理解できるようにまとめると以下のようになる。

まず、サーバの仮想化によるクラスタリング方式について、言葉の意味は
Wikipediaによると「英語で『房』『集団』『群れ』のこと。」
英語で検索すると次のような意味になる
Dictionary.comより「a number of things of the same kind, growing or held together; a bunch: "a cluster of grapes"
となっている。ブドウの房をイメージすればよいようだ。

これを踏まえて、Enterprise Zin?さんの「クラスタサービスとは?」というサイトを見ると、かなりまとめて書いてくれている。

書いてあることをまとめると、クラスタリング方式には大きく分けて二つ、「アクティブ・スタンバイクラスタ」と呼ばれる方式と「負荷分散クラスタ」という方式に分かれている。

アクティブ・スタンバイクラスタは別の用語でいうと「ホットスタンバイ」と呼ばれる冗長化方式でサーバを2つ用意し、一つは待機系として、稼働系サーバに問題が発生した際にサービスを継続して提供するように構成されたものである。

この方式をさらに発展させたもの(だと思われるのが)負荷分散クラスタと呼ばれるもので、それこそブドウの房のようにいくつものサーバを「ロードバランサー」と呼ばれる負荷分散装置に接続して、ユーザからの要求に対して別々のサーバを割り当てる方法のことを言うそうだ。

次にライブマイグレーション方式と呼ばれる方法はどうだろう?

英語で書くと「Live Migration」で、どうやら言葉だけからすると「生きたまま移植する」みたいな意味であると想像できる。死んだ状態で移植手術が行われたら人間だったら単なる解剖になってしまうが・・・

こちらの内容については「@IT」さんの「Hyper-V 2.0のライブ・マイグレーションの基礎知識」というサイトが非常によくまとめて下さっている。

このサイトでは、ライブマイグレーションという技術の前身である「クイック・マイグレーション」という方式も含めて触れてくれており、いかにしてサーバ業務の移行に伴うシステム停止の時間を短くしているかを教えてくれている。

簡単にまとめてしまうと、ある一つのサーバの業務を完全に他のサーバに引き継ぐことを考えるとクイックマイグレーションでは
1.サーバで稼働しているメモリの内容をコピーする
2.サーバで稼働しているストレージ(HDDなど)の内容をコピーする
3.業務を引き継ぐ
という内容になるが、1.と2.を行うためにはサービスの要求を停止しないと同期が取れないのでシステムの停止がその分必要になる。

そこで、ライブマイグレーションでは、
上の2.で行っているストレージのコピーを必要なくするためにストレージをさらに別の場所に分けてしまう ということを行い、
1.についてはコピー作業を段階的に行って完全に同期が取れたタイミングで業務を引き継ぐということを行っている
ということらしい。

上手くまとまっているかわからないが、これ以上詳しい内容(もしくは俺が言っている内容が間違っている場合)は上のサイトに詳しく載っているので参照してほしい(つまり丸投げである)。

最後にパーティショニング方式については・・・
Think ITというサイトさんから「仮想化~実装技術は様々」というページに書かれているパーティショニングの項目がわかりやすい。

今日でこの項目については終わりにしたいためやっつけてしまうが、Partitionに分けて仮想化を行っているものだと思われ、サーバ資産を物理的にせよ論理的にせよ、分けて機能を提供するものらしい。

実務で色々な技術に触れる機会が多い人は、ASCIIさんの「パーティショニングによる仮想化とは?」を参照するとわかりやすいと思う。

はっきり言って俺にはわからなかったが・・・w

ここまで調べて問題を見返してみると、確かに書いてあることは全く別の内容を示していることはわかった。

ただし、問題文のウ.だけは本当に理解不能だ。
******************************
物理サーバに備わっている機能を利用するので、ハードウェアの障害にだけ対応し、障害時に業務停止が許容される場合に有効である。
******************************
一体何の役に立っているというのだろうか・・・

0 件のコメント:

コメントを投稿