
F5 XC DNS LBのご紹介 <地理条件やルールに応じたDNSによるトラフィック分散の実現>
はじめに
前回のブログでは、F5 XCのDNS Zone Management(権威DNSサービス)をご紹介いたしました。
今回はその続きで、F5 XC で提供するDNS Load Balancerをご紹介いたします。
F5 XCで提供するDNS Load Balancer
前項ならびに前回ブログでもご紹介している通りF5 XC DNS は以下の2つのサービス・機能を展開しております。
DNS Zone Management
DNS Load Balancer Management
まず、DNS Load Balancerとは何かを簡単に説明します。
一般的にLoad Balancerと言うと弊社で取り扱っているF5社の代名詞ともいえるBIG-IPなどの製品、例えば外部からのHTTPリクエストを受信、複数のサーバに負荷分散を行う機器をイメージされる方も多いのではないでしょうか。この例のようにHTTP通信を分散する装置はHTTP Load Balancerと呼ばれます。
一方で、DNS Load Balancerは受信したDNSクエリに対し、指定のIPアドレスを応答する製品を指します。一見、DNSラウンドロビンと同じように思われるかもしれませんが、DNSラウンドロビンが1つのドメインに割り当てた複数のIPアドレスを機械的に応答するのに対し、DNS Load Balancerは応答するIPアドレスのステータスをチェックする、応答するIPアドレスを固定できる、などDNSラウンドロビンにはないメリットを持ちます。
F5 XCには、F5 XC DNS Load Balancer(以降、XC DNS LBと記載)というDNS Load Balancerサービスが含まれます。これはGeoIPによるレスポンス制御やDDoS対策(標準でビルドイン)、クライアントに近いF5社エンドポイントからDNSレスポンスを返すことによるDNSの高速応答、などの特徴をもつDNSトラフィックのバランシングを行うサービスです。
XC DNS LBは、DNSクエリ送信元に対して応答を指定するロードバランシングルールで構成されます。これらのルールを設定することで、クライアント(送信元IPアドレス)の地理情報を条件にDNSレスポンスを送信できます。つまり、日本からのDNSクエリに対してはIPアドレスA、アメリカからのDNSクエリに対してはIPアドレスB、といったように国ごとに応答するIPアドレスを変えるような制御が可能です。
また、ルールはスコアに基づき順序が付けられます。DNSクエリが複数のルールに合致する場合、スコアの高いルールが優先されます。また、スコアを下げた全てのDNSクエリが合致するルールを作成することで、スコアの高いルールに合致しない場合の応答を定義することができます。
XC DNS LBプールには、1つ以上のメンバー(DNSクエリに対して返答するIPアドレス)を含めることが可能で、メンバーに対してヘルスチェック(*1)を実行することで、ダウンしているメンバーを応答から除外することができます。
(*1) ヘルスチェックはHTTP / HTTPS / TCP / UDP / ICMPから任意に選択、実施するものとなります。
なお、前提としてF5 XCをご利用される場合はBase Packageの契約が必須となります。このBase Packageを契約いただくことで、XC DNS LB を50個まで無償でご利用いただけます。ただし、DNS Load Balancerをご利用いただくための前提条件として、対象のドメインをF5 XC DNSにプライマリDNSとしてホストしていることが必要となりますのでご留意ください。
プライマリDNSについては前回ブログで紹介いたしましたので、本ブログでは前述の条件を満たしていることを前提として以降のXC DNS LB設定および動作確認について解説を行っていきます。
F5 XC DNS LBの設定方法
XC DNS LBの設定は、オプション項目を含む以下の5つのステップで構成されます。
①Geo-Location Set の作成(オプション)
②DNS LB Health Checkの作成(オプション)
③DNS LB Poolの作成(必須)
④DNS LBの作成(必須)
⑤プライマリDNSゾーンへの組み込み(必須)
言葉のみでは各設定がどう関連するか把握しにくいかと思いますので、①~⑤の各設定オブジェクトの相関関係を簡単に図示いたします。
※紺色の枠が必須項目、水色の枠がオプション項目となります

それでは、各設定の流れを解説していきたいと思います。なお、以降の手順はF5 XCコンソールでの操作を前提としております。また、Geo-Location設定、Health Checkが不要な場合は、「③DNS LB Poolの作成」からご覧ください。
①Geo-Location Set の作成(オプション)
1.DNS Management > Manage > DNS Load Balancer Management > Geo-Location Sets 画面でAdd Geo-Location Setをクリック
2.Location set画面でルールを作成
必須項目は下記の2つとなります。
設定項目 | 設定内容 |
Name | 一意の名前を設定 |
Geolocation Label Selector | 地理条件を設定 |
下記はCountryでJPを指定した場合の例になります。一意の名前と、条件を指定したら設定を保存します。

