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

    8-MySQLリーソースの作成

    こんにちは。
    サイオステクノロジーの高田です。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でもご購読できます。