#author("2018-03-09T22:22:36+09:00","default:nowsky","nowsky") *gdnsd [#p9c99800] オープンソースのグローバルロードバランサー(GSLB)。 ソースコードがGSLBとしては少なく、高速動作が可能となっている。 ただし、ソースコードを減らす為にロギング機能が省略されていたり、 細かいヘルスチェックはスクリプトの作り込みが必要な為、 GSLBとしてフル機能を使いこなすにはコツが必要なソフトウェアである。 gdnsdはGSLBとして通信事業者レベルの採用実績があったりする。 また、ソースコードが少ないので機能追加も比較的楽に実装出来る。 ~ *参考サイト [#h651c013] -[[gdnsd:+http://gdnsd.org/]] -[[GitHub gdnsd:+https://github.com/gdnsd]] -[[gdnsdでかんたんGSLB:+https://qiita.com/jh1vxw/items/7ce5d14e9f964f001257]] ~ * 構築環境 [#f4cf0e44] -[[オフィシャル:+https://github.com/gdnsd/gdnsd/releases/]] -[[ドキュメント:+https://github.com/gdnsd/gdnsd/wiki]] |LEFT:100|LEFT:120|LEFT:120|LEFT:120|c |CENTER:~Parameter|CENTER:~Server-A|CENTER:~Server-B|h |&color(#2020ff){OS};|openSUSE Leap 42.3|openSUSE Leap 42.3| |&color(#2020ff){IP};|10.0.0.1|10.0.0.2| |&color(#2020ff){USER};|gdnsd|gdnsd| |&color(#2020ff){VERSION};|v2.4.0|v2.4.0| ~ * インストール [#g603a033] -&size(16){&font(b){1. インストール};}; gdnsdの最新機能を利用する為ソースからビルドする。 今回はバージョン管理が行える様にprefix指定を変更した上で、 シンボリックリンクで参照先を変更する。 # 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 -&size(16){&font(b){2. 起動準備};}; gdnsdを動かす為に実行ユーザなどを作成する。 なお、gdnsdはsystemd起動に最適化されているので、今回はサービスファイルから起動を行う。 # 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 -&size(16){&font(b){3. コンフィグ};}; gdnsdはインストールディレクトリ内から固定参照でファイルを読み込んでいる。 今回は「/usr/local/gdnsd」にシンボリックリンクを張る形でインストールしている為、 設定ファイル名は「/usr/local/gdnsd/etc/config」にする必要がある。 コンフィグファイルにはヘルスチェック条件も書く事が出来るが、 権威DNSとしてのみ動かすならば、options項目のみ記述する事でgdnsdの起動テストが出来る。 # 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, } #region(&color(#ff0000){設定の解説};) options => { username => #gdnsdの実行ユーザ chaos_response => #DNSのchaosクラス変更 listen => #gdnsdのLISTENアドレス、ポート番号 http_listen => #ヘルスチェック画面のLISTENアドレス、ポート番号 log_stats => #gdnsdのクエリ統計データ出力感覚 # tcp_threads => #TCPクエリの実行スレッド数 # udp_threads => #UDPクエリの実行スレッド数 include_optional_ns => #AUTHORITY-SECTIONにオプションのNSレコード注入 disable_text_autosplit => #TXTレコードを255バイト毎に自動分割 zones_strict_data => #DNSゾーンデータのワーニングを無視 zones_rfc1035_auto => #DNSゾーンデータ変更時の自動リロード(RFC1035)の有効化 state_dir => #gdnsd一次フォルダ run_dir => #gdnsdのPIDファイル保存先 plugin_search_path => #ヘルスチェックモジュール保存先 } #endregion