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