さくらのVPSで実現する3拠点DR(ディザスタリカバリ)

本ドキュメントでは、 さくらのVPS を利用してDR(ディザスタリカバリ)を目的としたサーバ構成例をご案内します。
なお、複数拠点にサーバを設置する構成のため、さくらのクラウドのオプションサービスを利用してGSLB(広域負荷分散)も導入します。

前提条件

  • 同一ゾーン内のサーバー同士の接続には「スイッチ」が必要です。

  • 複数拠点にサーバーを設置するため、拠点間(リージョン間)の接続や広域負荷分散には、さくらのクラウドで提供中のオプションサービス「 ブリッジ接続 」「 GSLB(広域負荷分散) 」が必要です。

  • 接続できる さくらのVPS はV3以降(2012年3月29日以降のプランにて申し込まれたサーバー)です。

サーバ構成例

  • 東京リージョンと大阪リージョンに設置したサーバーを冗長化

  • 石狩リージョンの「NFS」でバックアップを取得

  • さくらのクラウドの「GSLB」を利用して負荷分散

サーバ構成例の補足

  • 東京リージョンと大阪リージョンの2箇所にWebサーバを設置し、GSLB(広域負荷分散)でロードバランシングします。

  • 東京リージョンのDB(マスター)サーバーから同期方式で、大阪リージョンのDB(スレーブ)サーバーはデータを取得しています。

  • 東京/大阪リージョンのWebサーバーは、通常、DB(マスター)サーバー側を参照しています。

  • DB(マスター)サーバーが故障した場合、DB(スレーブ)サーバーが昇格してDB(マスター)になります。

  • NFSでは、DB(マスター)サーバーのバックアップを1日1回取得して世代管理を行っています。

構築作業

設定例が多岐にわたるため、本ドキュメント内ではWebサーバーやDBサーバーの構築方法はご案内しておりません。お客様にて東京リージョンと大阪リージョンに各サーバーをご用意ください。
構築作業として以下の流れでご案内いたします。
  1. NFSの追加・設定

  2. スイッチの追加・設定

  3. ブリッジの追加・設定

  4. DB(マスター)サーバーとNFSの疎通確認

  5. GSLBアプライアンスの追加・設定

NFSの追加・設定

DB(マスター)サーバーのバックアップ保存先として、NFSを利用します。

NFSの追加

「新規追加」を選択し、「NFS」をクリックします。

お支払いパターン、NFSの容量、リージョンを選択します。

ネットワーク情報を設定します。

IPアドレス

ローカルネットワークのIPアドレスを入力します。

ネットマスク

ローカルネットワークのネットマスクを選択します。

任意でNFSの名前を入力し、「お支払い方法選択へ」をクリックします。

「お支払方法」を選択し、その他の申込内容に誤りがないか確認します。

支払いパターン

前の画面で選択した内容の確認および変更が可能です。

支払い方法

「クレジットカード」でお支払いの場合のみ、2週間のお試し期間をご利用いただけます。

ご請求額

毎月または毎年のお支払い金額と初回請求金額をご確認ください。

約款を確認し、「同意する」にチェックを入れ、「お支払いを確定する」をクリックします。

スイッチの追加・設定

スイッチの追加

さくらのVPS のコントロールパネルにログイン、「新規追加」を選択し、「スイッチ」をクリックします。

必要な情報を選択、または入力して「スイッチを追加」をクリックします。

スイッチを追加するゾーン(※)

スイッチを追加するゾーンを選択します。

名前

スイッチの名前を入力します。

説明

スイッチの役割など、管理する際に分かりやすい説明を入力します。

(※)は必須項目

東京 / 大阪 / 石狩でそれぞれ、接続するサーバと同じゾーンにスイッチを追加してください。

サーバとスイッチの接続

左メニューの「サーバ」を選択し、スイッチと接続するサーバの名前をクリックします。
※サーバは「停止中」の状態にしてください。

