機能と技術からわかる!システム基盤の実力

第1回サーバ仮想化の鍵を握る「アプリケーション視点」①サーバ仮想化の「理想と現実」

はじめに

この連載では、大規模システム基盤としての実績をもつ、日立製作所のSOAプラットフォーム「Cosminexus(コズミネクサス⁠⁠」のホワイトペーパーの紹介を通じて、システム基盤の信頼性を確保するための技術や、全体最適に向けたシステム構築に取り組むための考え方を紹介していきます。

第1回目のテーマでは「サーバ仮想化」について取り上げます。

サーバの仮想化とは?

現在のシステムでは、⁠サーバ仮想化⁠⁠、⁠デスクトップ仮想化⁠⁠、⁠ストレージ仮想化」などのさまざまな適用箇所での仮想化技術の利用が始まっています。仮想化のもたらす恩恵は数多く、導入の目的は分野によって異なります。今回から3回にわたって「サーバの仮想化」を取り上げます。サーバ仮想化が求められる背景、適用メリット、運用時における課題の紹介を通じて、仮想化導入を成功に導くために考えておくべきポイントとなる「アプリケーション視点での仮想化」について解説します。

サーバ仮想化がなぜ必要なのか?

Webビジネスでは24時間365日サービスを提供することがあたりまえとなってきました。このようなシステムではシステムダウンやレスポンスの低下がビジネスに大きく影響を与えます。システムの信頼性を保つためには、複数台のアプリケーションサーバやDBサーバによって負荷分散を実施するのが一般的です。

しかしWebビジネスは急激に拡大することもあり、処理能力の向上や別システムの追加のために、アプリケーションサーバやDBサーバの台数を増やして対応することがあります。そして台数増加による購入とメンテナンスのコストが、サーバの台数分かさむ問題が生じます。この問題を解決する方法として、サーバ仮想化を利用したサーバ集約が、台数の削減可能な技術として注目されています。

図1 サーバ仮想化でハードウェアの集約を行う
図1 サーバ仮想化でハードウェアの集約を行う

サーバ仮想化の概念

サーバ仮想化とは、ハードウェア上に複数のOSを仮想的に稼働させる機能をもつハイパーバイザを置き、システムの構成要素であるハードウェアを仮想的に分割・統合し、その上でソフトウェアを動かすことを可能にする技術のことです。仮想化の導入により、複数のハードウェアを統合して1つの仮想環境に集約できます。1つのハードウェア上に複数の OS・ミドルウェア・アプリケーションの実行単位である仮想サーバを立ち上げることが可能なのです(図2⁠⁠。

図2 仮想化のイメージ
図2 仮想化のイメージ

サーバ仮想化における課題

サーバ仮想化の導入は、一般に「設計フェーズ」⁠構築フェーズ」⁠運用フェーズ」に大きく分けられます。

①設計フェーズ
仮想化対象のサーバのスペックや負荷状況から、仮想サーバに割り当てるリソースや仮想サーバの台数を検討します。仮想環境の場合は、1つの物理サーバに複数の仮想サーバが同居するため、業務アプリケーションの特性を考慮したサーバ集約計画と、ピーク時を想定した性能見積りが必要です。
②構築フェーズ
設計フェーズでのサイジング通りに仮想環境サーバのイメージを作成し、OS、ミドルウェア、アプリケーションのセットアップを各仮想サーバで行います。
③運用フェーズ
構築した仮想サーバを実際に動作させます。動作時に仮想サーバのリソース使用状況を監視し、高負荷時にはスケールアウトなどの対策を行います。また、アプリケーションのエンハンス時には、アプリケーションの入れ替えを行います。

このうち、利用側にとって影響が大きいのが構築・運用フェーズでの課題です。これらの課題について考えてみましょう。

仮想サーバの構築/運用時の課題

最初に仮想サーバの一般的な構築・運用手順を紹介します。

仮想サーバ構築

①仮想サーバのマスタの構築
物理サーバ上に、仮想サーバのベースとなるマスタを構築します。マスタにOS、ミドルウェアのインストールを行います。
②各仮想サーバへのマスタのコピー
マスタを各仮想サーバへコピーします。
③各仮想サーバの設定
それぞれの仮想サーバの環境に合わせて環境設定を行います。各仮想サーバ固有の値(ホスト名、IPアドレス、MACアドレス等)の書き換えを行います。
④アプリケーションのデプロイ
各仮想サーバ上にアプリケーションを構築します。定義ファイルなどを利用し、各仮想サーバにアプリケーションの環境構築を行います。
⑤ロードバランサの設定
ロードバランサを設定し、各仮想サーバでの負荷分散、クラスタ環境を構築します。

このように、実際の仮想サーバの構築では、仮想化ソフトが対象とするOSやOS周りの設定以外の作業が多く発生します。

図1 一般的な仮想サーバの構築手順
図3 一般的な仮想サーバの構築手順

仮想サーバ構築時の課題

仮想サーバの構築では、次の2つが課題となります。

①仮想サーバのイメージ複製とは別にサーバ別設定が必要
現状の仮想化ソフトは、OSおよびOS周り(ネットワークやストレージ関係)のみがセットアップの対象で、業務アプリケーションのデプロイやロードバランサの設定まで面倒は見てくれません。そのため、これらの設定は個別に行う必要があります。仮想サーバの台数が増えれば増えるほど、構築に手間と時間がかかります。
②作業ミス防止のチェック工数が必要
業務アプリケーションやロードバランサの設定を手動で行うと作業ミスが発生するおそれがあります。このため、作業ごとにチェックが必要となります。

仮想サーバの運用

運用時の作業としては、障害対応やサービス拡大に伴うアプリケーション更新作業、処理量の変化に応じたスケールアウトなどの負荷調整などがあります。運用の中でもよく行われる更新作業の一般的な手順を次に示します。業務アプリケーションの更新は、一般的にサービスを稼働させたままクラスタを構成するノードごとにアプリケーションを更新していくローリングアップデートが採用されます。

①ロードバランサへのリクエスト閉塞
対象となる仮想サーバにロードバランサから業務処理を振り分けられないよう、ロードバランサに対してリクエストの閉塞を指示します。
②アプリケーション停止
更新のためアプリケーションを停止します。
③アプリケーション・定義情報の更新
アプリケーションおよびアプリケーションの定義情報を更新します。
④アプリケーション起動
更新後のアプリケーションでサービスを開始するために、アプリケーションを起動します。
⑤ロードバランサへのリクエスト閉塞解除
ロードバランサに対しリクエストの閉塞を解除を指示し、業務処理を受け付けるようにします。
図4 従来のアプリケーション更新の流れ
図4 従来のアプリケーション更新の流れ

このようなアプリケーション更新処理は仮想化ソフトではサポートされていないので、個々の環境に対して作業を繰り返し行うのが現状です。

仮想サーバ運用時の課題

運用では、前述のアプリケーション更新時のほか、業務システムの起動/停止時、およびシステムダウン時に課題があるため、サーバ仮想化されたシステムでは下記の点に注意を払う必要があります。

①アプリケーションの更新に手間がかかる
業務アプリケーションをローリングアップデートで更新する場合、1台ずつ更新作業が必要です。このため、手間がかかり、作業ミスによる手戻り作業が発生するおそれもあります。
②業務システムの起動/停止に手間がかかる
日々の運用で特定の業務システムの起動/停止を行う場合、停止するシステムが対応する仮想サーバを把握した上で、OSや業務アプリケーション1台ずつに対して操作を行う必要があります。仮想サーバの台数が増えるにつれて、大きな手間となります。
③システムダウン時、影響範囲の特定や対策に手間がかかる
仮想化ソフトは、業務アプリケーションの運用管理は行いません。そのため、物理サーバに障害が発生した場合、物理サーバと業務アプリケーションの関係を把握する必要が生じ、影響範囲の特定や障害対応をスムーズに行うことができません。

最後に

今回は、サーバ仮想化から得られるメリットと、サーバ仮想化環境の構築、運用での課題について挙げました。次回は、こうした問題をCosminexusがどのように解決するのかを紹介します。

おすすめ記事

記事・ニュース一覧