BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】Amazon EC2の冗長構成を解説してみた!

はじめに

こんにちは!BFT名古屋支店・新卒のゴンザレスです。

AWSについてブログを書くのも3回目になりました。

まだまだ分からないことだらけです。。。日々アウトプットあるのみですね。

さて、今回は冗長構成について紹介します。

冗長構成とだけ聞くと何となく複製することかなとイメージがつきました。 しかし、実際にシステムを構築するとどうなるのかなと思ったことがあります。

そこで、AWSで実際に構築した冗長構成を例に、冗長構成について解説していきます。

AWSだと冗長化ってこんな風にできるのかと思ってもらえたら嬉しいです。

図を使いながら解説していきます。

前提

Amazon EC2を2台用意する。

AWS LambdaはEC2と連携している。

・ホットスタンバイ方式をとる。

AWS冗長構成の全体像

今回はメインのAmazon EC2のサービスが起動していない時に、サブで用意したAmazon EC2のサービスが起動するという冗長構成を取ります。

EC2の電源はAB共に常にオンにした状態で、冗長構成でAmazon EC2のサービスの起動切り替えを行います。

この方式をホットスタンバイと言います。

作成した冗長構成を図にすると以下になります。

全体図を見ただけでは分かりづらいので、順番に説明していきます。

まずは正常系の動作についてです。メインのEC2をA、サブのEC2をBとします。

以下の図の通り、AWS LambdaはEC2と連携しています。

正常に動作している場合、AのEC2のサービスが常に起動した状態で、AのEC2がAWS Lambdaからの命令を受けます。

基本的にAのEC2のサービスが正常に起動している時、Bのサービスは必ず停止している状態です。

正常な状態を図に表すと以下のようになります。

次に異常系の動作についてです。

何らかの影響でAのEC2のサービスが起動しなくなった際、異常とみなされ、代わりにBのEC2のサービスが起動するような仕組みを作ります。

AのEC2のサービスが起動していない時に、BのEC2のサービスが起動AWS LambdaがBのEC2に命令を実行するという状態が最終的に目指す状態です。

この状態が冗長構成となります。

冗長構成全体図の解説

初めに、全体図の①の動作について説明します。

AのEC2のサービスが作動していない場合、まずEC2のサービスが正常に起動していないことをAmazon CloudWatchが検知します。

異常を検知したAmazon CloudWatchがAmazon EventBridgに連携、さらにAmazon EventBridgがAWS Lambdaに連携します。

次に、Amazon EventBridgから連携されたAWS Lambdaの動作を説明します。

全体図で言うと、②の動作にあたります。

今回の場合、Amazon EventBridgから連携されたAWS Lambdaに「BのEC2のサービスを起動させる」「AのEC2に命令を出していたAWS Lambdaの連携先をBのEC2に変更する」という命令が実行されるようプログラムしておきます。

ここで、AのEC2に命令を出すAWS Lambdaを「AWS Lambda_1」、Amazon EventBridgと連携するAWS Lambdaを「AWS Lambda_2」とします。

Amazon EventBridgから連携を受けたAWS Lambda_2はBのEC2のサービスを起動させ、AのEC2に命令を出していたAWS Lambdaの連携先をBのEC2に変更する命令を出します。

次に③の動作を説明します。

AWS Lambda_2から命令を受け、BのAmazon EC2が起動します。

そして、AWS Lambda_2から命令を受けたAWS Lambda_1が、命令の送り先をAのAmazon EC2からBのAmazon EC2に変更します。 以上で全ての動作は終了です。

最終的には以下の図のようになります。

これでBのEC2のサービスが起動してBに命令が送られるようになりましたね~。

冗長構成はこれで完了です!おつかれさまでした!

おわりに

AWSでの冗長構成を解説してみました。

AWSでの冗長構成ってこんなのがあるんだな~とイメージしていただければ幸いです。

以上ここまで読んでいただきありがとうございました。