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