活用マニュアル

DRサイトを作って耐障害性を高めたい

IDCFクラウドでは、地理的に離れたところにDR(ディザスタリカバリ)サイトを簡単に構築することができます。

IDCFクラウドの東日本リージョンと西日本リージョンのサーバーを連携させることで、万一、自然災害などが起こりどちらか一方で障害が発生した場合にも、サービスを継続させることができる、DRサイトの構築が可能です。

IDCFクラウド内でDRサイトを構築するには、東日本リージョンと西日本リージョンの連携方法について設計する必要があります。データが大量にあり、常に更新される場合はプライベートコネクトを契約し、東日本リージョンと西日本リージョンを結ぶことでセキュアな環境でデータのやり取りを高速に行うことが可能になります。一方、更新量もそこまで多くなく、バックアップ先として連携させるのであれば、DNSを用いてリーズナブルに構築させることが可能です。

ここでは、更新頻度の少ないWeb-DBの構成の例として、WordPressを構築して東日本リージョンをActiveとして稼働させ、西日本リージョンをStandbyとして構成し、災害時にはDNSにて手動で切り替えを行えるように環境を構築します。
※DNSを独自ドメインで設定してある前提となっています。

1. 東日本リージョンで本番サーバーを作成

今回はWordPressを用いて環境を構築します。Webサーバーの作成は、「Webサイトの本番環境を構築したい(Web1台構成)」を参照して行います。以降の手順は、活用マニュアル「Webサイトの本番環境を構築したい(Web1台構成)」が完了した状態からの手順となります。ただし、(2)のネットワークの設定は本マニュアルのコラム欄を参照してIPアドレスで作成してください。
 
※なお、サーバー名は本項ではeast01という名前で構築し、zoneはjouleを使用していますのでご注意ください。
本番サーバーを東日本リージョンにて構築し、スナップショットを取得して構築した本番サーバーをテンプレート化して元となるものを作成します。
 
①MySQLサーバーとphpのMySQL用ドライバーをインストールします。
 
[root@east01 ~]# yum install mysql-server php-mysql
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
~~~
Dependency Installed:
  mysql.x86_64 0:5.1.73-5.el6_6       perl-DBD-MySQL.x86_64 0:4.013-3.el6
  perl-DBI.x86_64 0:1.609-4.el6

Dependency Updated:
  mysql-libs.x86_64 0:5.1.73-5.el6_6
Complete!
[root@east01 ~]# 
							
② MySQLサーバーを起動します。

[root@east01 ~]# service mysqld start
MySQL データベースを初期化中:  Installing MySQL system tables...
~~~
mysqld を起動中:                                           [  OK  ]

[root@east01 ~]# 
							
③ WordPressをダウンロードして展開します。

