オープンソースのグローバルロードバランサー(GSLB)。
ソースコードがGSLBとしては少なく、高速動作が可能となっている。
ただし、ソースコードを減らす為にロギング機能が省略されていたり、
細かいヘルスチェックはスクリプトの作り込みが必要な為、
GSLBとしてフル機能を使いこなすにはコツが必要なソフトウェアである。
gdnsdはGSLBとして通信事業者レベルの採用実績があったりする。
また、ソースコードが少ないので機能追加も比較的楽に実装出来る。
|
# zypper install libev4 libev-devel ragel # wget https://github.com/gdnsd/gdnsd/archive/v2.4.0.tar.gz # tar zxvf gdnsd-2.4.0.tar.gz # cd gdnsd-2.4.0 # ./configure --prefix=/usr/local/gdnsd-2.4.0 # make # make install
# cd /usr/local # ln -s /usr/local/gdnsd-2.4.0 gdnsd # cd /etc # ln -s /usr/local/gdnsd/etc/gdnsd gdnsd # vi /usr/lib/systemd/system/gdnsd.service --- [Unit] Description=gdnsd Authoritative GSLB type DNS Server After=local-fs.target network.target syslog.service [Install] WantedBy=multi-user.target [Service] Type=notify NotifyAccess=all ExecStart=/usr/local/gdnsd/sbin/gdnsd -c /etc/gdnsd -f start ExecStop=/usr/local/gdnsd/sbin/gdnsd -c /etc/gdnsd stop # High security setting MountFlags=slave DevicePolicy=closed PrivateDevices=true PrivateTmp=true ProtectSystem=full ProtectHome=true
# vi /usr/local/gdnsd/etc/config --- options => { username => gdnsd, chaos_response => "GSLB", listen => 0.0.0.0:53, http_listen => 0.0.0.0:3506, log_stats => 3600, # tcp_threads => 2, # udp_threads => 2, include_optional_ns => true, disable_text_autosplit => false, zones_strict_data => false, zones_rfc1035_auto => false, state_dir => /var/lib/gdnsd, run_dir => /var/run/gdnsd, plugin_search_path => /usr/local/gdnsd/lib64/gdnsd, }
設定の解説 |
# systemctl unmask gdnsd.service # systemctl enable gdnsd # systemctl start gdnsd
ヘルスチェックを元にした広域負荷分散処理が、GSLBの本質機能となる。
gdnsdにもヘルスチェック機能が搭載されている為、単体でGSLBとして十分に稼働させる事が可能である。
ヘルスチェックの挙動はコンフィグファイルに書いた後、
DNSゾーンファイルで特殊なレコード設定を行う事によりDNSレコードを動的に変更する事が出来る。
gdnsd用の特殊レコードのDYNAレコードを設定する事で、ヘルスチェックに基づいた可変応答が可能となる。
なお、レコード種類によってはDYNAレコードを定義出来ない物もある為、
詳細についてはgdnsdの公式ドキュメントを確認する。
設定内容 |
設定内容 |
設定内容 |
設定内容 |