FUJITSU Cloud Service K5
IaaS 設計・構築ガイド(デザインパターン・実装サンプル集)

DNS切り替えパターン


要求事項

サービスの可用性を考慮した構成をK5上で実現したいといった要求事項に対応するパターンです。 一般に、サーバは突如停止する可能性が 0 ではありません。 クラウドでも、 震災など何らかの理由でリージョン単位で障害が起きる可能性があります。 K5では、このようなサービス提供の機会損失を防ぎ、可用性を向上させるためのサービスとしてDNSサービスを提供しています。

対応するK5デザインパターン概要

DNSサービスのフェイルオーバー機能を利用することで、万が一リージョン単位で障害が起きた場合に、参照系システム(内容が動的に変化しないコンテンツを表示など)であれば本番用リージョンからDR用リージョンへ自動的にシステムを切り替えることが可能です。

構造 (イメージ図)

実装サンプル

K5 DNSサービスに対する自動フェイルオーバーの設定は以下の手順となります。
はじめに、DNSサービスを管理するためのプロジェクトを作成します。
次に、使用するドメインを取得し、DNSサービスにゾーンを登録します。
最後に、DNSサービスにAレコードを追加し、自動フェイルオーバーを設定します。

1.DNS管理用のプロジェクト作成

IaaSポータルでは、東日本リージョン1のみDNSメニューが選択できます。
事前準備として東日本リージョン1でDNS管理用のプロジェクトを作成します。

  • K5ポータル画面で、メニュータブから「IaaS管理」をクリックします。
  • 「IaaS管理」画面右上のタブをクリックし、リージョンとして「jp-east-1」を選択します。
  • 「プロジェクト一覧」画面で、「新規作成」ボタンをクリックします。
  • 「プロジェクトの作成」⇒「プロジェクト」画面で、以下の内容を登録し、「次へ」ボタンをクリックします。
項目
必須
設定値内容
プロジェクト名必須DNS管理用のプロジェクト名半角英数字でプロジェクト名を指定
  • 「プロジェクトの作成」⇒「プロジェクトメンバー」画面で適切なプロジェクトメンバーを指定して「次へ」ボタンをクリックします。追加メンバーが不要であれば何も入力せずに「次へ」をクリックします。
  • 「プロジェクトの作成」⇒「確認」画面で、以下の内容を登録し、「作成」ボタンをクリックします。

2.ドメイン取得

レジストラもしくはレジストラの指定事業者からゾーン登録用のドメインを取得してください。
ドメインはK5から取得できません。
例えば、K5 NCでドメインを取得する際は以下のような手順になります。
クラウドユーザーガイド(DNS:ドメイン取得)

3.ゾーン登録

(1) 認証レコード登録
K5 DNSにゾーン登録をするためには、まず、レジストラに認証用レコードを登録します。

  • 設定項目(REST API)
項目
内容
$DNShttps://dns.cloud.global.fujitsu.com
(K5 DNSのエンドポイント)
$ZONE_NAMEゾーン登録対象のドメイン名
  • 実行API

curl -is $DNS/v1.0/hostedzone -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/xml" -H "Accept: application/json" -d '<?xml version="1.0" encoding="UTF-8"?><CreateHostedZoneRequest xmlns="http://docs.cloudcommunity.global.fujitsu.com/dns/api/v1.0/"><Name>'$ZONE_NAME'</Name></CreateHostedZoneRequest>'

400 のエラーとともに認証用レコードが返却されます。

name_server:xxxxxxxxx.ns-verify.dns.nifcloud.com
txt:nifty-dns-verify=xxxxxxxxx

  • レジストラにて認証用レコードをNameServerとして登録します。
  • レジストラにて認証用レコードをTXTレコードとして登録します。

(2) ゾーン作成

認証用レコードをレジストラに登録するとゾーン作成ができるようになります。

  • 設定項目(REST API)
項目
内容
$DNShttps://dns.cloud.global.fujitsu.com
(K5 DNSのエンドポイント)
$ZONE_NAMEゾーン登録対象のドメイン名
  • 実行API

curl -is $DNS/v1.0/hostedzone -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/xml" -H "Accept: application/json" -d '<?xml version="1.0" encoding="UTF-8"?><CreateHostedZoneRequest xmlns="http://docs.cloudcommunity.global.fujitsu.com/dns/api/v1.0/"><Name>'$ZONE_NAME'</Name></CreateHostedZoneRequest>'

  • 正常にゾーンが作成されると、NameServerが返却されます

ns0.dns.nifcloud.com
ns1.dns.nifcloud.com

  • レスポンス例

HTTP/1.1 200 Connection established
HTTP/1.1 201 Created
X-Fcx-Endpoint-Request: EXECUTED_REQ009025382_201 Date: Mon, dd Feb yyyy 09:28:34 GMT
Server: Apache
x-fcx-request-id: 884933b5-d6dd-4fec-9fa5-51254fa0d5f4
Content-Type: application/xml
Content-Length: 644
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CreateHostedZoneResponse xmlns="http://docs.cloudcommunity.global.fujitsu.com/dns/api/v1.0/"> <HostedZone><Id>example.com</Id><Name>example.com</Name>example.com<ResourceRecordSetCount>0</ResourceRecordSetCount> </HostedZone> <ChangeInfo><Id>xxxxxxxxxxx</Id> <Status>INSYNC</Status> <SubmittedAt>2018-02-26T09:28:35.034Z</SubmittedAt> </ChangeInfo><DelegationSet>
<NameServers>
<NameServer>ns0.dns.nifcloud.com</NameServer>
<NameServer>ns1.dns.nifcloud.com</NameServer></NameServers>
</DelegationSet></CreateHostedZoneResponse>

