VPC内でのPrivate IPの扱いについて考えてみた

記事タイトルとURLをコピーする

 こんにちは。福岡オフィスのtakadaです。
幼少期、目玉焼きにはソースをかけるのが当然と思っていました。

だって、ダディーもマミーもそうしてたから。。。

小5のときに、友達が醤油かけて食べてると聞いたときにカルチャーショックとともに世の多様性を学んだのでした。さて、今回は、 VPC内のEC2に割り当てるPrivete  IPアドレスの取り扱いについて考えてみました。
 

AWSのVPC内でのPrivate IPアドレスの概要

 オンプレミス環境で主にサーバなどにPrivate IPアドレスを割り当てる場合、OS上に固定IPアドレスの設定を行うことが多いと思います。
しかし、通常AWSのVPC内のEC2インスタンスのネットワーク設定の場合、OS側のIP設定は、DHCPにするのが基本です。VPC内では、AWSが提供するDHCP機能によって、インスタンスの起動時にPrivate IPアドレスが割り当てられます。そして、このPrivate IPアドレスは以下の特徴を持ちます。

  • IPアドレスは、ENI(仮想NIC)に紐付けられます
  • ENIの作成時に、IPアドレス指定した場合は、そのIPが固定で割り当てられます(指定しない場合は、使用可能なIPアドレスが自動的に選択されます)
  • インスタンスが停止し、再開された場合も、 IP アドレスとENIの関連付けが維持されます

つまり、VPC内で提供されるDHCP機能では、リース期間は考慮する必要がなく、実態的にはIPアドレスは固定で割り当てられるため、OSでIPアドレスを固定設定する必要がない訳です。

OS側でIPアドレスの固定設定をした場合の問題

 もし、OS側でIPアドレスの固定設定をした場合、どのような問題が起こるでしょうか?EC2インスタンスの可搬性が損なわれるという点が一番大きいと思います。
 具体的には、EC2インスタンスを横展開する目的などで、AMIを取得し、それをもとに別のサブネットにEC2インスタンスを作成する場合に問題が生じます。このようなケースで、OS上でIPアドレスを固定設定している状態のAMIを使ってEC2インスタンスを、別のサブネットにローンチした場合、以下のように起動時のステータスチェックでエラーとなり、EC2インスタンスが起動できません。

status_failed_ec2

 このような事態をさけるにも、IPアドレスの割当はVPCの機能にまかせ、OS側ではDHCP設定としたほうが望ましいと考えます。

それでもOS側でIPアドレスの固定設定をしなければならない場合

 たとえば、OS上で動かすミドルウェアやアプリケーションの中には、インストール時や起動時に、「OS側にIPアドレスが固定設定されているか」をチェックするものが存在します。インストール時のみチェックされるものであれば、その時だけ、OS側に固定設定を行い、その後、DHCP設定に戻すいうことが考えられますが、保守やサポート的にこの方法が使えないというケースもあると思います。

 結論から言うと、「もうそれは固定設定するしかないよね」ということになりそうです。
では、どのように先に述べた事態(起動時のステータスチェックでエラー)を回避すればいいのでしょうか?
我らがエース、Kei Miyazawaに相談したところ、以下のほうな回避策を教えてもらいました。

  1. AMIのローンチ時、もしくはローンチ後に新しいENIを追加し、新しいサブネットのIPアドレスを(AWS側)で指定する
  2. 新しいENIに紐付いたIPアドレスでOSログインを行い、OS上の設定で固定設定の内容を変更する
  3. 追加したENIを取り外す

さすがエース、目の付け所がエースでしょ。

まとめ

 とはいえ、運用負荷などを考えると、やはりVPC内のEC2インスタンス上のOSでは、IPアドレスはDHCPで取得する設定にしておくほうが無難と考えます。オンプレ経験が長い私は、最初違和感をもっていましたが、仕組みを考えると、「なるほど」と思うようになってきました。

そんな私は、50%の割合で最近目玉焼きに醤油をかけて食べるようになりました。
はい、どうでもいいですね。ではでは。


と思っていたら、
「目玉焼きには塩派です」 by oketani
というツッコミが。 
まだまだ 世の中の広さと、目玉焼きのポテンシャルは計り知れないのでした。