NLB の名前解決をすると、一部のIPアドレスしか表示されません。原因と対処法を教えてください

NLB に対して nslookup コマンド等で名前解決をした際、一部のIPアドレスしか表示されない場合の理由と対処法を紹介します。
2024.01.17

困っていた内容

複数のアベイラビリティゾーン(以下AZ)を関連付けた NLB があります。
この NLB に対して nslookup や dig コマンドで名前解決を実行すると AZ の数だけIPアドレスが表示される想定ですが、一部のIPアドレスしか表示されません。原因と対処法を教えてください。

どう対応すればいいの?

NLB へ名前解決を行なった際、有効なターゲット(EC2 等)が存在する AZ のIPアドレスが表示される仕様です。
例えば複数の AZ のうち ap-northeast-1a にのみターゲットの EC2 が存在した場合、nslookup 等のコマンドで名前解決をすると ap-northeast-1a 側のIPアドレスのみが表示されます。

NLB に関連付けられたすべての AZ のIPアドレスを表示させたい場合は、すべての AZ にターゲットを配置するか、もしくは NLB の設定でクロスゾーン負荷分散を有効化することで実現できます。

やってみた

実際に試してみました。
今回は ap-northeast-1a(以下AZ-1a) と ap-northeast-1c(以下AZ-1c) の2つの AZ が関連付けられた NLB を用意します。

まず、ターゲット EC2 が片方(AZ-1a)にのみ稼働している状態で NLB のDNS名に対して dig コマンドで名前解決をしてみます。
するとIPアドレスが1つしか表示されません。NLB に関連付けられた2つの AZ のうち、ターゲットが存在している側(AZ-1a)のIPアドレスのみが表示されている状態です。

次は AZ-1a、AZ-1c の両方にターゲット EC2 が稼働している状態にします。
すると、dig コマンドで両方の AZ のIPアドレスが表示されました。

今度はターゲット EC2 が片方(AZ-1a)にのみ稼働している状態で、かつクロスゾーン負荷分散を有効化してみます。

この状態で名前解決をすると、2つの AZ のIPアドレスが返されます。
ターゲットが1つの AZ にしか存在しなくても、クロスゾーン負荷分散によって AZ を横断したルーティングが有効になったため、他 AZ のIPアドレスも表示される挙動となります。

以上、弊社ヘルプデスクに割とよくお問い合わせをいただく「NLBの名前解決で一部のIPアドレスしか表示されない」という事象について解説してみました。

この情報がどなたかのお役に立てば幸いです!

参考資料

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。