gdnsd

オープンソースのグローバルロードバランサー(GSLB)
ソースコード量が少なく高速動作と脆弱性の発生しにくさが特長だがロギング機能が省略されていたり、
細かいヘルスチェックはスクリプトを別途作成する必要があるため、
機能を使いこなすにはコツが必要なソフトウェアである。
gdnsdは通信事業者規模の採用実績もあり、可用性に対する一定の信頼性もある。

参考サイト

構築環境

逆NAT構成を組むときは接続元のグローバルIPも参照できるのでgdnsdのGeoIPも使える。
しかし、前段に双方向NATやdnsdistを挟み込む場合は接続元のIPアドレスも変化するためGeoIPが使えなくなる。
この場合はEDNS Client Subnetを設定して、フロントエンドで取得した接続元のグローバルIPをgdnsdに中継する。


インストール

ステータス

gdnsdのヘルスチェック確認はメジャーバージョンによって変化する。
v2.4.2までは、同梱するHTTPサーバを用いたGUI確認となるが、
v3.0.0以降は、コマンドで出力したJSON形式の実行結果を見る事となる。

 v2.4.0 ステータス確認
 v3.0.0 ステータス確認

ヘルスチェック

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