「ネットワーク」タブ内の「ネットワークインターフェース」から「接続先を設定する」をクリックします。

スイッチと接続するネットワークインターフェースを選択し、表示された接続先スイッチを選択します。その後、「接続先を設定」をクリックします。

東京 / 大阪 / 石狩の対象サーバをすべてスイッチに接続してください。

ブリッジ接続の追加・設定

複数拠点間でサービスを接続するため、「ブリッジ接続」の追加や設定を行います。

ブリッジの追加

「さくらのクラウド」のログイン画面からさくらインターネット会員としてログインします。

「さくらのクラウド(IaaS)」のアイコンをクリックします。

ブリッジを追加するゾーンを選択します。
※お客様の任意のゾーンをご選択ください

「ネットワーク」から「ブリッジ」をクリックします。

「追加」をクリックします。

「名前」と「説明」を入力(どちらも任意)して、下部の「作成」をクリックします。

確認画面が表示されますので「作成」をクリックします。

ステータスが「成功」になれば、ブリッジの追加は完了です。「閉じる」をクリックして追加作業を終了します。

ブリッジにスイッチを接続する

ブリッジを追加したゾーンを選択します。

「ネットワーク」から「ブリッジ」をクリックします。

スイッチと接続するブリッジをダブルクリック、または選択してから「詳細」をクリックします。

「VPSスイッチ」をクリックします。

「接続」をクリックします。

VPS側のスイッチを「-▼」から選択して、「接続」をクリックします。

ステータスが「成功」になれば接続完了です。
東京 / 大阪 / 石狩の該当スイッチをすべて接続してください。

DB(マスター)サーバーとNFSの疎通確認

マウントするサーバーの設定

ネットワークインターフェースへのローカルIPアドレス設定

VNCコンソール等でDB(マスター)サーバーにログインし、コマンドによる編集や設定ファイルの編集・新規作成を行います。

DB(マスター)サーバー

ローカルIPアドレス 192.168.1.1 / サブネットマスク 255.255.255.0

NFS

ローカルIPアドレス 192.168.1.2

【設定例】
ネットワークインターフェース(eth1/ens4)にローカルIPアドレス「192.168.1.1」とネットマスク「255.255.255.0」を設定した後、NFSのローカルIPアドレス「192.168.1.2」へ疎通確認をする。
[CentOS 6]

設定ファイルを編集(または新規作成)する
$ vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE="eth1"
IPADDR="192.168.1.1"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Ethernet"

設定を反映させる
$ ifup eth1

反映後の確認方法
$ ifconfig eth1

eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
     inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0

$ ping 192.168.1.2
pingの応答がない場合、eth1に接続したスイッチがブリッジに接続されているか確認してください。
[CentOS 7]

NICの確認
$ nmcli device show eth1

GENERAL.DEVICE: eth1
GENERAL.TYPE: ethernet
GENERAL.HWADDR: XX:XX:XX:XX:XX:XX
GENERAL.MTU: 1500
GENERAL.STATE: 30 (disconnected) ←デバイスが切断された状態
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: on

NICを接続する
$ nmcli connection add type ethernet ifname eth1 con-name eth1

NICにローカルIPアドレスを追加する
$ nmcli connection modify eth1 ipv4.method manual ipv4.addresses "192.168.1.1/24" ipv6.method "ignore"

追加後の確認方法
$ nmcli device show eth1

GENERAL.DEVICE: eth1
GENERAL.TYPE: ethernet
GENERAL.HWADDR: XX:XX:XX:XX:XX:XX
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected) ←デバイスが接続された状態
GENERAL.CONNECTION: eth1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/XX
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.1.1/24 ←ローカルIPアドレスが設定されている
IP4.GATEWAY: --
IP6.GATEWAY: --

$ ping 192.168.1.2
pingの応答がない場合、eth1に接続したスイッチがブリッジに接続されているか確認してください。
[Ubuntu 16.04]