以上でGeo-Location Setの作成は完了です。
②DNS LB Health Checkの作成(オプション)
1.DNS Management > Manage > DNS Load Balancer Management > DNS Load Balancer Health Checks 画面からAdd DNS Load Balancer Health Checkをクリック
2.Health Check の作成画面でルールを作成
必須項目は下記の3つとなります。
設定項目 | 設定内容 |
Name | 一意の名前を設定 |
Health Check Type | Health Check Typeを選択。選択可能なTypeは下記 HTTP(デフォルト) / HTTPS / TCP / UDP / ICMP |
Health Check Port | 送信先ポート番号 ※TypeでICMPを指定した場合は選択不可 |
下記はHTTP Health Checkをデフォルト設定で設定した場合の例になります。一意の名前と条件を指定したら設定を保存します。

以上でDNS LB Health Checkの作成は完了です。
③DNS LB Poolの作成(必須)
1.DNS Management > Manage > DNS Load Balancer Management > DNS Load Balancer Pools 画面からAdd DNS Load Balancer Poolをクリック
2.DNS Load Balancer Pool の作成画面でプールを作成
必須設定項目は下記となります。
設定項目 | 設定内容 |
Name | 一意の名前を設定 |
Pool Type | DNSレコードタイプを指定。デフォルトはA その他、AAAA/MX/CNAME/SRVが選択可能 |
Pool Members | Poolに含まれるメンバーを設定。設定項目は本表下部、設定項目(Pool Member) を参照 |
DNS Load Balancer Health Check | ②で作成したHealth Checkを設定。デフォルトはDisable |
Maximum Answers | レスポンスに含むリソースレコードの数の制限。デフォルトは1 |
Load Balancing Mode | バランシング方式を設定。選択可能な項目は本表下部、Load Balancing Modeを参照 |
TTL choice、TTL (s) | TTLの設定。要件に応じて設定。デフォルトではTTL30秒。 |
・設定項目(Pool Member)
設定項目 | 設定内容 |
Public IP | DNSクエリに対して応答するIPアドレス |
Load Balancing RatioやLoad Balancing Priorityは複数のメンバーを登録する際、どのメンバーが選択されるかの重み付けを行う項目です。特に要件がなければデフォルトのままで問題ありません。
・Load Balancing Mode
Load Balancing Mode | 動作説明 |
Round-Robin | プールメンバー間で負荷を均等に分散 (デフォルト) |
Ratio-Member | 設定された比率に基づいてプールメンバーにクエリを分散 |
Static-Persist | 特定のメンバーが応答した後、それ以降のクエリを永続的に転送 |
Priority | プールメンバーに割り当てられた優先度に基づいてクエリを分散 |
下記はLB Poolの設定例になります。デフォルトから変更した箇所を赤枠で囲っていますが、一意の名前と、Pool Memberの指定、②で作成したHealth Checkの有効化を行っています。 必要な設定を行った後、設定を保存します。

以上でDNS Load Balancer Poolの作成は完了です。
④DNS LBの作成(必須)
1. Home > DNS Management > Manage > DNS Load Balancer Management > DNS Load Balancers 画面からAdd DNS Load Balancerをクリック
2. DNS LBの作成画面でLBを設定
必須設定項目は下記となります。
設定項目 | 設定内容 |
Name | 一意の名前を設定 |
Pool Type | レコードタイプを指定。デフォルトはA。 その他、AAAA/MX/CNAME/SRVが選択可能 |
Response Cache Parameters Choice | レスポンスキャッシュの設定。デフォルトはDisable Response Cache(レスポンスキャッシュ無効) |
Load Balancing Rules | 負荷分散のルールを定義 |
Load Balancing Rulesでは①で作成したGeo-location Setや、プリセットの項目を設定してルールを作成することになりますが、ここでは作成できるルールの例を紹介いたします。
設定項目 | 設定内容 |
Client Selection | ルールを適用する条件を設定。クライアントの発信元位置情報、ASN、IPプレフィックスなどの条件をもとに設定、または①で作成したGeo-Location Setを選択 |
Action | ルールに合致した場合の動作を設定 |
Use DNS Load Balancer pool | 条件に合致した際、使用するプール(③で作成したもの)を選択 |
なお、必須ではございませんがスコアを設定することでルールに重み付けを行う事も可能です。スコアを設定することで、複数のルールが特定のクエリに一致した場合、スコアが最も高いルールがクエリの処理に使用されます。スコアを設定することにより、より細かい条件を設定することが可能となります。
また、オプションになりますが、Fallback Poolの設定を行う事が可能です。これは、一致するルールがないときに応答するプールとなります。Fallback Poolの設定用途としては、全てのBalancer Pool がダウンした際にFallback Pool に設定したSorryサーバに誘導することなどが挙げられます。
下記はDNS LBの設定例になります。一意の名前を設定、レコードタイプの指定、Load Balancing Rulesの設定、Fallback Poolの設定を行っています。 必要な設定を行った後、Add DNS Load Balancerをクリックし、設定を保存します。

