負荷分散技術の一貫で DNS ラウンドロビンは使っていますか?
今回はインフラをやっていて最近あまり聞かない DNS ラウンドロビンについて説明します。
最近では負荷分散となるとほとんど Web の負荷分散に結びついてしまい、BIG-IP や UltraMonkey 等の技術に目がとらわれがちですが、DNS によるラウンドロビンも捨てたものじゃありません。
DNS ラウンドロビンは以下のようなメリットを持っています。
- 無償
- 既に導入済である為、手っ取り早い
- 構成がシンプルで分かりやすい
デメリットは以下のようなものです。
- 完全な分散は不可能
- DNS の知識が必要
- 冗長の仕組みは取れない
このあたりを踏まえ、仕組みの説明やデメリットを考えてみましょう。
DNS ラウンドロビンの仕組み
DNS ラウンドロビンは DNS の A レコードを利用します。DNS A レコードは複数定義されていた場合、上から順番に問い合わせに回答します。
名前解決(URL 等から IP アドレスを聞く)の問い合わせが来るたびに定義順に「この URL は A サーバ」「この URL は B サーバ」のように回答してゆく為、同じサーバへ連続してアクセスがゆくことがなくなります。
この定義は A レコードに追加するだけでよいので何かのサーバを再起動する必要もなく(Bind であっても rnd reload)、システムへの影響もほとんどありません。
同時に DNS として完全に独立しているため、構成がシンプルであり、他の Web サービスに後から実装するのも容易でしょう。
また、大抵のサービスには最初から DNS は組み込まれている為、後から実装する必要もなく大抵無償で提供されます。
このような方式で DNS ラウンドロビンは実現されますが、いくつか問題があります。