

ENIのフェイルオーバー時の挙動について2点質問させてください。

◼︎背景  
・EC2インスタンス上で監視アプリケーションを実行している  
・インスタンスへの接続は、プライベートIPv4アドレスを使用して行われる

◼︎質問  
アプリケーションに障害が発生してアクセスした場合、  
トラフィックを素早くスタンバイインスタンスに転送する方法を知りたいです。

以下の対応が正解のようなのですが、  
実際にフェイルオーバーが発生した時のENIでの操作(1)と代替方法(2)についてご教授ください。

・プライベートIPアドレスで設定したインスタンスにセカンダリENIを接続する。  
・プライマリインスタンスにはENIをスタンバイインスタンスに移動する。

(1)ENIのフェイルオーバー時の操作について  
以下の操作をしておけば、AZ障害が発生した際のフェイルオーバーは自動的に行われるのでしょうか？  
インスタンスへのデタッチ、アタッチは手動で行う必要があるでしょうか？

・フェールオーバーインスタンスに移行できるセカンダリENIを作成する  
・ENIにセカンダリープライベートIPアドレスを割り当てる

(2)ALBの加重ルーティングによるフェイルオーバー

ALBの加重ルーティングでフェイルオーバーは実行できるので、  
ENIをプライマリ、セカンダリと用意する必要はないのでは・・・？と思ったのですが、認識が間違っているでしょうか？

参考：  
[Application Load Balancer
の加重ターゲットグループを設定する方法を教えてください。](https://aws.amazon.com/jp/premiumsupport/knowledge-
center/elb-make-weighted-target-groups-for-alb/)

また、以下の対応のどこが間違っているのか教えていただだけないでしょうか？

>
> プライベートIPアドレス用のリスナーで設定されたALBをデプロイし、プライマリインスタンスをロードバランサーに登録します。障害が発生したら、インスタンスの登録を解除し、セカンダリインスタンスを登録します。


CC BY-SA 4.0
2022-06-09T12:59:15.680
89305
2022-06-09T13:49:26.033
50856
question
aws amazon-ec2
管理用ネットワークにおけるENIのフェイルオーバー


質問文についてはコメントで指摘した通りですが、現状の質問文に対して少し答えておきます。

EC2を否定してしまいますが、安定稼働させたいのであればLambdaなどサーバーレスにすることです。リクエストに応じてインスタンスが用意され確実にアプリケーションを実行してくれますし、管理用ネットワークなども必要なくなります。

EC2で実現するなら、Active-
Active構成で２台どちらでも処理すべきでしょう。その上でELBに振り分けさせれば、一方が停止しても他方に振り分けてくれます。

Active-
StandBy構成にせざるを得ない場合について、ENIの付け替えに言及されていますが、個人的にはお勧めできません。まずサブネットはAZに閉じるため、AZを跨いでプライベートIPアドレスを引き継ぐことはできません。また何らか実現できたとして、OSやアプリケーションにENIやプライベートIPアドレスを認識させる必要があり、その間は処理が中断してしまうことです。

このような場合、AWS的にはパブリックIPアドレスの中でも[Elastic
IPアドレス](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/elastic-ip-
addresses-eip.html)を使います。

> Elastic IP
> アドレスを使用すると、アドレスをアカウント内の別のインスタンスに迅速に再マッピングすることで、インスタンスやソフトウェアの障害をマスクできます。

と説明されています。  
Elastic IPアドレスはAWSが提供するNAT機能です。Elastic
IPアドレス宛ての通信はその時点で割り当てられているプライベートIPアドレスに変換されます。そのため、Elastic
IPアドレスを付け替えた瞬間にそのマシン宛ての通信としてルーティングされます。各マシンは自分宛ての通信として処理するため、OSやアプリケーションを再構成する必要もなく、ほとんど中断することなく切り替え可能です。


CC BY-SA 4.0
2022-06-09T13:49:26.033
89306
2022-06-09T13:49:26.033
4236
89305
answer