Amazon Ec2

EC2インスタンスにElasticIP アドレスを複数個付けてみた

はじめに

こんにちは、omkです。
最近1台のサーバに固定IPが4つ必要なケースがあったのでEC2インスタンスにEIPを4つ割り当ててみました。

割り当てられるEIPの数

インスタンスに割り当てられるEIPの数はインスタンスタイプで決まります。
「割り当てられるENIの数」、「ENI1つあたりに割り当てられるIPアドレスの数」がそれぞれインスタンスタイプごとに設定されていて、EIPはインスタンスに割り当てられているプライベートIPv4アドレスの数だけ設定出来ます。

つまり、「インスタンスに割り当てられるENIの数 × ENIに割り当てられるIPv4アドレスの数」が「インスタンスに割り当てられるEIPの最大数」となります。

以下のページから対象となるインスタンスタイプで必要数のIPを設定できることを確認してください。

各インスタンスタイプのネットワークインターフェイスあたりの IP アドレス数

例えば表の一番上に表示されるa1.mediumの場合だと2×4=8個まで設定出来ます。

ちなみに、
インスタンスの上限以上のENIを割り当てようとすると「Interface count 3 exceeds the limit for {インスタンスタイプ}」、ENIの上限以上のプライベートIPアドレスを割り当てようとすると「Number of private addresses will exceed limit.」というエラーが出ます。

諸注意事項

自動割り当てパブリックIPが使えない

複数のENIを割り当てたインスタンスは自動割り当てパブリックIPが利用できなくなります。
今回はEIPを利用するので関係ない話ではありますが。

IPの数

VPC、サブネットにプライベートIPが余っていることを確認してください。
EIPの数がサービスクォータの上限に達していないことを確認してください。

料金について

EIPはインスタンスごとに1つだけ、インスタンスが起動している間は利用料がかからないようになっていますが、2つ目以降は普通に利用料が発生します。
インスタンスが停止している場合は全部の利用料が発生します。

EIPの料金を考えるうえでこちらの記事が大変参考になりました。

やってみた

まず、EC2インスタンスを起動します。
今回はt3.microでインスタンスを作成するので、ENIが2個、ENIごとにEIP2個の合計4個のEIPが設定できます。

インスタンス作成時にENIを2つ設定できますが、1つだけ設定していた場合は「ネットワークインターフェイス」から対象サブネットにENIを作成した状態で対象インスタンスを選択して「アクション>ネットワーキング>ネットワークインターフェイスをアタッチ」からENIを割り当てることが出来ます。

EC2に割り当たっているIPアドレスの確認、割り当ては「アクション > ネットワーキング > IP アドレスの管理」から行います。

ENIが2つ、各ENIにプライベートIPが1つずつ割り当てられています。
「新しいIPアドレスの割り当て」を選択することでENIにプライベートIPを追加できます。

特にこだわりがなければこのまま保存を押すことで自動でプライベートIPアドレスが設定されます。

割り当てられました。

次に本題のEIPを設定していきます。

EIPを必要数作成します。
EIPを作成したらインスタンスに割り当てていきます。

EIPを選択して「アクション > Elastic IP アドレスの関連付け」でインスタンスに割り当てます。
インスタンスにENIが1つの場合はリソースタイプはインスタンスで問題ないですが、複数割り当てている場合はネットワークインターフェイスを選択する必要があります。
それぞれのENIのそれぞれのプライベートIPにEIPが設定されるようにします。

一通り割り当てたら完成です。
割り当てておいたものがこちらです。

EC2コンソールのネットワーキングのElastic IP アドレス欄からEIPが4つ割り当てられていることがわかります。

それぞれのEIPでSSHで接続してみましたがすべて問題なく接続されます。

以下のコマンドでメタデータからそれぞれのEIPが設定されていることを確認します。

curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/{ENIのmacアドレス}/public-ipv4s

各ENIに2つずつ割り当てたEIPのアドレスが表示されました。
これでEIPが設定されていることがわかります。

おわりに

使う機会は少ないかもしれませんがEIPはいっぱい割り当てられます。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA