DNSで負荷分散を可能にするLBレコードの提案

名前解決を行っているクライアントの国や地域によって、近い場所のサーバのIPを返すといったことは既に行われている。しかし、そのDNSによる負荷分散の方法は標準化されていない。

DNS load balancing」という提案仕様では、新しくLBレコードを定義し、権威DNSサーバからフルリゾルバに対して負荷分散のための情報を伝達できるようにします。

日本の方が書かれている提案なので緊張感がありつつも、ざっと読んでみたので簡単に書く。

LBレコード

LBレコードは、分散のための情報と重みと、分散先を示すを持つ

例えば

# <owner> <ttl> <class> LB <weight> <location> <target>
   example.jp. 3600 IN LB 1 AP ap.example.com.
   example.jp. 3600 IN LB 1 JP jp1.example.jp.
   example.jp. 3600 IN LB 3 JP jp2.example.jp.
   example.jp. 3600 IN LB 1 JP-13 tokyo.example.jp.
   example.jp. 3600 IN LB 1 AS2496 as2497.example.jp.
   example.jp. 3600 IN LB 1 AS2496:1 as2497.example.jp.
   example.jp. 3600 IN LB 1 +BEER beer.example.jp.

地域としてAP, 国としてJP, 日本の都道府県コードで東京を示すJP-13, AS番号も指定可能であるほか、プライベートユースとして+から始まる文字列が使用できる。

が同じ場合は、Weightによって使い分けることが出来る。

流れ

f:id:ASnoKaze:20180127020236p:plain
(一部省略)

Authoritative name serverが下記のようなレコードを持つとする

   example.jp. 3600 IN A 198.51.100.1
   example.jp. 3600 IN LB 1 * www.example.com.
   example.jp. 3600 IN LB 1 JP jp1.example.com.
   example.jp. 3600 IN LB 3 JP jp2.example.com.
  • 1) スタブリゾルバがフルリゾルバに問い合わせる
  • 2) フルリゾルバはAuthoritativeサーバに問い合わせる際に、LBレコードに対応している旨を示すLB Support Flagを立てて名前解決を行う。
  • 3) Authoritativeサーバは問い合わせに対応するLBレコードを返す。
  • 4) フルリゾルバは受け取ったLBレコードの中からスタブリゾルバに適切なLocationを選択しWeightより「jp1.example.com.」を選び、解決しスタブリゾルバに応答する