NICに割り当てられたインターフェース名称を確認する
$ ip address show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 9c:a3:ba:01:ad:c4 brd ff:ff:ff:ff:ff:ff
 inet XXX.XXX.XXX.XXX/23 brd 160.16.51.255 scope global ens3
 valid_lft forever preferred_lft forever
3: ens4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
 link/ether 9c:a3:ba:03:34:64 brd ff:ff:ff:ff:ff:ff
4: ens5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
 link/ether 9c:a3:ba:04:bb:04 brd ff:ff:ff:ff:ff:ff

設定ファイルを編集する
$ sudo vi /etc/network/interfaces

auto ens4
iface ens4 inet static
        address 192.168.1.1
        netmask 255.255.255.0

設定を反映させる
$ sudo ifup ens4

反映後の確認方法
$ ip address show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 9c:a3:ba:01:ad:c4 brd ff:ff:ff:ff:ff:ff
 inet XXX.XXX.XXX.XXX/23 brd 160.16.51.255 scope global ens3
 valid_lft forever preferred_lft forever
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 9c:a3:ba:03:34:64 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.1/24 brd 192.168.1.255 scope global ens4
 valid_lft forever preferred_lft forever
4: ens5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
 link/ether 9c:a3:ba:04:bb:04 brd ff:ff:ff:ff:ff:ff

$ ping 192.168.1.2
pingの応答がない場合、ens4に接続したスイッチがブリッジに接続されているか確認してください。

サーバにNFSを認識させる

必要なアプリケーションをインストールし、NFSをマウントします。
NFSのエクスポートディレクトリは「/export」です。

【設定例】
NFSのローカルIPアドレスが「192.168.1.2」で「/mnt」ディレクトリにマウントする。
[CentOS 6]
$ yum -y install rpcbind nfs-utils
$ chkconfig netfs on
$ mount 192.168.1.2:/export /mnt
[CentOS 7]
$ yum -y install rpcbind nfs-utils
$ mount 192.168.1.2:/export /mnt
[Ubuntu 16.04]
$ sudo apt update
$ sudo apt -y install nfs-common
$ sudo mount -t nfs 192.168.1.2:/export /mnt

マウントの確認

マウントの状態は、dfコマンドやmountコマンドで確認できます。「192.168.1.2:/export 〜」のようにNFSのローカルIPアドレスが表示されていればマウント完了です。

$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda3 18193828 1702472 15560492 10% /
tmpfs 250952 0 250952 0% /dev/shm
/dev/vda1 243823 66289 164734 29% /boot
192.168.1.2:/export 100762112 1727616 93909376 2% /mnt
$ mount
/dev/vda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/vda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.1.2:/export on /mnt type nfs (rw,vers=4,addr=192.168.1.2,clientaddr=192.168.1.1)

システム起動時にNFSを認識させる

サーバーを再起動した際、NFSを自動でマウントするように「/etc/fstab」ファイルを編集します。

[CentOS]
$ vi /etc/fstab

以下を追加する
192.168.1.2:/export /mnt nfs defaults 0 0
[Ubuntu]
$ sudo vi /etc/fstab

以下を追加する
192.168.1.2:/export /mnt nfs defaults 0 0

以上でNFSを利用するための設定は完了です。

補足事項

NFSに接続できなくなった場合

NFSをハードマウントしている場合、NFSが収容されているホストサーバー側にメンテナンスなどが発生した際、マウントしたサーバーから接続できなくなることがあります。
この場合は一度マウント状態を解除した後、再度マウントしてください。
[CentOS]
$ umount -l /mnt/
$ service netfs restart
$ mount 192.168.1.2:/export /mnt
[Ubuntu]
$ sudo umount -l /mnt/
$ sudo mount -t nfs 192.168.1.2:/export /mnt

GSLBアプライアンスの追加・設定

ここではさくらのクラウドのオプションサービスである「GSLB(広域負荷分散)」の追加と、GSLBのロードバランシング先となる実サーバを設定します。

