「インスタンス」とは何ですか?
「EC2 インスタンスの複製」について話すとき、人々が何を意味するのかを考える価値があります。EC2 インスタンスは次のもので構成されます。
- オペレーティング システムを含むブート ディスク
- 任意のデータ ディスク
- ネットワーク設定 (パブリック IP アドレスとプライベート IP アドレスなど)
- 構成 (例: インスタンスタイプ、ユーザーデータ、タグなど)
通常、EC2 インスタンスの複製は、同じ構成で別のインスタンスを起動することを意味しますが、必ずしも「複製」とは限りません。たとえば、異なるアベイラビリティーゾーンは、異なる IP アドレス (以下を参照) を持つことを意味し、新しいインスタンスは、以前のインスタンスのディスクの正確な複製ではなく、AMI (Amazon マシンイメージ) から起動されます。
高可用性のための複製
次は高可用性の問題です。新しいインスタンスの起動には数分かかる場合があります。要件がほぼ瞬時のカットオーバーである場合、唯一の解決策は、常に複数のインスタンスを実行し、IP アドレスまたは DNS 名を再ポイントすることです。
おっしゃったように、Elastic IP アドレスを別の EC2 インスタンスに関連付けるのは簡単かつ迅速です。この変更により、その IP アドレスに送信されたトラフィックが即座にリダイレクトされます。
ただし、内部 IP アドレスを別のインスタンスに再割り当てすることはできません (ただし、以下を参照してください)。
Auto Scaling を使用して別のインスタンスを起動する
要件で数分間の停止が許容される場合は、さらに多くの可能性が生じます。最も簡単なのは、Auto Scaling グループ内で EC2 インスタンスを起動することです。グループは、常に特定の数のインスタンスを持つように構成できます (例: 最低 1 つのインスタンス)。したがって、インスタンスに障害が発生した場合、Auto Scaling は同じ構成 (ブートディスク、インスタンスタイプなど) で代替インスタンスを自動的に起動できます。
さらに、ゾーンに障害が発生した場合、Auto Scaling は別のアベイラビリティーゾーンでインスタンスを自動的に起動できます。
ただし、内部 IP アドレス範囲は VPC (Virtual Private Cloud) 内のサブネットに関連付けられていることに注意してください。各サブネットは、1 つのアベイラビリティーゾーンに関連付けられています。階層は次のとおりです。
- VPC
- アベイラビリティーゾーン
- サブネット (IP アドレスの CIDR 範囲を含む)
したがって、別のアベイラビリティーゾーン (したがって別のサブネット) でインスタンスを起動するには、インスタンスが別の内部 IP アドレスを持つ必要があります。
IP アドレスを再割り当てするためのハック
内部 IP アドレスを再割り当てすることはできませんが (特にサブネット間で再割り当てすることはできません)、興味深いハックがre:Invent 2014 の ARC401 セッションで説明されました(スライド 33 と 34、またはYouTubeを参照)。
これには、IP アドレスがVPC 範囲外にある場合に、IP アドレスをセカンダリ Elastic Network Interface (ENI) に関連付ける必要がありました。次に、ルーティング ルールを使用して、そのアドレス宛てのトラフィックを ENI にルーティングします (Source/Dest Check をオフにします)。事実上、ルーティング ルールを変更することで、トラフィックを別のインスタンスに再ルーティングできます。ちょっとしたハックですが、どうやらうまくいくようです。