Tech Hotoke Blog

IT観音とは私のことです。

Vue×SpringでSPA作成10【サーバの冗長化】

f:id:TechHotoke:20211226002024p:plain

まえがき

こちらの記事の続編です。

techhotoke.hatenablog.com

目的

VueとSpringで作成したプロジェクトの構築手順の備忘録。 備忘録のため、詳細な説明を省略している部分があります。

前提

  • 基本的なJavaの知識やSpring、Vueの知識があること
  • AWSに関する基本的な知識があること
  • ネットワークに関する基本的な知識があること

環境

  • Java 11
  • Spring Boot2.5.6
  • Gradle 7.1.1
  • Vue2.6
  • IDESTS
  • AWS(EC2,RDS,ELBなど)

やること

注意

冗長化構成を作成することでサーバーを起動状態にしているとこれまでの倍の料金がかかるため注意が必要です

構成

f:id:TechHotoke:20220214234341p:plain

なぜ冗長化するのか?

webサーバーおよびDBサーバーが冗長化されていない場合、現在配置しているアベイラビリティゾーン(以下、AZ)で何かしら障害が発生した場合にサービスが完全に停止してしまうから。AWSのベストプラクティスとしてこれらの冗長化は定められています。

実際のビジネスの現場で考えると、1時間あたり数百万円動くようなサービスならば数時間の停止がうん百万、うん千万円の損失を与えてしまうと想像すると笑い事じゃなくなるので絶対やっておく必要がありそうです。。。

実装

Webサーバーの冗長化

  • ナビゲーションペインからEC2を選択し、Webサーバーのインスタンスを選択

  • アクションからイメージの作成を選択

  • 添付画像のような感じでイメージを作成する

f:id:TechHotoke:20220214230159p:plain

  • 作成したイメージのリンクをクリックし、イメージからインスタンスを起動

  • インスタンスサイズはデフォルト、VPCは使用中のもの、サブネットはprotected-cを選択(aと間違えないこと)

f:id:TechHotoke:20220214230739p:plain

  • そこからはデフォルトで、セキュリティグループは既存のセキュリティグループを使用

f:id:TechHotoke:20220214231343p:plain

  • それ以降もデフォルト設定で進み、最後にキーペアの指定を間違えないように行いインスタンスを作成

  • 添付画像のようにwebサーバーが二つ、それぞれ異なるAZに作成されていることを確認

f:id:TechHotoke:20220214231832p:plain

  • 最後にターゲットグループに追加

f:id:TechHotoke:20220214232100p:plain

  • 既存のEC2インスタンスを停止して、アプリケーションのURLにアクセスして画面が正常に表示されることが確認できたら完了です。

RDSの冗長化

  • RDSを選択し、使用しているDBを選択

  • 変更ボタンから添付画像の項目を変更

f:id:TechHotoke:20220214232745p:plain

  • 変更を適用

  • 設定タブからマルチAZが有効になっていることを確認

f:id:TechHotoke:20220214233841p:plain

  • 一応DBインスタンスをフェイルオーバーを有効にして再起動し、AZが切り替わっていることを確認して完了です(作成直後は反映されないこともあるため、その場合は数時間がおいて確認)

f:id:TechHotoke:20220214234509p:plain

 フェイルオーバーとは:予備も一緒に動かしている(ホットスタンバイ)システムにおいて、メインサーバーに障害が発生したときに自動的に予備サーバーに切り替えてくれる。 フェイルオーバーの目的は「サービスの継続稼働のための最小ダウンタイムの実現」にあります。

今回はここまでです。 お付き合い頂きありがとうございました!