■想定
シンプルなWebアプリケーションサービスをイメージして組んでみました。
※障害が発生した場合にも継続してサービスを提供できるように高可用性を意識しました。
■アーキテクチャ
■意識したポイント
○ELB
・ELBを設定することで、片方のEC2にだけトラフィックがかからないよう負荷分散を実現。
これによりシステムダウンでサービス提供が止まるといったケースを避けれると考えました。
・EC2で障害が発生している場合、ELBからEC2へのヘルスチェックにエラーがます。
この場合、ELBはエラーとなったEC2に通信は振り分けず、正常なEC2にのみ通信を振り分けるため、継続的にサービスを提供することができます。
○EC2
・障害が発生しEC2が停止した時に対応できるように、別アベイラビリティゾーンにもう1つEC2を設定しています。(※マルチAZ構成)
○RDS
・EC2同様マルチAZ構成で組んでおります。
シングルAZだとユーザ側でデータの復元が必要なこと、再起動までのダウンタイムが発生することからマルチAZとしました。
マルチAZではマスターのRDSに障害が発生した場合に、スタンバイにフェイルオーバーが行われます。
マスターとスタンバイのデータは常に同期されているため、ユーザ側でのデータ復旧は必要ありません。
これにより、シングルよりダウンタイムの時間が短いためサービス復旧までが早くなります。