なお、DNSのCNAMEを利用するサービスのため、「example.jp」のようなCNAMEが設定できないFQDNではご利用頂けません。
※ xn–で始まるPunycodeの設定にも対応しています。

また、ヘルスチェックは以下のIPアドレス範囲より行います。登録した実サーバ側では、以下の各IPアドレス範囲から指定したヘルスチェック種類に対して正常に応答するよう設定を行ってください。

153.120.86.80/28
133.242.241.0/28
133.242.248.16/28
27.133.134.208/28
27.133.140.32/28

GSLBの料金や仕様については、さくらのクラウド ドキュメント「 GSLB(広域負荷分散) 」をご確認ください。

GSLBアプライアンスの追加

「さくらのクラウド」のログイン画面からさくらインターネット会員としてログインします。

「グローバル」のアイコンをクリックすると、ダッシュボードが表示されます。

左メニューの「GSLB」をクリックします。

「追加」をクリックします。

必要な情報を選択または入力して「作成」をクリックします。

監視方法(*)

IPアドレス、ポート番号で指定したロードバランシング先のサーバーの監視方法を http、https、ping、tcp より設定します。
http、https を指定すると追加設定項目が表示され、Hostヘッダと監視対象のパスと正常時に返答されるレスポンスコードの設定ができます。
tcp を指定すると、監視対象ポート番号の追加設定項目が表示されます。

チェック間隔(秒) (*)

実サーバーの死活監視を実行する間隔を設定します。設定値は10~60の範囲の整数値となります。

重み付け応答 (*)

実サーバーに設定したIPアドレスごとに、応答確率を調整可能な重み付け設定を行うかどうかを選択します。

ソーリーサーバー

バランシング先が全てダウン状態となった場合に誘導する先を設定します。

名前/説明/タグ/アイコン

サーバーやディスク、他のアプライアンスと同様に、わかりやすい名前設定やタグ、アイコン機能による分類が可能です。

※ (*)は必須項目です
※ 作成時に指定した「監視方法」と「チェック間隔」は、GSLB詳細画面にある「監視方法の変更」ボタンをクリックすることで変更することが可能です(「反映」操作は不要)

ステータスが「成功」になればGSLBの追加は完了です。「閉じる」を押します。

左メニューの「GSLB」をクリックすると、作成済みのGSLB一覧が表示されます。作成と同時に生成されるFQDNもここで確認できます。

以上でGSLBアプライアンスの作成は完了です。

実サーバーの設定

ここではサーバー構成例の「東京 / 大阪」リージョンにある2台のWebサーバを設定します。
左メニューの「GSLB」をクリックしてGSLB一覧を表示し、設定を行うGSLBをダブルクリックします。

「実サーバ」をクリックした後、「追加」をクリックします。

必要な情報を選択または入力して、「作成」をクリックすると実サーバーが追加されます。

IPアドレス

ロードバランシング先サーバのIPアドレスを設定します。

有効/無効

ロードバランシング対象とするかどうかを指定します。実サーバ設定時に「有効」に設定すると、追加操作直後にロードバランシング対象に含まれます。

重み値

実サーバに設定したIPアドレスごとの応答確率を、1~10000の範囲の整数値で指定します。

※ (*)は必須項目です

実サーバを追加してから「反映」をクリックします。

操作確認の画面で「はい」をクリックします。この操作によってGSLBアプライアンス側へ設定が反映されます。

以上で実サーバの設定は完了です。

FQDNのDNS登録

ロードバランシング先となるWebサーバのFQDNへ、CNAMEとしてGSLBのFQDNを登録します。
以下は「www.example.jp」をロードバランシング用ホスト名として設定する場合のゾーンファイル記述例です。
www.example.jp IN CNAME site-000000000000.gslbN.sakura.ne.jp

※ CNAMEにはGSLB作成時や詳細画面に表示されるFQDNを指定してください