オープンソースのグローバルロードバランサー(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レコードを使用する。
| 設定内容 |
| 設定内容 |
| 設定内容 |
| 設定内容 |