FJcloud実践
サーバーの可用性をさらに向上させる「サーバーセパレート機能」を使う
サーバーを冗長化して単一障害点(SPoF: Single Point of Failure)をなくすのは、システムの可用性を高めるための基本的なアプローチです。しかしクラウド環境においては、物理的な基盤まで考慮しなければ、真の意味での高可用性は実現できません。本記事ではこの課題を解決できるFJcloud-Vの機能である「サーバーセパレート機能」について解説します。
サーバー冗長化の落とし穴
ロードバランサーの記事で紹介した通り、ロードバランサーを使用することで、複数のサーバーを並列に並べ、アクセスを分散させることができます。サーバーの数を増やせるということは、高負荷に耐えられるというだけでなく、可用性を上げることにも繋がります。システムを長期間運用していると、どうしても意図しないサーバーダウンは起こってしまいます。サーバーが1台しか存在しなければ、そのサーバーがダウンした時点で、システムは停止してしまいます。ですがサーバーが2台あれば、仮に1台のサーバーが停止しても、残ったサーバーでシステムを動かし続けられるというわけです。
もちろん2台のサーバーが同時にダウンする可能性もあるでしょう。ですがサーバーの稼働率を99%だと仮定した場合、1台では以下の表のようになります。
サーバーAの状態 | システムの状態 | この状態となる確率 |
---|---|---|
正常 | 正常 | 99% |
停止 | 停止 | 1% |
そしてこのサーバーを2台に冗長化した場合は、以下の表のようになります。
サーバーAの状態 | サーバーBの状態 | システムの状態 | この状態となる確率 |
---|---|---|---|
正常 | 正常 | 正常 | 98% |
正常 | 停止 | 正常 | 0.99% |
停止 | 正常 | 正常 | 0.99% |
停止 | 停止 | 停止 | 0.01% |
このように、サーバーが二台同時にダウンする可能性は非常に低いことがわかります。これが冗長化による可用性向上の基本的な考え方です。
クラウドを使っているユーザー視点では見落としがちですが、ここで重要なポイントがあります。それはクラウドも事業者側から見れば、事業者のデータセンターにあるオンプレミス環境だと言うことです。クラウドと言えども、中身は一般的なオンプレミス環境と何ら変わらず、内部では当然ハードウェア障害も発生しています。
これの何が問題かと言うと、ハードウェアに障害が発生した場合、その上で動いている仮想サーバーはすべて停止してしまうという点です。クラウド上に起動した仮想サーバーは、当然データセンター内のどこかにある物理サーバー上で動作しています。仮想マシンは通常、その時点でリソースに空きのある物理サーバーに割り当てられます。ですがタイミングによっては、自分が起動した複数の仮想サーバーが、同一の物理サーバーを引き当ててしてしまうこともあるのです。このようなケースでは、いくらクラウド上でサーバーを冗長化していても、その裏側にある物理サーバーが単一障害点になってしまいます。
つまり真にサーバーの可用性を向上させるためには、仮想サーバーが収容される物理サーバーまで意識する必要があるのです。
「サーバーセパレート機能」とは
FJcloud-Vの「サーバーセパレート機能」は、2台の仮想サーバーを、それぞれ異なる物理サーバー上で起動することを保証する機能です。この機能を利用すれば、物理ホストが単一障害点となることを回避でき、真の意味でサービスの可用性を向上させることができます。
サーバーセパレート機能を使うには
サーバーセパレート機能を利用する手順を紹介します。なおあらかじめ、サーバーセパレート機能を使うサーバーを2台、起動しておいてください。
サーバーセパレートルールの作成
FJcloud-Vのコントロールパネルにログインしたら、「コンピューティング」を開き、左ペインから「サーバーセパレート」を選択してください。「サーバーセパレートルール作成」をクリックします。
サーバーセパレートルールの作成画面に移動します。まずは基本的な設定を入力してください。
- サーバーセパレートルール名: 複数のサーバーセパレートルールを区別するための名前です。わかりやすい名前をつけましょう。
- ゾーン: そのサーバーセパレートルールが属するゾーンです。対象のサーバーを起動したのと同じゾーンを選択してください。
- 任意のメモを記述できます。
入力ができたら「サーバー選択へ」をクリックします。
選択したゾーンで起動しているサーバーがリストアップされますので、サーバーセパレートルールを適用したいサーバー2台にチェックを入れて「確認へ」をクリックします。
サーバーセパレートルールの内容が表示されますので、問題なければ「作成する」をクリックします。
ルールに名前を付けて保存します。
3台以上のサーバーを異なるホストで起動するには
サーバーセパレートルールは2台のサーバーでしか設定できません。そのため3台以上のサーバーで冗長化を行いたい場合は、複数のルールを組み合わせる工夫が必要になります。
例えば、サーバーA、B、Cという3台の仮想サーバーがある場合、
- AとBをセパレートルール1として設定
- BとCをセパレートルール2として設定
- CとAをセパレートルール3として設定
このように3つのサーバーセパレートルールを作成することで、3台のサーバーがすべて異なる物理ホスト上で稼働するよう設定できます。
まとめ
FJcloud-Vのサーバーセパレート機能は、クラウドであるにもかかわらず、物理的な構成までを考慮した設計を行える機能です。ロードバランサーを利用した冗長化だけでは対応できない物理ホスト障害のリスクを軽減し、サービスの継続性をさらに高めることができます。なおサーバーセパレート機能の使ったインフラ構築例として、サーバーセパレートパターン