📝

IP フローティングとは

2021/04/19に公開約1,900字

概要

http://en.clouddesignpattern.org/index.php/CDP:Floating_IPパターン

AWSでは、固定IPアドレスを取得出来る”Elastic IP Address(EIP)のサービスがあり、これを利用する事でIPアドレスの付け替えを行う事が出来る。EIPは好きなEC2インスタンスへアタッチすることができるため、EIPの付け替えを行って、サービスを切り替える事ができる。

パブリック IP の付け替えのことを IP フローティングと言うようです。

ユースケース

  • 障害発生時に別の EC2 インスタンスに切り替える
  • EC2 インスタンスタイプの変更時など、サーバーの停止が必要な時にも別の EC2 インスタンスに一時的に切り替える

フェイルオーバールーティングとの違い

Route 53 のフェイルオーバールーティングを使えば、障害検知とサーバーの自動切り替えはできますね。
フェイルオーバールーティングについて詳しくは以下をご覧ください。
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/dns-failover-types.html

IP フローティングとフェイルオーバールーティングでは以下の点が異なるそうです。

Webサーバの場合は、DNSの切り替えを行ってサーバを切り替えることもあるが、通常TTLよりも切り替え時間が短くなることはないため、即時に切り替えを行うという点では、不向きである。

切り替え時間においては IP フローティングの方が速いみたいです。
他にもこんなメリットがあるそうです。

  • EIP を付け替えるだけ、DNS の TTL に影響されずシステム切り替えが行える
  • アップグレードの際には、仮に切り替え先のサーバでエラーが発生した場合でも、即座に元のサーバに EIP をつけかえて、フォールバックすることができる
  • EIP は、異なる AZ をまたがっても適用できるため、万が一 AZ レベルで障害があっても、異なる AZ のサーバに EIP 付け替えることが可能
  • EIP 付け替えは API で行えるため、これか監視ソフトと組みあわせて、自動化を行うこともできる。

個人的には ELB を使わなくても済む分コストが抑えられるかなと思いました。もちろん ELB は AWS 側で管理してくれているので楽なんですが、コスト面では IP フローティングが代替案になりそうだと思いました。

注意点

  • EIP の切り替えには通常数秒かかります。
  • 仮想プライベートクラウド (VPC) では、Elastic Network Interfaces (ENI) と呼ばれる追加の仮想ネットワークカードを作成できます。これらには固定 IP アドレスがあります(注:アドレスはインフラストラクチャの観点からは「固定」(変更なし)ですが、オペレーティングシステムの観点からは動的アドレスです)。ENI とそれに付随するプライベートアドレスおよび (該当する場合) EIP を別の EC2 インスタンスに割り当てて後で移動できるため、プライベートネットワーク内でもこのパターンを適用できます。ただし、プライマリ IP アドレスが固定されているため、ENI は定義上 VPC 内の単一のサブネットに制限されていることに注意してください。
  • EIP の背後にある新しいインスタンスに SecureShell (SSH) 接続を行うと、潜在的なセキュリティ問題の警告が発行され、ログインが不可能になる場合があります。

ちょっと難しい感じですが、とりあえず EIP の切り替えでも寸断は発生しそうなので注意が必要ですね。

まとめ

今回は IP フローティングについて調べてみました。
以下がポイントでした。

  • IP フローティングはパブリック IP の付け替えのこと
  • 障害時などに EIP を別の EC2 インスタンスに付け替えられる
  • DNS の TTL に影響されないため、フェイルオーバールーティングよりも切り替えが速い
  • AZ 間でも付け替え可能
  • 寸断は発生する
  • API で自動付け替えも可能

EIP を使用して可用性を向上させたり、ダウンタイムを極力抑えてメンテナンスするときに使えそうな方法だと思いました。
どなたかの参考になれば幸いです。

Discussion

ログインするとコメントできます