Blog ブログ

サーバ冗長化で実現する快適安眠ライフ! ~単一障害点~

皆様、こんにちわ。

CCSでプログラマをやっている武藤と申します。

前回に引き続き、今回もサーバの冗長化について書いていきたいと思います。
今回のテーマは『単一障害点』です。

◆『単一障害点』とは?

単一障害点(たんいつしょうがいてん。英: Single Point of Failure, SPOF)とは、その単一箇所が働かないと、システム全体が障害となるような箇所を指す。

・・・とWikipediaには書いてあります。
単一障害点

例えば、あるシステムがサーバ1台だけで動いていたとします。

そのサーバが止まってしまったらシステムは全く機能しなくなるため、このサーバは「単一障害点」であると言えます。

◆単一障害点を無くす為には?

上記のケースで単一障害点を無くす為には、稼働するサーバに対して何らかの対策を行う必要があります。

例えば、稼働中のサーバに対して、バックアップとしてもう1台サーバを用意しておき、故障が発生した段階でバックアップ用のサーバに切り替える、等が考えられます。
(このように、障害発生時に何らかの代替システムに切り替える仕組みをフェイルオーバーといいます。)

一例として、

1. ロードバランサを通して稼働中のWebサーバへリクエストを送信する。
2. Webサーバから正常なレスポンスが返ってこなかった場合、バックアップサーバへリクエストを送信する。

という手順で(大雑把ですが)実現出来ます。


◆これで安心・・・と思いきや

さてこれでひとまず単一障害点がなくなりました。
・・・と見せかけて、実はまだ問題が残っています。

フェイルオーバーを実現するために導入したロードバランサです。
これが故障してしまったらWebサーバと通信する仕組みが成り立たなくなるため、新たな単一障害点となってしまいました。

これを解決するため、複数のロードバランサをクラスタリングし、1つが故障しても動作出来るようにする必要があります。

構成は下記のようになります。


◆というわけで

今回はシステムの冗長性を向上させる仕組みとして、
・Webサーバのフェイルオーバー
・ロードバランサのクラスタリング
を考えてみました。

どちらも『単一障害点』を無くすことで、稼働率を上げるための施策となります。
勘の良い人はお気づきと思いますが、Webサーバやロードバランサだけではなく、間に介しているルータやハブ等の機器も単一障害点になり得るため、全てを無くすのはなかなか骨が折れます。
ただ少しでも停止しにくいシステムを構成するためには避けては通れない道ですので、何かしらの対策をご検討してみてはいかがでしょうか。

また、クラウドクリエイティブスタジオでは絶賛エンジニア募集中です。
興味のある方は、是非、以下のリンクをご覧下さい。
採用情報

今回は以上となります。それでは皆様、サーバ冗長化で快適な安眠ライフを!