(3) ゾーンの登録確認

  • APIでゾーンの登録状況を確認します。登録対象のゾーン名が表示されれば、登録完了です。
  • 設定項目(REST API)
項目
内容
$DNShttps://dns.cloud.global.fujitsu.com
(K5 DNSのエンドポイント)
$ZONE_NAMEゾーン登録対象のドメイン名
  • 実行API

curl -s -X GET $DNS/v1.0/hostedzone/$ZONE_NAME -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/xml" | xmllint --format --encode utf-8 -

(4) ゾーン作成後の作業

レジストラにて認証用レコードを削除します。

  • 認証用NSレコードを登録した場合は、NSレコードを削除します。
  • 認証用TXTレコードを登録した場合は、TXTレコードを削除します。

4.フェイルオーバー設定

フェイルオーバー機能は、A, AAAAレコードのみご利用可能です。
実装サンプルではAレコードを利用したフェイルオーバー設定例を説明します。 IaaSポータルよりフェイルオーバーの設定が可能です。

(1) プライマリーサーバの設定

プライマリーサーバのAレコードを登録します。

  • K5ポータルにログインしIaaSポータルを選択します。
  • リージョンで「jp-east-1」を選択します。
  • 「ネットワーク」⇒「DNS」を選択します。
  • 「ネットワーク」⇒「DNS」画面で、作成したDNSゾーン名の「アクション」から「レコード管理」をクリックします。
  • 「DNS」⇒「レコード管理」の画面で、「+」をクリックします。
  • 以下を入力し、作成をクリックします。
項目
必須
設定値内容
レコード名必須www
Aレコード名
タイプ必須ADNSレコードのタイプ
TTL任意60秒単位でTTLを指定。既定では3600
必須プライマリーサーバのグローバルIPアドレスAレコードに登録するIPアドレス
ポリシー選択フェイルオーバーAレコード利用時のポリシーを選択
タブ項目
必須
設定値
フェイルオーバーの詳細フェイルオーバーの詳細選択PRIMARY
ヘルスチェック設定IPアドレス必須プライマリーサーバのグローバルIPアドレス
ポート必須80
プロトコル選択HTTP
ヘルスチェック先パス任意
ヘルスチェック先ドメイン名任意

(2) セカンダリサーバの設定
プライマリーサーバーと同様の設定でセカンダリサーバのAレコードを登録します。 セカンダリサーバは複数設定することが可能です。セカンダリが複数設定されている場合は、先に登録したレコードが優先されます。

  • 「DNS」⇒「レコード管理」の画面で、「+」をクリックします。
  • 以下を入力し、作成をクリックします。
項目
必須
設定値内容
レコード名必須www
Aレコード名
タイプ必須ADNSレコードのタイプ
TTL任意60秒単位でTTLを指定。既定では3600
必須セカンダリサーバのグローバルIPアドレスAレコードに登録するIPアドレス
ポリシー選択フェイルオーバーAレコード利用時のポリシーを選択
タブ項目
必須
設定値
フェイルオーバーの詳細フェイルオーバーの詳細選択SECONDARY
ヘルスチェック設定IPアドレス必須セカンダリサーバのグローバルIPアドレス
ポート必須80
プロトコル選択HTTP
ヘルスチェック先パス任意
ヘルスチェック先ドメイン名任意

メリット・効果

DNSサービスのフェイルオーバー機能を利用した場合のメリット・効果は以下の通りです。

  • 参照系のシステムであれば、リージョン単位の障害があった際に自動的にシステムを切り替えることが可能です。
  • 他クラウドからK5への自動システム切り替えに使用することも可能です。

注意事項

  • 東日本リージョン1障害時は、DNSサービスの設定変更はできません。
  • バックエンドシステムでDB等がある場合には、別途データ同期等が必要です。
  • ヘルスチェック対象のIPアドレスはグローバルIPアドレスを指定してください。
  • 1つのFQDNに対して複数IPアドレスにアクセスを割り振るような構成できません。アクセス先のIPアドレスはプライマリーサーバとセカンダリサーバの稼働状況に応じてプライマリもしくはセカンダリに設定された1つのIPアドレスに決まります。
  • 各経路へのキャッシュ等が要因となり、プライマリーサーバからセカンダリサーバへの切り替えに設定したTTLよりも時間がかかる場合があります。弊社検証実績では、TTLを60秒として設定した場合に、切り替えに約5分を要しました。
  • 本パターンは2018年7月時点のK5(IaaS)で動作検証しています。



その他

  • フェイルオーバーを使用するときは、レコードのTTLを60秒にすることを推奨します。



関連資料

  • FUJITSU Cloud Service K5 マニュアル
    http://jp.fujitsu.com/solutions/cloud/k5/document/
    • サービスご紹介資料
    • IaaS 機能説明書
    • IaaS サービスポータルユーザーズガイド
    • IaaS APIユーザーズガイド
    • IaaS APIリファレンスマニュアル
    • IaaS HEATテンプレート解説書

(2018年7月検証)