LoginSignup
11
11

More than 5 years have passed since last update.

gdnsdでかんたんGSLB(その3)

Posted at

皆さんそんなにソーリーサーバを設定したいのですか!?

前回までの記事はこちらです。

→ gdnsdでかんたんGSLB(その1)
→ gdnsdでかんたんGSLB(その2)

gdnsdを使ってGSLBを構成する方法について紹介してきました。今回はその続編です。

ロードバランサでよく設定される項目に「ソーリーサーバ」というものがあります。これはロードバランシング先のメインサーバが全てダウンした時に、フォールバック先のサーバを指定するものです。サービス停止により「ごめんなさい」の意を伝えるページを表示するための機能であることから、このような名称で呼ばれることが多いようです。

GSLBでもサービス用のサイトが全てダウンした際に、アクセスをソーリーサーバに誘導したいケースがあるでしょう。以下ではgdnsdでソーリーサーバの設定方法について紹介します。

ソーリーサーバの動作イメージ

gdnsdでソーリーサーバを指定する設定例

まずはgdnsdの設定例を以下に記載します。

/etc/gdnsd/config

plugins = {
  metafo = {
    resources = {
      www = {
        datacenters = [ main , sorryserver ]
        dcmap = {
          main = {
            plugin = multifo
            up_thresh = 0.00000001
            service_types = ping_mon
            www1 = 153.120.ccc.ccc
            www2 = 163.44.ddd.ddd
          }
          sorryserver = 133.242.eee.eee
        }
      }
    }
  }
}

service_types = {
  ping_mon = {
        plugin = extmon
        cmd = ["/usr/bin/ping", "-c", "3", "-W", "1", "%%ITEM%%"]
        interval = 10
        timeout = 5
        up_thresh = 5
        ok_thresh = 3
        down_thresh = 2
  }
}

/etc/gdnsd/zones/gslb.src.sakura.ad.jp

$TTL 86400

@     SOA ns1 hostmaster (
       2016092100   ; serial
             7200   ; refresh
             30M    ; retry
             3D     ; expire
             10     ; ncache
)

@     NS      ns1
@     NS      ns2
ns1   A       133.242.aaa.aaa
ns2   A       163.44.bbb.bbb

www     10      DYNA    metafo!www

直接的にソーリーサーバを設定することはできないので、metafoプラグインを使用します。これは前回までに紹介したmultifoプラグイン(DNSラウンドロビン)やweightedプラグイン(重み付け応答)と組み合わせて使用します。

metafoプラグインでは、datacenterという概念を定義できるようになっています。先頭に定義したdatacenterより順次フォールバックすることが可能です。

上記設定例では、mainsorryserverの2つのdatacenterを定義していますので、mainが全てダウンするとsorryserverがアクティブとなります。結果的に、2台のWebサーバ(153.120.ccc.ccc, 163.44.ddd.ddd)が両方ともダウンした際に、ソーリーサーバ(133.242.eee.eee)をレスポンスする挙動になります。

なお、上記設定例においてsorryserver側にいずれのプラグインも適用していませんので、ヘルスチェックは行われません。sorryserverで指定したIPアドレスが生きてようと死んでようと、mainがダウンした時にはこのIPアドレスを応答しますのでご注意ください。

ちなみに、metafoプラグインのマニュアルは以下にあります。
https://github.com/gdnsd/gdnsd/wiki/GdnsdPluginMetafo

動作確認

digコマンドでDNS応答を確認します。

両方のサーバがアップしている状態

$ dig +short www.gslb.src.sakura.ad.jp
153.120.ccc.ccc
163.44.ddd.ddd

両方のサーバがダウンしている状態

$ dig +short www.gslb.src.sakura.ad.jp
133.242.eee.eee

後者のケースで正しく指定したソーリーサーバのIPアドレスのみをレスポンスできていることが確認できます。

なお、metafoプラグインを使用せず(前回までのようにmultifoやweightedプラグインのみを使用した設定)全てのサーバがダウンした場合、全てのサーバがアップしているとみなしてDNSレスポンスを行います。

weightedプラグインと組み合わせる場合

勘のいい方ならお分かりかと思いますが、weightedプラグインを使用しつつソーリーサーバを指定するには、以下のようになります。

        dcmap = {
          main = {
            plugin = weighted
            up_thresh = 0.00000001
            service_types = ping_mon
            www1 = [ 153.120.ccc.ccc, 1 ]
            www2 = [ 163.44.ddd.ddd,  3 ]
          }
          sorryserver = 133.242.eee.eee
        }

ところで・・

だいぶ前になりますが、さくらのクラウドのGSLBでもソーリーサーバ設定機能が実装されました。是非ご活用ください :-)
http://cloud-news.sakura.ad.jp/2016/06/30/gslb-sorryserver/

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11