オープンソースのグローバルロードバランサー(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 # autoreconf --install # ./configure --prefix=/usr/local/gdnsd-2.4.0 # make # make install
| v2.4.0 起動コマンド |
| v3.0.0 起動コマンド |
# vi /usr/local/gdnsd/etc/gdnsd/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 => 1,
udp_threads => 1,
include_optional_ns => true,
disable_text_autosplit => false,
zones_strict_data => false,
zones_strict_startup => true,
zones_rfc1035_auto => false,
state_dir => /var/lib/gdnsd,
run_dir => /var/run/gdnsd,
plugin_search_path => /usr/local/gdnsd/lib64/gdnsd,
}
| 設定の解説 |
# vi /usr/local/gdnsd/etc/gdnsd/zones/gslb.test.org
---
$ORIGIN gslb.test.org.
$TTL 3600
@ IN SOA ns1.gslb.test.org. root.gslb.test.org. (
2018010101 ; serial
3600 ; refresh
1200 ; retry
1209600 ; expire
3600 ; minimum
)
;; GLUE RECORD
;;
IN NS ns1.gslb.test.org.
IN NS ns2.gslb.test.org.
ns1 IN A 10.0.0.1
ns2 IN A 10.0.0.2
;; CONTENTS
sv1 IN A 192.168.0.1
sv2 IN A 192.168.0.2
;; GSLB
;;
$TTL 10
;; この箇所にGSLBの可変レコードを記載
# systemctl unmask gdnsd # systemctl enable gdnsd # systemctl start 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
| 設定内容 |
| 設定内容 |
| 設定内容 |
| 設定内容 |
| 設定内容 |
| 設定内容 |