以上でXC DNS LBの作成は完了です。
⑤プライマリDNSゾーンへの組み込み(必須)
XC DNS LBを作成した後、ロードバランサーレコードをDNSゾーンに追加する必要があります。対象のドメインをF5 XC DNSにプライマリDNSとしてホストしていることが必要となることはすでに説明させて頂いたので、ここではすでに作成済みのDNSゾーンに追加していきます。
1. Home > DNS Management > Manage > DNS Zone Management からDNS LBを設定するゾーンの”…”をクリックし、一覧からManage Configurationをクリック


2. 画面右上のEdit Configurationをクリック

3. DNS Zone Configuration項目のEdit Configuration をクリック

4. Resource Record Sets のAdd Itemをクリック

5. Record SetでDNS Load Balancerを選択、DNS Load Balancer Recordに作成したDNS LBを選択し、Applyをクリック

6. Resource Record Sets 欄にDNS LBが追加されたことを確認したら、Applyをクリックし、DNSゾーンの設定画面に戻ったらSave DNS Zoneをクリック

以上でプライマリDNSゾーンへの組み込みは完了です。
XC DNS LBを使用するために必要な設定の説明は以上となります。
F5 XC DNS LB の動作確認
次は、実際に設定を行った際の動作を確認してみましょう。
動作確認のため、下記の設定を行っています。
・XC DNS LB

・XC DNS Zone

上記の設定によって期待される動作は下記となります。
・日本を送信元とするDNSクエリ受信時
test-pool1:50.50.xx.xxがDNS応答
・日本以外を送信元とするDNSクエリ受信時
test-failback:20.20.xx.xxがDNS応答
つまり、test.tmx.example.cloudに対してDNSクエリを投げた場合、送信元IPアドレスが日本であればtest-pool1から、それ以外であればtest-fallbackから応答が返ってくることになります。
実際に名前解決を行ってみましょう。
まずは日本を送信元とした場合の結果です。
japan-geo に合致するため、test-pool1(50.50.xx.xx)が応答していることが確認できます。
# nslookup test.tmx.example.cloud ns1.f5clouddns.com
Server: ns1.f5clouddns.com
Address: 107.xxx.xxx.xxx#53
Name: test.tmx.example.cloud
Address: 50.50.xx.xx
#
次に、日本以外を送信元とした場合の結果です。
一致するLoad Balancing Rulesがないため、Fallback Pool に設定されたtest-fallback(20.20.xx.xx)が応答していることが確認できます。
$ nslookup test.tmx.example.cloud ns1.f5clouddns.com
Server: ns1.f5clouddns.com
Address: 107.xxx.xxx.xxx#53
Name: test.tmx.example.cloud
Address: 20.20.xx.xx
$
このように、同じFQDNに対するDNSクエリであっても、ルールに応じて応答するDNSレスポンスが変わっていることが確認できます。
おわりに
今回はF5 XC DNSで提供するXC DNS LBをご紹介させて頂きました。
XC DNS LBのユースケースとしては、ヘルスチェックとスコアを用いることで、通常時はメインで使うサイトAに、サイトAへのヘルスチェックが失敗した時はスタンバイとして用意しているサイトBに、といったDR構成を採用するケースが挙げられます。これにより、何らかの要因でサイトAが利用できなくなった場合でも自動的にサイトBに切り替えることでエンドユーザへのサービス提供を継続することができます。
ほかにも、マルチクラウド、オンプレ環境に展開したサイトに重み付けを行うことで、DNSレベルでトラフィック分散を行うケースが挙げられます。
特定のリージョンからは応答を返し、それ以外のリージョンにはダミーの応答をさせることも可能なので、DNSレベルでエンドユーザトラフィックの制御を行えるのがXC DNS LBの特徴です。
さらに、先に記載した通りF5 DNS LBを利用するにはF5 XCのBase Packageをご契約いただくことが必要となります。このF5 XCのBase PackageではF5 XC WAAPの利用も可能となるため、XC DNS LBに加えて、クラウドWAFの導入も行うことができます。F5 XC WAAPは長い実績をもつF5社のWAFエンジンを搭載しており、多彩な設定が行えるクラウドWAFとなります。Base Packageを契約いただくことで、XC DNS LB以外の機能も使用することができるのが、F5 XCの大きなメリットの一つです。
弊社ブログでF5 XCで提供するWeb Application & API Protection (WAAP)機能を様々ご紹介しておりますので、こちらも是非ご覧ください。
本ブログをご覧になり、F5 XCに興味を持っていただけましたら以下のリンクよりお気軽に弊社までお問い合わせください。導入についてお客様の要件を踏まえた提案を行わせていただきます。
最後までご覧いただきありがとうございました。