[root@east01 ~]# wget https://ja.wordpress.org/latest-ja.zip
--2015-11-24 03:01:14--  https://ja.wordpress.org/latest-ja.zip
ja.wordpress.org をDNSに問いあわせています... 66.155.40.249, 66.155.40.250
ja.wordpress.org|66.155.40.249|:443 に接続しています... 接続しました。
~~~
2015-11-24 03:01:16 (4.38 MB/s) - `latest-ja.zip' へ保存完了 [7586644/7586644]
[root@east01 ~]# unzip latest-ja.zip
Archive:  latest-ja.zip
   creating: wordpress/
~~~
inflating: wordpress/wp-links-opml.php
[root@east01 ~]#
							
④MySQLにWordPressのDBとユーザーを作成します 
(ここではデータベースをwpdb、ユーザー名をwpuser、パスワードをwordpressで作成しています)

[root@east01 ~]# mysql -uroot -hlocalhost -e "create database wpdb" 
[root@east01 ~]# mysql -uroot -hlocalhost -e "grant all privileges on *.* to \
wpuser@localhost identified by 'wordpress'"
[root@east01 ~]# 
							
⑤WordPressをコンテンツ領域に配置します。 

[root@east01 ~]# mv wordpress /var/www/html/ 
							
⑥WordPressディレクトリのオーナーを実行ユーザー(apache)に変更し、確認します。 

[root@east01 ~]# chown apache:apache -R /var/www/html/wordpress
[root@east01 ~]# ls -ld /var/www/html/wordpress
drwxr-xr-x 5 apache apache 4096  9月 17 23:21 2015 /var/www/html/wordpress
							
⑦[東日本リージョン」をクリックしてサービスメニューを表示し、グローバルセクションより[DNS]をクリックしてDNSコントロールパネルを表示します。

 
⑧作成してあるDNSゾーン名をクリックしてレコード設定画面を表示します。
※DNSゾーンを作成していない場合は別途DNSゾーンを作成してください。

 
⑨[+レコード登録]をクリックしてeast01に向けたAレコードを登録します。
 
項目 設定内容
レコード名 任意(ここではwwwを指定)
タイプ A
east01のグローバルIPアドレス
TTL 600
 

 
⑩10分程度待って⑨で設定したドメインに対してWebブラウザでアクセス(http://設定したドメイン名/wordpress/)し[さあ、始めましょう!]をクリックしてWordPressのインストールを開始します。


 
⑪必要事項を記入してWordPressをインストールします。(任意で設定した場合、各パラメーターは設定したものと読み替えてください。)
 
項目 内容
データベース名 wpdb
ユーザー名 wpuser
パスワード wordpress
データベースのホスト名 localhost
テーブル接頭語 wp_
 
 

⑫インストール実行をクリックします。

 
⑬WordPressのブログ情報とログイン情報を記入し、[WordPressをインストール]をクリックしてブログを開設します。
 
項目 内容
サイトのタイトル 任意(ここではDRサイト)
ユーザー名 任意(ここではadmin)
パスワード 任意
メールアドレス 任意
プライバシー 任意(ここではテスト構築のため、チェックボックスを外す)
 
 

⑭成功しました!の画面が表示されればWordPressのインストールは完了です。
以降、http://設定したドメイン名/wordpress/でブログを表示できます。

 

⑮今回作成したサーバーをテンプレート化します。
※活用マニュアル「スケーラブルなWebサイトを構築したい(Web2台構成)」の(1)、(2)を参照して作成してください。
 
⑯テンプレート一覧画面から今回作成したテンプレートをクリックして詳細設定画面を表示します。

 
⑰設定メニューから[エクスポート]をクリックします。

 
⑱テンプレートエクスポート画面で[URLを発行する]をクリックしてエクスポートのURLを取得します。確認メッセージがあがるので[はい]をクリックします。
 

 
⑲生成されたURLをメモ帳などにコピーしておきます。

 
上記で東日本リージョンでの元となるサーバー作成作業は完了となります。
次に西日本リージョンで同じサーバーを構築します。

 
  

2. 西日本リージョンにサーバーをコピー

東日本リージョンで作成したテンプレートを西日本リージョンに取り込み、西日本リージョンでテンプレートからサーバーを作成します。
 
①[東日本リージョン」をクリックしてサービスメニューを表示し、[サービス一覧へ]をクリックしてトップ画面を表示します。

 

②トップ画面から[西日本リージョン]をクリックします。(初回アクセスの場合、サービス規約に同意してサービスを申し込む画面になります。サービスに申し込むことで西日本リージョンのコントロールパネルを表示させることが可能となります。)
 
 
 
 
 
③西日本リージョンのトップ画面から[コンピューティング]をクリックします。(初回アクセスの場合、有効にするか確認のポップアップがあがる場合があります。サービス規約に同意してサービスを申し込む画面になります。[はい]をクリックすることでコンピューティングのコントロールパネルを表示させることが可能となります。)

 

④コンピューティングのメニューから[テンプレート]をクリックしてテンプレート一覧画面を表示させます。

 
⑤テンプレート一覧画面にて[テンプレート作成]をクリックしてテンプレート作成画面を表示させます。

 
⑥必要事項を記入して[テンプレートを作成する]をクリックしてテンプレートを作成します。テンプレート作成確認があがるので[はい]をクリックします。(URLは(1)の⑯にてメモ帳などにコピーしたURLをhttpsからhttpに書き換えて入力します。)

項目
設定内容
テンプレート名
east01
説明
東日本リージョンのコピー
URL
(1)の⑯にてメモ帳などにコピーしたURLをhttpsからhttpに書き換えて入力
ゾーン
augusta
ハイパーバイザー
VMWare
OSタイプ
CentOS6.5(64bit)
フォーマット
OVA
エクスポート
有効
パスワードリセット
有効
ダイナミックスケール
有効
ルートディスクコントローラ
scsi
NICアダプタ
Vmxnet3
キーボード
Japanese

 
⑦ステータスがDownload Completeになったことを確認し、作成したテンプレート名をクリックします。

 
⑧テンプレート詳細画面にて[仮想マシン作成]をクリックします。


⑨テンプレートの仮想マシン作成メニューにて[仮想マシン作成画面へ]をクリックします。


 
⑩仮想マシン作成画面にて必要な内容を記入して[確認画面へ]をクリックします。(SSH Keyは東日本リージョンとは別に登録する必要があります。東日本リージョンと同じものを使用する場合は、[アップロード]から東日本リージョンの鍵を登録します。ここでは新規に西日本リージョン用の鍵を作成します。)

項目
設定内容
マシンタイプ
light.S1
イメージ
選択済み(ここではeast01)
ボリューム
選択済み
SSH Key
作成を選択して名前を記入し、[作成]をクリックし鍵をダウンロードする。(ここでは名前にidcfwestと指定。)
仮想マシン台数
1台
ネットワークインターフェース
選択済み
詳細情報
マシン名
任意(ここではwest01)
グループ名
任意(ここでは無記入)
 
 

⑪確認画面が表示されるので内容を確認し、[作成]をクリックして仮想マシンを作成します。
 
⑫本マニュアルのコラム欄を参照してグローバルIPアドレスを取得し、スタティックNATを設定してネットワークを構築します。
 
⑬活用マニュアル「Webサイトの本番環境を構築したい(Web1台構成)」の(3)仮想マシンへのアクセスを参照して東日本リージョンの時と同じようにsshで仮想マシンにログインできることを確認します。
 
⑭最後に西日本リージョンのグローバルIPアドレスを、メモ帳などにメモしておきます。

 

3. 東日本リージョンと西日本リージョンの連携

今までの手順で東日本リージョンと西日本リージョンに同じサーバーができました。次にWordPressのDBを連携させるためにグローバルのIPアドレスを利用してレプリケーションの設定を行います。最後にDNSに登録して完了です。
※仮想マシンへの接続方法については、活用マニュアル 「Webサイトの本番環境を構築したい(Web1台構成)」の(3)仮想マシンへのアクセスを参照してください。
 
①[西日本リージョン」をクリックし、サービス選択から[東日本リージョン]→[コンピューティング]の順番でクリックして、東日本リージョンのコンピューティングのコントロールパネルを表示します。 



②メニューから[IPアドレス」をクリックし、IPアドレス一覧画面から東日本リージョンの本番サーバーで使用しているIPアドレスをクリックします。




③メニューから[ファイアウォール]をクリックし、西日本リージョンからの許可設定を追加します。  
 
コメント
ソースCIDR
タイプ
ポートレンジ
msql from west
西日本のグローバルIPアドレス/32
MySQL
3306
ssh from west
西日本のグローバルIPアドレス/32
SSH
22
 
  

④ 東日本リージョンのサーバーにSSHでログインします。
 
⑤ 東日本リージョンのMySQL設定ファイル(my.cnf)を編集して映します。
   
[root@east01 ~]# cp -p /etc/my.cnf /etc/my.cnf.org 
[root@east01 ~]# cat > /etc/my.cnf << EOF
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
log-bin
server-id=1

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EOF
[root@east01 ~]# service mysqld restart
mysqld を停止中:                                           [  OK  ]
mysqld を起動中:                                           [  OK  ]
[root@east01 ~]# 

							

⑥東日本リージョンのMySQLのMasterポジションを確認して、メモ帳などにメモしておきます。(Positionは環境によって変わりますので必ずしも例と同じとは限りません。)

[root@west01 ~]# mysql -e "SHOW MASTER STATUS;"
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| mysqld-bin.000001 |      106 |              |                  |
+-------------------+----------+--------------+------------------+

							

⑦東日本リージョンのMySQLにレプリケーション用ユーザーを追加します。IPアドレスを西日本リージョンのグローバルIPアドレスにします。IDENTIFIED BYの後はパスワード指定のため、任意のものを設定してください。(例ではrepliとしています。)

[root@east01 ~]# mysql -e "GRANT REPLICATION SLAVE ON *.* TO repl@IPアドレス IDENTIFIED BY 'repli';"

							

⑧東日本リージョンのMySQLを停止してアーカイブ化します。

[root@east01 ~]# service mysqld stop
mysqld を停止中:                                           [  OK  ] 
[root@east01 ~]# cd /var/lib
[root@east01 ~]# tar czvfp ~/mysql.tar.gz mysql
mysql/
mysql/ib_logfile0
mysql/ib_logfile1
mysql/mysql/
~~~
mysql/test/
[root@east01 lib]#

							

⑨東日本リージョンのMySQLを起動します。

[root@east01 lib]# service mysqld start
mysqld を起動中:                                           [  OK  ]
[root@east01 lib]#

							

⑩西日本リージョンのサーバーにSSHでログインします。

⑪西日本リージョンに東日本リージョンにアクセスするための鍵を作成します。ローカルにある東日本リージョンの鍵をメモ帳などで開いてコピーします。それをviコマンドを使用して貼り付けます。viコマンドを実行後、iを入力して編集モード(-- INSERT –と表示)にし、右クリックで貼り付けることができるようになります。

貼り付けた後、ESCキーを入力して編集モードを抜け、:wqで上書き保存で終了します。保存した鍵はそのままでは使えないため権限を変更しておきます。

[root@west01 ~]# vi eastkey
①iキーを入力して編集モードに
②右クリックでコピーした鍵を貼り付け
③ESCキーを入力して編集モードを終了する
④:wqと入力してEnterキーで保存完了
[root@west01 ~]# chmod 600 eastkey

							

⑫作成した鍵を使用して西日本リージョンから東日本リージョンのサーバーへ接続します。アーカイブしたMySQLのデータをコピーして解凍します。
(初回アクセスの場合、接続するか確認のメッセージが出るのでyesと入力します。)

[root@west01 ~]# scp -i eastkey root@IPアドレス:~/mysql.tar.gz .
mysql.tar.gz                                  100%  232KB 232.1KB/s   00:00 [root@west01 ~]# tar xzvf mysql.tar.gz
mysql/
mysql/ib_logfile0
mysql/ib_logfile1
~~~
mysql/wpdb/wp_posts.MYD
mysql/test/
[root@west02 ~]#

							

⑬西日本リージョンのMySQLディレクトリを移動し、代わりに解凍したデータを設置します。

[root@west01 ~]# mv /var/lib/mysql /var/lib/mysql.org
[root@west01 ~]# mv mysql /var/lib/
							

⑭西日本リージョンのMySQL設定ファイル(my.cnf)を編集してMySQLを起動します。

[root@west01 ~]# cp -p /etc/my.cnf /etc/my.cnf.org
[root@west01 ~]# cat > /etc/my.cnf << EOF
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
log-bin
server-id=2

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EOF
[root@west01 ~]# service mysqld start
mysqld を起動中:                                           [  OK  ]
[root@west01 ~]# 

							

⑮西日本リージョンのMySQLにslaveの設定を反映させます。
IPアドレスには東日本リージョンのIPアドレスと置き換えます。USER、PASSWORDは⑦で設定したものと置き換えます。LOG_FILEとLOG_POSは⑥のものと置き換えます。

[root@west01 ~]# mysql -e "CHANGE MASTER TO MASTER_HOST='IPアドレス',\
MASTER_USER='repl',\
MASTER_PASSWORD='repli',\
MASTER_LOG_FILE='mysqld-bin.000001',\
MASTER_LOG_POS=106;"
[root@west01 ~]# mysql -e "START SLAVE;"
							

⑯Slaveの状態を確認します。Slave_IO_RunningとSlave_SQL_RunningがともにYesであれば正常に設定ができています。

[root@west01 ~]# mysql -e "show slave status\G"
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 東日本リージョンのIP
                  Master_User: repl
                  Master_Port: 3306
      ~~~
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
      ~~~ 
[root@west01 ~]# 

							

以上で東日本リージョンと西日本リージョンの連携が完了しました。本設定によりWordPressにて記事を更新したら、両方のリージョンに反映されます。


4. DR切り替えテスト

今までの手順で東日本リージョンと西日本リージョンが連携を行い、WordPressの記事を更新しても同じ記事が反映される状態が構築できました。最後に実際に障害に見立てて東日本リージョンのサーバーを落として西日本リージョンにDNSを向けて切り替えを行ってみます。

①東日本リージョンのサーバーをshutdownします。Webブラウザにて更新をかけてみると、アクセスできない状態になっていることを確認します。

[root@east01 ~]# shutdown -h now
							

 

②DNSにコントロールパネルを切り替え、先ほど設定したレコードの値を東日本リージョンのグローバルIPアドレスから西日本リージョンのグローバルIPアドレスへ変更し、[変更する]をクリックします。1. 東日本リージョンで本番サーバーを作成⑦~⑨参照)



③10分程度待って22で設定したドメインに対してWebブラウザでアクセスを行い、WordPressのコンテンツが表示されることを確認します。これで一旦、西日本リージョンにてリカバリができました。



今回の設定は簡易的なDRサイトの構築となります。実際にはWordPressのプラグイン領域などもコピーするような仕組みを設けてDRサイトを構築する必要があります。
DBについてもSlave側で運用する形になるため、すぐに復旧する見込みが立たない場合はMasterに昇格させて更新できるように調整をする必要があります。
 
しかしながら緊急の際にサービス停止を避ける意味合いであれば、今回のようなDRサイト構築でも役に立つかと思います。
今回はグローバルを経由して更新が少ない前提でDBのレプリケーションを組んでいましたが、コンテンツ領域についても同期をしたり頻繁に大量のファイルをやりとりする必要がある場合は、プライベートコネクトで接続することをおすすめいたします。

 

 

コラム: 1対1のNATの設定

本マニュアルでは、グローバルIPアドレスで切り替える必要がありました。グローバルIPアドレスをスタティックNATで設定することにより、サーバー間での通信を楽にしたり、仮想ルーターを経由してやり取りできない通信を行えるようになります。ここではグローバルIPアドレスの取得方法と、スタティックNATを設定する方法について記載します。
 
①IPアドレスの一覧画面に切り替えます。※3. 東日本リージョンと西日本リージョンの連携②を参照
 
②IPアドレスの取得]をクリックしてIPアドレスの取得画面を表示します。


 
③IPアドレス名に任意の名前を入れてゾーン、ネットワークを選択します。ここで取得したグローバルIPアドレスは同じゾーンに属しているサーバーにしか付与できません。したがって、ゾーンについてはしっかり考えたうえで[取得する]をクリックしてください。確認のポップアップがあがるので[はい]をクリックして取得します。IPアドレス取得の画面が出ますので×で閉じます。

 
④メニューからNATをクリックしてNATの設定画面を出します。スタティックNAT設定をすることでグローバルIPアドレスとサーバーの1対1の紐付けが可能となります。スタティックNATできるサーバーは、グローバルIPアドレスと同じゾーンにあるサーバーで、まだスタティックNATとして登録されていないサーバーに限ります。


サーバーをプルダウンメニューから選択し、[有効化]をクリックします。有効化確認のポップアップがあがるので[はい]をクリックします。

これでNATの設定は完了です。ファイアウォールについてはNAT設定をするとすべてリセットされます。また、NAT設定を解除する際にもリセットされるので注意が必要です。ファイアウォールの設定やポートフォワードの設定は、活用マニュアル「Webサイトの本番環境を構築したい(Web1台構成)」の(2)ネットワーク設定と同じとなります。

このページの先頭へ このページの先頭へ