gdnsd

オープンソースのグローバルロードバランサー(GSLB)
ソースコード量が少なく、高速動作と脆弱性の発生しにくさが特長となっている。
ただし、ソースコードを減らす為にプログラムのロギング機能が省略されていたり、
細かいヘルスチェックはスクリプトを別途作成する必要がある為、
フル機能を使いこなすには知識・技術が必要なソフトウェアである。
 
gdnsdは通信事業者レベルでの採用実績がある。
また、ソースコードが少ない割には整理されている為、機能追加も比較的楽に出来る。

参考サイト

構築環境

インストール

ステータス

gdnsdにはプログラムの稼働状況確認画面(ステータス画面)があり、
コンフィグで設定した[http_listen]パラメータをWebブラウザに入力し、
Webブラウザからgdnsdに接続して見る事が出来る。
 
確認出来る項目は下記の通り基本的な物は網羅している。
また、CSV/JSONを利用して別システムと連携する事も可能になっている。
ただし、gdnsdが処理したDNSクエリ自体は確認する事が出来ない。

  • DNSクエリの応答ステータス
  • gdnsdの応答クエリ統計情報
  • ヘルスチェック稼働状況
  • 統計情報のCSV/JSONファイル

 
ステータス画面はgdnsdの稼働状況を視認出来るので便利だが、
画面自体をユーザ・パスワード認証する事が出来ない。
よって、本番環境で利用する場合は、iptablesで接続元IP制限を掛けるか、
[http_listen => 127.0.0.1:3506] でローカルループバックアドレスで待ち受け、
フロントエンドは認証設定したリバースプロキシにするなど注意して利用する。

left,nowrap


ヘルスチェック

GSLBは下位サーバに対してヘルスチェックを行い、ステータスに応じた可変レコード応答が特徴となる。
負荷分散(ラウンドロビン)、冗長化(アクティブ・スタンバイ)など様々な構成を取る事が出来る。
gdnsdにもヘルスチェックが搭載されており、基本的なGSLBとして機能するようになっている。
また、標準のヘルスチェックで機能不足の場合、ヘルスチェックで外部コマンドを実行する事で、
環境に応じた機能拡張を行う事も出来る。
 
gdnsdのヘルスチェックを利用する時は、gdnsdのconfigファイルにヘルスチェック定義を設定した後、
DNSゾーンファイルで専用の可変レコードを設定する事により利用可能となる。
可変レコードはAレコードを定義するDYNAレコードと、CNAMEを定義するDYNCレコードの2種類が存在する。
ただし、利用出来る可変レコードはプラグイン毎に制限されている為、詳細は公式ドキュメントを確認する。
 
DYNA/DYNCレコードは ["プラグイン種別"!"応答レコード定義名"] で設定する。
DNSゾーンファイルには下記の様なレコードを追記する事となる。

www    10  DYNA  multifo!tcp_80
blog   10  DYNA  weighted!tcp_443
cname  10  DYNC  weighted!tcp_cname