batchiです。
ELBには下記2つのスキームがありますね。
●インターネット向け(internet-facing)
●内部向け(internal)
両者の違いは、ELBのロードバランサーノードが、
グローバルIPを持つか否かです。
今回は、内部向けロードバランサーに対して、
オンプレミス環境からDirectconnect経由でアクセスする際のケースを考えてみます。
IPではなくエンドポイントで指定する
ELBという一つのコンポーネントではありますが、
裏側では1つ以上のロードバランサーノードがそれぞれIPを保有しています。
このIPは可変であるため、ELBへのアクセスはIPではなく、
エンドポイントで指定する必要があります。
複数プールされているIPのいずれかが、DNSラウンドロビンで返されます。
エンドポイントとは
僕自身しっくりくる説明ができないのですが、
「グローバルに解決可能なホスト名です」というと伝わることが多いです。
内部向けロードバランサーのエンドポイント
こういった形式で発行されます。
internal-<ELB名>-<ランダムな数字9桁程度>.<リージョン名>.elb.amazonaws.com
エンドポイントからIPアドレスの正引き
エンドポイントに紐づくIPは一体いくつなのか。
これを解決できるのはAWS側で管理しているDNSサーバだけです。
ではどうやってAWS管理のDNSサーバに問い合わせに行くかというと、
今回考えているケースでは以下の2パターンが考えられます。
①インターネット経由で名前解決パターン
②AmazonDNSを用いて名前解決パターン
①インターネット経由で名前解決パターン
フルサービスリゾルバ(DNSキャッシュサーバ)がインターネット上に出ていき、
「.(ルート)」から順に反復問い合わせを行って名前解決を実施します。
今回のケースだと、
「.(ルート)」のDNSサーバに問い合わせをし、
その結果から「.com」のDNSサーバに問い合わせをし、
その結果から「amazonaws.com」のDNSサーバに問い合わせをし、
その結果から「elb.amazonaws.com」のDNSサーバに問い合わせをし…..といった具合ですね。
②AmazonDNSを用いて名前解決パターン
インターネットに出たくない、という場合は、AmazonDNSを用いるパターンがあります。
VPCの内部でエンドポイントの名前解決が可能です。
(AmazonDNSが裏側でインターネットに出ていってる?)
VPCでCIDRを切った時に、
合計5つほどAWS側で予約されているために使えないIPアドレスがありますが、
そのうちの1つがAmazonDNSに使用されます。
VPC内部からしか問い合わせを受け付けていないので、
オンプレミスのリゾルバから直接参照することはできず、
VPC内部にフォワーダとなるDNSサーバを構築する必要があります。
正引きで返ってくるのはプライベートIP
上記のいずれかのパターンで名前解決が正常に行われても、
リゾルバに返されるのはプライベートIPアドレスである点は注意が必要です。
オンプレミスのIP範囲とVPCのIP範囲がバッティングしていると、
よろしくないことになります。
設計を行う時はネットワークアドレスの重複がおこらないようにしましょう。
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Subnets.html#VGW
こちらからも以上です。