さくらの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)の名前 (※) コントロールパネルで管理する際に分かりやすい名前を入力します。
追加ストレージ(NFS)の説明 (※) コントロールパネルで管理する際に分かりやすい説明を入力します。
IPアドレス ローカルネットワークのIPアドレスを入力します。
ネットマスク ローカルネットワークのネットマスクを入力します。

(※)は任意項目

「支払い方法」を選択します。
選択した支払い方法に関する情報を確認して、問題なければ「次に進む」をクリックします。
※ お試し期間は「クレジットカード」を選択した場合のみご利用可能です。
※ 「銀行振込」「請求書払い」をご選択の場合、弊社にて入金が確認でき次第、NFSが利用可能となりますのでご注意ください。入金が確認できるまでは「準備中」のステータスとなります。

お申込みの内容を確認し、「約款の確認」の内容に同意いただけましたら「同意する」にチェックを入れて「申し込む」をクリックします。

スイッチの作成・設定

スイッチの作成

さくらの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を指定してください