CDP:Floating IPパターン

From AWS-CloudDesignPattern
Jump to: navigation, search
Architect

IPアドレスの動的な移動

Contents

解決したい課題

サーバに障害が発生した場合や、サーバの処理能力向上を行う場合や、パッチやアップグレードなどを行う場合に、サーバ停止が必要な場合がある。サーバの停止はそのままサービスの停止につながるため、システム提供者としては、より停止時間が短い方が良いと考える。

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

できるだけ少ない停止時間で、サーバを切り替えるという課題が存在する。

クラウドでの解決/パターンの説明

従来の物理サーバの場合、障害がおこるケースに備えて、バックアップ用のサーバを用意しておくことがある。実際に障害がおこったときは、IPアドレスを切り替えることで、バックアップ用のサーバで処理を代行することが可能になる。

クラウドでも、IPアドレスを付け替えることで、切り替えを行う事ができる。クラウドの場合は、このIPアドレスの付け替え自体も、APIを用いて外部からコントロールできる。スクリプトを用いた自動化も可能である。

さらに、本番稼働しているサーバとは別のサーバを即座に調達することができるため、障害やアップグレードが発生した際に、本番稼働しているのと同様のサーバを容易に構築することができるというメリットもある。

実装

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

  • EC2インスタンスに対して、EIPを割り振る。
  • 障害発生時やアップグレード時に、新たなEC2インスタンスを起動する。起動する際は、Stampパターンなどを利用してもよい。またより迅速に切り替えるため、別のEC2インスタンスを起動しておくのもよい
  • インスタンス起動後に、今のEC2インスタンスからEIPをデタッチして、新たなEC2インスタンスに対してアタッチを行う。

構造

6wNg0ISJczU5Pz1m-01890.png

利点

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

注意点

  • EIPの切り替えには通常数秒程度かかる。
  • VPCの場合、ネットワークカードに固定のプライベートIPアドレスを割り当てる事ができ、ネットワークカードを別のEC2インスタンスに付与できるため、プライベートネットワーク下でもこのパターンを適用できる。ただし、VPCではサブネットを超えてアドレスを付け替えることができない点に注意する。

その他

  • 障害検知を行う際は、HeartBeatやNagios、Zabbixといった監視ソフトを利用しても良いだろう。EIP付け替えはAPIで行えるため、これか監視ソフトと組みあわせて、自動化を行うこともできる。
  • Server Swappingと併用することで、EIPを付け替えるとともに、EBSも付け替えてデータを引き継ぐ事も有効である。

寄贈したアーキテクト

Ninja of Three

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox