[Linux] DynamicDR(オンプレto AWS ディザスタリカバリ環境)の実現(第3回)~サーバー設定とクラスタ化

8-MySQLリーソースの作成
Pocket

こんにちは。
サイオステクノロジーの高田です。LifeKeeperのトレーニングを担当しています。

第2回では、VPNの設定とサーバーの配置について記載しました。今回は、サーバーの設定とLifeKeeperを利用したDBサーバーのクラスタ化について説明します。

まずは、サーバーの設定から行います。

1 サーバーの設定

1.1 サーバーへのログイン

各サーバーへログインして作業します。AWS側のサーバーへのログインは、第2回のブログ内の手順でダウンロードしたキーペアを利用します。 以降の手順では、DBサーバーとWebサーバーで設定内容が異なります。

1.2 DBサーバーのOS設定

インストールしたOSの設定を行います。DBサーバーはLifeKeeperによるクラスタ環境を構築します。そのため、LifeKeeperの動作に必要な設定を行います。

(1)GUIを利用するため、yumコマンドでパッケージをインストールします。

 # yum groupinstall “Desktop” “Desktop Platform” “General Purpose Desktop”’

(2)LifeKeeperをインストールするために必要なパッケージをインストールします。

 # yum install –y redhat-lsb

(3)SELinuxが無効化されているか確認します。

# cat /etc/selinux/config

 無効になっていない場合は以下のようにパラメータを変更して、サーバーを再起動してください。 

 SELINUX=disabled

(4)ホスト名および名前解決の設定を行います。

本検証では、/etc/hostsファイルで名前解決をしています。オンプレミスとAWSのDBサーバー間でホスト名で通信できるように設定します。

(5)ファイアウォール設定を変更します。

LifeKeeper GUIは、デフォルトの初期接続ポートである81と82を含め、特定のTCPポートを使用します。またポート1024以降をオブジェクトの送受信に使用するリモートメソッド呼び出し(RMI)に使用します。これらすべてのポートを利用できるように設定を行ってください。

1.3 WebサーバーのOS設定

インストールしたOSの設定を行います。Webサーバーでは、WordPressを利用してWebサイトを作成します。そのため、WordPressの動作に必要な設定を行います。Webサーバーの設定は、オンプレミスとAWSのサーバーで同じ内容です。

(1)WordPressに必要なパッケージをyumコマンドでインストールします。

 # yum install -y httpd mysql-server php php-mysql php-mbstring wget

(2)OS起動時のApacheの自動起動を有効にします。

 # chkconfig httpd on

(3)Apacheを設定を変更します。

 # vi /etc/httpd/conf/httpd.conf 

以下のようにDocumentRootをWordPressのディレクトリに変更します。

 DocumentRoot “/var/www/wordpress”

(4)最新版のWordPressのパッケージをダウンロードします。ダウンロードしたファイルを展開します。

 # wget http://ja.wordpress.org/wordpress-latest-ja.tar.gz
 # tar zxvf wordpress-latest-ja.tar.gz

(5)展開したWordPressのファイルを「/var/www/」配下へ移動して、移動先のディレクトリに所有権を変更します。

 # cp -r wordpress /var/www/
 # chown -R apache.apache /var/www/wordpress

(6)Apacheを起動します。

 # service httpd start

(7)SELinuxが無効化されているか確認します。

 # cat /etc/selinux/config 

無効になっていない場合は以下のようにパラメータを変更して、サーバーを再起動してください。

 SELINUX=disabled

1.4 DBサーバーでのデータベース設定

追加した増設ディスクをデータベースのデータ格納場所として利用します。オンプレミス側のDBサーバー(プライマリサーバー)とAWS側のDBサーバー(セカンダリサーバー)ごとの、実施手順を以下に説明します。

オンプレミス側のDBサーバー(プライマリサーバー)での実施手順

(1)MySQLの関連パッケージをインストールします。

[コマンド例]

  # yum install -y mysql-server

(2)第2回のブログ内の手順で追加したディスクにMySQLをインストールするための準備します。 そのディスクをフォーマットしてから、ファイルシステムを作成しマウントします。

[コマンド例]

 # fdisk -cu /dev/sdb
 # mkfs -t ext4 /dev/sdb1
 # mkdir /data
 # mount /dev/sdb1 /data

(3)MySQLのデータディレクトリ(/test_mysql)に存在するすべてのファイル権限と所有者を適切に設定します。

[コマンド例]

 # chown -R mysql:mysql /data
 # chmod 755 /data

(4)コマンドラインから、MySQLデーモンを起動します。

[コマンド例]

 # service mysqld start

(5)MySQLを新規にインストールする場合は、MySQLデータベースを初期化します。

[コマンド例] 

 # mysql_secure_installation 

すべての質問をYで返します。途中パスワード設定を求められまずが、指示通り設定します。

(6)mysqlユーザーにshutdown権限と全てのホストからのアクセス権限を付与します。また、データベースwp作成とwpへの全てのホストからのアクセス権限を付与します。

[コマンド例]

 # mysql -u root
mysql> grant shutdown on *.* to mysql@localhost identified by ‘任意のpassword’;
mysql> grant all privileges on *.* to mysql@’%’ identified by ‘任意のpassword’;
mysql> create database wp;
mysql> grant all privileges on wp.* to wp@’%’ identified by ‘任意の password ‘;
mysql> flush privileges;
mysql> exit

(7)作成したデータ、設定ファイルを含むMySQLのディレクトリを共有領域へ移動します。

[コマンド例]

  # mv /var/lib/mysql /data/

(8)/etc/my.cnf を編集します。

[my.cnf例]

 [mysqld]
datadir=/data/mysql
socket=/data/mysql /mysql.sock
user=mysql
port=3306
pid-file=/var/run/mysqld/mysqld.pid
character-set-server = utf8
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
user=mysql
password=password

(9)mysqlを再起動します。

[コマンド例]

# service mysqld restart

AWS側のDBサーバー(セカンダリサーバー)での実施手順

(1)mysql-serverをインストールします。

[コマンド例]

  # yum install -y mysql-server

(2)5.2で追加したディスクにMySQLをインストールするために、準備します。 そのディスクをフォーマットしてから、ファイルシステムを作成します。

[コマンド例]

 # fdisk -cu /dev/xvde
 # mkfs -t ext4 /dev/xvde1

(3)MySQLのデータディレクトリ(/test_mysql)に存在するすべてのファイル権限と所有者を適切に設定します。

[コマンド例]

 # mkdir /datal
 # chown -R mysql: mysql /data
 # chmod 755 /data 

補足:  AWSのプライベートサブネットからyumを実行する方法
AWSプライベートサブネット上に配置したサーバーは、外部へ通信できないためyumなどのパッケージ管理ツールが利用できません。本検証では、AWSのNAT Gateway機能を利用しています。

(1)NAT Gatewayを作成します。

1_NAT_Gatewayを作成します

(2)プライベートサブネットを指定します。

2-プライベートサブネットを指定します

(3)新しいEIPを作成します。

3-新しいEIPの作成

(4)NAT Gatewayが作成されたことを確認します。

4-NAT_Gatewayの作成を確認

(5)ルートテーブルにNAT Gatewayを紐付けます。 

5-ルートテーブルにNAT_Gatewayを紐づける

これでNAT Gateway経由でyumの実行が可能になりました。

DBサーバーとWebサーバーの合計4台の設定が完了しました。続いては、LifeKeeperを利用してDBサーバーのMySQLを冗長化します。

2 LifeKeeperによるHAクラスターの構築

作成した仮想サーバーにLifeKeeperをインストールし、HAクラスターを構築します。

2.1 LifeKeeperのインストール

各DBサーバーにLifeKeeperをインストールします。

LifeKeeperのインストールにあたり、LifeKeeper for Linux v9.1の製品メディアおよびライセンスを各DBサーバーに配置しておく必要があります。評価目的のお客様の場合は、以下のURLから申請します。

インストールの手順については、下記のLifeKeeper for Linuxスタートアップガイド(v9.1用)を参照してください。LifeKeeperのインストール途中で「Select optional kits for SPS for Linux」画面が表示されます。MySQLを保護する「lkSQL」とDataReplication によるクラスターサーバー間のデータ共有を行う「lkDR」を選択してインストールします。

