オープンソースのグローバルロードバランサー(GSLB)
ソースコード量が少なく、高速動作と脆弱性の発生しにくさが特長となっている。
ただし、ソースコードを減らす為にプログラムのロギング機能が省略されていたり、
細かいヘルスチェックはスクリプトを別途作成する必要がある為、
フル機能を使いこなすには知識・技術が必要なソフトウェアである。
gdnsdは通信事業者レベルでの採用実績がある。
また、ソースコードが少ない割には整理されている為、機能追加も比較的楽に出来る。
|
# 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 [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 ## 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/DYNCレコードを設定する事で、ヘルスチェックに基づいた可変応答が可能となる。
Aレコードを応答させる場合はDYNAレコード、CNAMEの場合はDYNCレコードを使用する。
設定内容 |
設定内容 |
設定内容 |
設定内容 |