IDCFクラウド
活用マニュアル
〜DRサイトを作って耐障害性を高めたい〜
DRサイトを作って耐障害性を高めたい
目次
(1)東日本リージョンで本番サーバーを作成 ........................................................................................ 3
(2)西日本リージョンにサーバーをコピー ........................................................................................... 11
(3)東日本リージョンと西日本リージョンの連携 ............................................................................. 16
(4)DR切り替えテスト ................................................................................................................................... 21
Column:1対1のNATの設定 ......................................................................................................................... 23
最終更新日:2015/11/26
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
2
DRサイトを作って耐障害性を高めたい
IDCFクラウドの東日本リージョンと西日本リージョンを連携させる事で、どちらかに自然災害等に
よる致命的な障害が発生してもサービスを継続させる事ができる、DR(ディザスタリカバリ)サイ
トの構築が可能となります。IDCFクラウドでは地理的に離れたところにDRサイトを簡単に構築する
事ができます。
IDCFクラウド内でDRサイトを構築するには、東日本リージョンと西日本リージョンの連携方法につ
いて設計する必要があります。データが大量にあり、常に更新される場合はプライベートコネクト
を契約し、東日本リージョンと西日本リージョンを結ぶことでセキュアな環境でデータのやり取り
を高速に行う事が可能になります。一方、更新量もそこまで多くなく、バックアップ先として連携
させるのであれば、DNSを用いてリーズナブルに構築させる事が可能です。
ここでは、更新頻度の少ないWeb-DBの構成の例として、WordPressを構築して東日本リージョンを
Activeとして稼働させ、西日本リージョンをStandbyとして構成し、災害時にはDNSにて手動で切り
替えを行えるように環境を構築します。
※DNSを独自ドメインで設定してある前提となっています。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
3
(1)東日本リージョンで本番サーバーを作成今回はWordPressを用いて環境を構築します。Webサーバーの作成は、「Webサイトの本番環境を
構築したい(Web1台構成)」を参照して行います。以降の手順は「Webサイトの本番環境を構築し
たい(Web1台構成)」のP.9まで完了した状態からの手順となります。ただし、(2)のネットワーク
の設定は本マニュアルのコラム欄を参照してIPアドレスで作成して下さい。
※尚、サーバー名は本項ではeast01という名前で構築し、zoneはjouleを使用していますのでご注
意ください。(http://www.idcf.jp/cloud/pdf/manual_002.pdf)
本番サーバーを東日本リージョンにて構築し、スナップショットを取得して構築した本番サーバ
ーをテンプレート化して元となるものを作成します。
① 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 ~]#
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
4
④ 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コントロールパネルを表示します。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
5
⑧ 作成してあるDNSゾーン名をクリックしてレコード設定画面を表示します。
※DNSゾーンを作成していない場合は別途DNSゾーンを作成して下さい。
⑨ [+レコード登録]をクリックしてeast01に向けたAレコードを登録します。
項目 設定内容
レコード名 任意(ここではwwwを指定)
タイプ A
値 east01のグローバルIPアドレス
TTL 600
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
6
⑩ 10分程度待って⑨で設定したドメインに対してWebブラウザでアクセス(http://設定し
たドメイン名/wordpress/)し[さあ、始めましょう!]をクリックしてWordPressのイ
ンストールを開始します。
⑪ 必要事項を記入してWordPressをインストールします。(任意で設定した場合、各パラ
メーターは設定したものと読み替えて下さい。)
項目 内容
データベース名 wpdb
ユーザー名 wpuser
パスワード wordpress
データベースのホスト
名
localhost
テーブル接頭語 wp_
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
7
⑫ インストール実行をクリックします。
⑬ WordPressのブログ情報とログイン情報を記入し、[WordPressをインストール]をク
リックしてブログを開設します。
項目 内容
サイトのタイトル 任意(ここではDRサイト)
ユーザー名 任意(ここではadmin)
パスワード 任意
メールアドレス 任意
プライバシー 任意(ここではテスト構築の為、チェ
ックボックスを外す)
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
8
⑭ 成功しました!の画面が表示されればWordPressのインストールは完了です。
以降、http://設定したドメイン名/wordpress/でブログを表示できます。
⑮ 今回作成したサーバーをテンプレート化します。
※「スケーラブルなWebサイトを構築したい(Web2台構成)」の(1)、(2)を参照して作
成してください。(http://www.idcf.jp/cloud/pdf/manual_005.pdf)
⑯ テンプレート一覧画面から今回作成したテンプレートをクリックして詳細設定画面を
表示します。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
9
⑰ 設定メニューから[エクスポート]をクリックします。
⑱ テンプレートエクスポート画面で[URLを発行する]をクリックしてエクスポートのURL
を取得します。確認メッセージがあがるので[はい]をクリックします。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
10
⑲ 生成されたURLをメモ帳等にコピーしておきます。
上記で東日本リージョンでの元となるサーバー作成作業は完了となります。
次に西日本リージョンで同じサーバーを構築します。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
11
(2)西日本リージョンにサーバーをコピー
東日本リージョンで作成したテンプレートを西日本リージョンに取り込み、西日本リージョンで
テンプレートからサーバーを作成します。
① [IDCF Cloud」のアイコンをクリックしてトップ画面を表示します。
②トップ画面から[コンピュート]をクリックします。初回アクセスの場合、サービス規約に同意するとお申し込み画面が表示されます。)
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
12
③ 西日本リージョンのトップ画面から東日本リージョン1、または東日本リージョン2をクリックし、[西日本リージョン]をクリックします。(初回アクセスの場合、有効にするか確認のポポップアップ画面が表示される場合があります。サービス規約に同意するとお申し込み画面が表示されます。[はい]をクリックすることでコンピューティングのコントロールパネルを表示させることが可能となります。)
④ コンピューティングのメニューから[テンプレート]をクリックしてテンプレート一覧
画面を表示させます。
⑤ テンプレート一覧画面にて[テンプレート作成]をクリックしてテンプレート作成画面
を表示させます。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
13
⑥ 必要事項を記入して[テンプレートを作成する]をクリックしてテンプレートを作成し
ます。テンプレート作成確認があがるので[はい]をクリックします。(URLは(1)の⑯
にてメモ帳等にコピーしたURLをhttpsからhttpに書き換えて入力します。)
項目 設定内容
テンプレート名 east01
説明 東日本リージョンのコピー
URL (1)の⑯にてメモ帳等にコピーしたURLをhttpsから
httpに書き換えて入力
ゾーン augusta
ハイパーバイザー VMWare
OSタイプ CentOS6.5(64bit)
フォーマット OVA
エクスポート 有効
パスワードリセット 有効
ダイナミックスケール 有効
ルートディスクコントローラ scsi
NICアダプタ Vmxnet3
キーボード Japanese
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
14
⑦ ステータスがDownload Completeになったことを確認し、作成したテンプレート名をク
リックします。
⑧ テンプレート詳細画面にて[仮想マシン作成]をクリックします。
⑨ テンプレートの仮想マシン作成メニューにて[仮想マシン作成画面へ]をクリックしま
す。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
15
⑩ 仮想マシン作成画面にて必要な内容を記入して[確認画面へ]をクリックします。(SSH
Keyは東日本リージョンとは別に登録する必要があります。東日本リージョンと同じも
のを使用する場合は、[アップロード]から東日本リージョンの鍵を登録します。ここで
は新規に西日本リージョン用の鍵を作成します。)項目 設定内容
マシンタイプ light.S1
イメージ 選択済み(ここではeast01)
ボリューム 選択済み
SSH Key 作成を選択して名前を記入し、[作成]をクリックし
鍵をダウンロードする。(ここでは名前にidcfwestと
指定。)
仮想マシン台数 1台
ネットワークインターフェース 選択済み
詳細情報 マシン名 任意(ここではwest01)
グループ名 任意(ここでは無記入)
⑪ 確認画面が表示されるので内容を確認し、[作成]をクリックして仮想マシンを作成し
ます。
⑫ 本マニュアルのコラム欄を参照してグローバルIPアドレスを取得し、スタティックNAT
を設定してネットワークを構築します。
⑬ 「Webサイトの本番環境を構築したい(Web1台構成)」の(3)仮想マシンへのアクセス
を参照して東日本リージョンの時と同じようにsshで仮想マシンにログインできる事を
確認します。
⑭ 最後に西日本リージョンのグローバルIPアドレスを、メモ帳等にメモしておきます。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
16
(3)東日本リージョンと西日本リージョンの連携
今までの手順で東日本リージョンと西日本リージョンに同じサーバーができました。次に
WordPressのDBを連携させる為にグローバルのIPアドレスを利用してレプリケーションの設定
を行います。最後にDNSに登録して完了です。
※仮想マシンへの接続方法については、マニュアル「Webサイトの本番環境を構築したい
(Web1台構成)」の「(3)仮想マシンへのアクセス」を参照してください。
① [西日本リージョン」をクリックし、[東日本リージョン1]または[東日本リー
ジョン2]をクリックして、東日本リージョンのコンピュートのコントロールパネル
を表示します。
② メニューから[IPアドレス」をクリックし、IPアドレス一覧画面から東日本リージョン
の本番サーバーで使用しているIPアドレスをクリックします。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
17
③ メニューから[ファイアウォール]をクリックし、西日本リージョンからの許可設定を
追加します。
コメント ソース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 ~]#
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
18
⑥ 東日本リージョンの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
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
19
①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 ~]#
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
20
⑮ 西日本リージョンの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にて記事を更新したら、両方のリージョンに反映されます。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
21
(4)DR切り替えテスト
今までの手順で東日本リージョンと西日本リージョンが連携を行い、WordPressの記事を更新し
ても同じ記事が反映される状態が構築できました。最後に実際に障害に見立てて東日本リージ
ョンのサーバーを落として西日本リージョンにDNSを向けて切り替えを行ってみます。
① 東日本リージョンのサーバーをshutdownします。Webブラウザにて更新をかけてみる
と、アクセスできない状態になっている事を確認します。
[root@east01 ~]# shutdown -h now
② DNSにコントロールパネルを切り替え、先ほど設定したレコードの値を東日本リージョ
ンのグローバルIPアドレスから西日本リージョンのグローバルIPアドレスへ変更し、[変
更する]をクリックします。((1)東日本リージョンで本番サーバーを作成⑦~⑨参照)
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
22
③ 10分程度待って22で設定したドメインに対してWebブラウザでアクセスを行い、
WordPressのコンテンツが表示される事を確認します。これで一旦、西日本リージョン
にてリカバリができました。
今回の設定は簡易的なDRサイトの構築となります。実際にはWordPressのプラグイン領
域等もコピーするような仕組みを設けてDRサイトを構築する必要があります。DBについ
てもSlave側で運用する形になる為、すぐに復旧する見込みが立たない場合はMasterに昇
格させて更新できるように調整をする必要があります。しかしながら緊急の際にサービ
ス停止を避ける意味合いであれば、今回のようなDRサイト構築でも役に立つかと思いま
す。今回はグローバルを経由して更新が少ない前提でDBのレプリケーションを組んでい
ましたが、コンテンツ領域についても同期をしたり頻繁に大量のファイルをやりとりす
る必要がある場合は、プライベートコネクトで接続する事をおすすめいたします。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
23
Column:1対1のNATの設定
本マニュアルでは、グローバルIPアドレスで切り替える必要がありました。グローバルIPアドレス
をスタティックNATで設定することにより、サーバー間での通信を楽にしたり、仮想ルーターを経
由してやり取りできない通信を行えるようになります。ここではグローバルIPアドレスの取得方法と、
スタティックNATを設定する方法について記載します。
① IPアドレスの一覧画面に切り替えます。※ (3) 東日本リージョンと西日本リージョンの
連携②を参照
② [IPアドレスの取得]をクリックしてIPアドレスの取得画面を表示します。
③ IPアドレス名に任意の名前を入れてゾーン、ネットワークを選択します。ここで取得し
たグローバルIPアドレスは同じゾーンに属しているサーバーにしか付与できません。従
って、ゾーンについてはしっかり考えたうえで[取得する]をクリックしてください。
確認のポップアップ画面が表示されますので[はい]をクリックして取得します。IPア
ドレス取得の画面が出ますので×で閉じます。
[IDCFクラウド活用マニュアル] DRサイトを作って耐障害性を高めたい
24
④ メニューからNATをクリックしてNATの設定画面を出します。スタティックNAT設定を
する事でグローバルIPアドレスとサーバーの1対1の紐付けが可能となります。スタティ
ックNATできるサーバーは、グローバルIPアドレスと同じゾーンにあるサーバーで、ま
だスタティックNATとして登録されていないサーバーに限ります。サーバーをプルダウ
ンメニューから選択し、[有効化]をクリックします。有効化確認のポップアップがあ
がるので[はい]をクリックします。
これでNATの設定は完了です。ファイアウォールについてはNAT設定をするとすべてリセッ
トされます。また、NAT設定を解除する際にもリセットされるので注意が必要です。ファイ
アウォールの設定やポートフォワードの設定は「Webサイトの本番環境を構築したい
(Web1台構成)」の(2)ネットワーク設定と同じとなります。