読者です 読者をやめる 読者になる 読者になる

続 カッコの付け方

AWSを始めとしたクラウドコンピューティング全般と、唯一神emacsにおける()の付け方についてだらだら書きます

ELBを使うときの注意、/28のサブネットは狭すぎる!

AWS ELB VPC

AWSVPC & Subnetのビットマスクは /16 - /28 です。この数字を聞いて 「狭い方はもう少し出来てもいいんじゃないか?」と私も思っていましたが、/28でも狭すぎます!特にELBを使う場合は、すぐにIPが尽きてしまいます。

なぜ狭いビットマスクを指定するのか?

  1. VPNを張りたいので、CIDRの衝突を回避するため
  2. VPC Peering でのCIDRの衝突を回避するため
  3. 貧乏性

概ね別ネットワークとの接続が目的だと思います。私は、VPN接続が予定されているが、対向のCIDRが分からない、だから極力狭いサブネットを指定して衝突する可能性を下げる目的でつかいました。ただし、この用途では、ISP Shared Address(100.64.0.0/10)を使ってしまうのも手です。

狭いビットマスクとELB

早くも結論を書くと
/28で使えるIPアドレスは、AWS側ルータ等に取られるIPアドレスを差し引いて11個。そのサブネットにELBを建てると、ELB暖気申請していなくても、8IPが予約されてしまう。よって、2台ELBを/28のサブネットに建てることはできない

こんなことになります。

AWSのドキュメント

2012年に偉大な方より言及されております。

blog.cloudpack.jp

これによると、20IPのリザーブと記載がありますが、現在のドキュメントでは8 IPと改められているようです。ただしドキュメント日付は同じでも日本語ドキュメントには一切記載がありません。(2015/06/28の時点)

docs.aws.amazon.com

再現方法

この現象に遭遇してから、再現しようと思ったけど、意外に苦戦しました。/28のサブネットを作成し、ELBだけを複数台作成すると、2台以上作れたりします。

まず、11個のローカルIPアドレスの内、4IPを食いつぶし、残り7IP以下とします。
ケチるなら、ENIを無駄作成 & Attachが手っ取り早いです。どんな方法でもいいので、VPC->Subnetの表示で、残りIPが7以下の状態を作ります。

f:id:iga-ninja:20150628151211p:plain

その上で、普通にELBをつくろうとしたら、下記の表示が出ます。

f:id:iga-ninja:20150628151218p:plain

まとめ

  1. /28でサブネットを切るなら、ELBは1台だけと覚悟する
  2. 2015年6月現在のELBのためのIPリザーブ数は 8 IP、しかも各々のサブネットに対して
  3. 可能な限り、ドキュメントは英語を読む