冗長化とはなんなのか

冗長化とは簡単に言うとシステムの一部で障害が発生ししてもシステムの機能を継続して使用できるようにすることを指しています。

例えば以下のようなシンプルなサーバシステムがあったとします。

f:id:setomoki:20161027142157p:plain

 

初めにこのシステムで冗長化を考える場合このシステムで発生しうる障害を考えます。

このシステムでは以下のような障害が考えられます。

  • ルータの故障によりシステムが停止する
  • サーバの故障によりシステムが停止する

ルータ・サーバどちらか片方でも故障してしまった場合システムが停止してしまうのでこのサーバシステムでは冗長化できているとは言えないでしょう。

 

そこでルータやサーバが故障してもシステムが停止しないように予備機を追加します。

予備機を使いした場合は以下のような構成になります。

f:id:setomoki:20161027143551p:plain

 

これで故障が発生した場合でも予備の機材でシステムの運用ができます。

しかし現状では予備を用意しただけでどのように予備の機材に切り替えるかの検討をしていません。

例えばルータが故障した場合は単純にルータの線をつなぎ替えるだけで普及できるようにしておく。

この場合予備機は普段使わずに現行機が故障した時のみ稼働させることをコールドスタンバイと言います。

ではWebサーバが故障した場合でもルータと同じ考えで切り替えができるでしょうか。

Webサーバの場合ルータと違いサイトの内容など日々Webサーバ内では更新があります。そこでコールドスタンバイを用いてしまうと内容が古かったりしてしまいます。

そこでWebサーバなどでは常時予備機の電源をつけておき現行機と同じ内容にしておく必要があります。この運用形態をホットスタンバイと言います。

 

このように予備機に切り替える部分も考えておかないと冗長化することができません。

 

ここまでシンプルな例で冗長化について考えてきました。

冗長化するためのステップをまとめると

  1. 障害を想定する
  2. 障害に備えて予備の機材を準備する
  3. 予備の機材への切り替えたかを整えておく

となります。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

この記事はほぼサーバなどを触ったことがない人物が学んだことを整理するために書いていますので間違いなどが多々あると思います。間違いなどありましたら是非コメントなどで教えていただけると幸いです。