セットアップが完了したら、LifeKeeperを起動します。

  # /opt/LifeKeeper/bin/lkstart

2.2 LifeKeeper GUIの管理画面へのアクセス

オンプレミス側のDBサーバーにてLifeKeeperのGUIを起動します。

  # /opt/LifeKeeper/bin/lkGUIapp

 AWS側のDBサーバーでLifeKeeperのGUIを表示させる場合は、SSHのXフォワーディングを使用します。SSHのXフォワーディングを使用して手順の詳細については、以下の資料を参照してください。

2.3 コミュニケーションパスの作成

VPNの経路を利用して1本のコミュニケーションパスを作成します。コミュニケーションパスの作成手順の詳細については、以下の資料を参照してください

LifeKeeperはコミュニケーションパスが1本のみの設定となっている場合、警告の表示となります。コミュニケーションパス作成後、警告の表示を解除します。 

6-警告の表示を解除

2.4 Data Replicationリソース階層の作成

オンプレミス側のサーバーが仮想環境で動作している場合は、Data Replication リソース階層の作成前に、次のファイルに下記のエントリーを追加してください。

ファイル:/opt/LifeKeeper/subsys/scsi/resources/DEVNAME/device_pattern

追加エントリー:/dev/sd*

詳細については、次のURLをご参照ください。

LifeKeeper GUI管理画面より”Create Resource Hierarchy”を選択して、Data Replicationリソースを作成します。リソース作成ウィザードで入力する内容は以下の通りです。

 Select Recovery Kit  Data Replication
 Switchback Type  intelligent
 Server  ONPREDB6B
 Hierarchy Type   Replication Existing Filesystem 
 Existing Mount Point   /data
 Data Replication Resource Tag   datarep-data
 Filesystem Resource Tag    /data
 Bitmap File   /opt/LifeKeeper/bitmap__data
 Enable Asynchronous Replication   no (本検証では同期モードを使用)

   ターゲット(セカンダリ)サーバーに Extendするとき、入力する内容は以下の通りです。

 Target Server   AWSDB6B
 Switchback Type  intelligent
 Template Priority   1 
 Target Priority   10
 Target Disk   /dev/xvde1
 Data Replication Resource Tag   datarep-data
 Bitmap File   /opt/LifeKeeper/bitmap__data
 Replication Path   10.124.128.14 – 10.10.2.20
 Mount Point   /data
 Root Tag   /data

   Data Replicationリソースの作成が完了するとLifeKeeperGUI画面では以下のように表示されます。

7-Data_Replicationリソース作成

2.5 MySQLリソース階層の作成

LifeKeeper GUI管理画面より”Create Resource Hierarchy”を選択して、MySQLリソースを作成します。リソース作成ウィザードで入力する内容は以下の通りです。

重要: MySQLはプライマリサーバー上でのみ実行している必要があります。セカンダリサーバー上で実行しないでください。

 Select Recovery Kit   MySQL Database
 Switchback Type  intelligent
 Server  ONPREDB6B
 Location of my.cnf /etc  /etc
 Location of MySQL executables   /usr/bin
 Database Tag   mysql

ターゲット(セカンダリ)サーバーにExtendするとき、入力する内容は以下の通りです。

 Target Server   AWSDB6B
 Switchback Type  intelligent
 Template Priority   1 
 Target Priority   10
 Location of my.cnf /etc  /etc
 Location of MySQL executables   /usr/bin
    Database Tag      mysql

MySQLリソースの作成が完了するとLifeKeeperGUI画面では以下のように表示されます。

8-MySQLリーソースの作成

これでMySQLの冗長化が完了です。

次回は、WordPressの設定とAWS側のWebサーバーをAMIから起動する設定を行います。次回の第4回目がDynamicDRの最終回です。

>>第1回から読む

>>[Linux] DynamicDR(オンプレto AWS ディザスタリカバリ環境)の実現(第4回)~WordPressとWebサーバーの起動設定 を読む

SNSでもご購読できます。