負荷分散に DNS ラウンドロビンを利用した場合について考えています(こちら の続き)。
既に前回 DNS ラウンドロビンのクライアントキャッシュに関する問題点について触れましたが、今回は可用性の面での問題点を考えます。
冗長構成として考えることはできない
たとえば、BIG-IP 等の負荷分散装置を使って A、B、C、D というサーバの負荷分散を実現している場合を考えます。トラフィックを 120とすると各サーバへ 30ずつ負荷分散によってアクセスは流れてゆきます。
この時、B サーバがダウンすると A、C、D へ 40ずつのアクセスが流れ、外からのアクセス上は多少重く感じるかもしれませんが、サーバダウンには気づきすらしないでしょう。一般的な負荷分散はこのようにダウン時の切り替えも意識されています。
一方、DNS ラウンドロビンの場合はダウン判定や分散構成の切り替えを自動ではしてくれません。人手により手動で行う必要があります。その為、A、B、C、D に対して DNS ラウンドロビンを設定していたとしても障害のあった B の IP アドレスも回答してしまい、クライアントは B へアクセスし、サーバエラー(コネクションエラー)となってしまいます。
この点も非常に致命的で、A、B、C、D 全て生存している必要がある為、可用性はむしろ下がってしまうことになります。
いずれにせよこのあたりを踏まえて DNS ラウンドロビンを頭の片隅にいれておいてもいいかもしれません。