高可用性(MySQLデータベースの場合)
(この機能は、Enterprise Editionでのみサポートされています。また、 本手順はビルド6302以降を対象としています。 古いバージョンの場合、こちらをクリックしてください)
ミッション クリティカルな環境において、パスワードへの継続的なアクセスを提供するということは必要不可欠な要素です。PMPの高可用性の機能により、サーバー障害などの不慮の事態においてもパスワードにアクセスできる環境を提供することができます。
PMPでは、バックエンド データベースとしてMySQL、MS SQL Serverが使用できます。 PMPにはMySQLがバンドルされており、既定ではこのMySQLを使用します。 そのため、このドキュメントの内容は、MySQLを使用した環境で高可用性の設定を行うためのものです。 MS SQL Serverを使用した環境で高可用性の設定を行う場合、こちらのリンク先のドキュメントを参照してください。
高可用性の仕組み
- リダンダントPMPサーバーとデータベースインスタンスがあります。
- 通常使用されるインスタンス(プライマリ)は、ユーザーに対して読み取り/書き込みアクセスを提供します。すべてのユーザーはプライマリに接続します。
- もうひとつのインスタンスは、セカンダリ として機能します。
- プライマリとセカンダリのデータは常に相互同期されています。PMPはMySQLのデータベース複製機能を使用してデータの同期を行います。データのレプリケーションは、安全な、暗号化されたチャネルを通じて行われます。
- プライマリ サーバーがダウンすると、セカンダリ サーバーはユーザーへの"読み取りのみ"のアクセスを提供します。これは、プライマリ サーバーが完全復旧し、サービスを再開するまで継続されます。プライマリ サーバーのダウン中に行われたデータベースへの変更は、プライマリとセカンダリの接続が回復すると自動的に同期されます。
シナリオ例;
シナリオ 1 - 地理的に別の場所に配置されたプライマリとセカンダリを繋ぐWANリンク上で不具合が発生した場合
プライマリ サーバーが場所"A"に配置され、セカンダリ サーバーが場所"B"に配置されているとします。通常は、"A"、"B"、いずれのユーザーもプライマリ サーバーにアクセスしてパスワード管理操作を行います。プライマリとセカンダリのデータは常に相互同期されています。ここで、場所"A"と"B"の間を繋ぐネットワーク接続が失われたと仮定します。この場合、場所"A"にいるユーザーはプライマリ サーバーへの接続を継続し、すべての操作を実行し続けることができます。場所"B"にいるユーザーは、セカンダリ サーバーにアクセスすることで、読み取りのみのパスワード管理操作を継続することができます。場所"A"と"B"を繋ぐネットワーク接続が回復すると、プライマリ サーバーとセカンダリ サーバーのデータは再び同期されます。
シナリオ 2 - 同一ネットワーク上にプライマリとセカンダリが配置された環境で、プライマリがダウンした場合
プライマリ サーバーがダウンすると、場所"A"と"B"のユーザーは、セカンダリサーバーのパスワード非常時読み取りアクセスを活用することができます。
監査証跡への影響について
上記の高可用性のシナリオでは、通常通りに監査証跡が記録されます。シナリオ1では、2つの場所を繋ぐネットワークが有効である場合、監査証跡はプライマリに記録されます。ユーザーがセカンダリに接続すると、"パスワード取得"、"ログイン"、"ログアウト"などの操作が記録されます。2つの場所のネットワーク接続が回復すると、監査データが同期されます。シナリオ2では、プライマリがクラッシュした場合、ユーザーによるセカンダリ上での"パスワード取得"、"ログイン"、"ログアウト"などの操作が記録されます。他の監査記録はセカンダリに同期されます。
高可用性の設定方法
PMPでの高可用性の設定には、次の4つの簡単なステップを実行します;
ステップ1:プライマリとセカンダリのセットアップ
使用中のPMPサーバーがある場合、それをプライマリ サーバーに設定することができます。この場合、セカンダリ サーバーとして、新たにもうひとつのPMPを別のサーバーに インストール します。セカンダリ サーバーとしてPMPをインストールするには、インストール処理中にオプション [このサーバーを高可用性のセカンダリ サーバーとして設定する(読み取り専用)]を選択する必要があります。インストール後に、セカンダリサーバーは起動させないでください。
ステップ2:プライマリ上でデータ複製パックを作成する
- プライマリ、セカンダリ両サーバーが稼働している場合、稼働を停止します。この際、PMPのmysqlプロセスが停止していることを確認してください。
- コマンド プロンプトを開き、[PMP_Primary_Installation_Folder]/bin ディレクトリに移動します。
- 次のスクリプトを実行します。HASetup.bat [PMPプライマリサーバーのFQDN] [PMPセカンダリサーバーのFQDN ] (Windows) / HASetup.sh PMPプライマリサーバーのFQDN] [PMPセカンダリサーバーのFQDN ](Linux)
- フォルダ [PMP_Primary_Installation_Folder]/replication に複製パッケージのファイルHAPack.zipが作成されます。このzipファイルにはセカンダリ サーバー用のデータベース パッケージを含まれています。
- HAPack.zip をコピーします。コピーしたファイルを、次のステップ3で説明する通りに、セカンダリ サーバーに配置します。
このスクリプトを実行するために、コマンドライン引数として、(1)PMPプライマリサーバーが稼働しているホストと、(2)セカンダリデータベースが設置されているホスト、の完全修飾ドメイン名を取得する必要があります。例:プライマリ サーバーがドメイン zoho.com 上のホスト名 primari-server で稼働し、セカンダリ サーバーがドメイン zoho.com 上のホスト名 secondary-serverで稼働している場合、スクリプトは次のようになります。
Windowsシステムにおいて;HASetup.bat primary-server.zoho.com secondary-server.zoho.com
Linuxシステムにおいて: sh HASetup.sh primary-server.zoho.com secondary-server.zoho.com
ステップ3:高可用性データ複製パックをセカンダリ サーバーに配置する
プライマリ サーバーからコピーした HAPack.zip をセカンダリ サーバーの [PMP_Secondary_Installation_Folder]で解凍します。ファイルの解凍先は [PMP_Secondary_Intallation_Folder] 直下にするよう、ご注意ください。 解凍すると、既存のファイルが上書きされます。
ステップ4:暗号化マスター鍵の場所を指定する
セカンダリ サーバーで HAPack.zip を解凍した後、[PMP_Secondary_Installation_Folder]/conf フォルダを開きます。そして、manage_key.conf をテキストエディタで開き、pmp_key.key ( 暗号化されたマスター鍵 )の場所を指定します。PMPを起動させるためには、PMPからアクセス可能な場所に配置された pmp_key.key ファイルのフルパス情報が必要です。起動に成功すると、マスター鍵はもう必要ありませんので、鍵を格納したデバイスまたはネットワーク ドライブを切り離すことができます。
これで高可用性設定の準備は完了です。動作を開始するには、セカンダリ サーバーを起動します。
高可用性セットアップの検証
上記手順の完了後、高可用性の設定が正しく動作しているかどうかを確認します。プライマリサーバーの [管理] >> [一般] >> [高可用性] を選択してください。正しくセットアップされている場合、次のように表示されます:
高可用性の状態: 活動
レプリケーションの状態: 活動
上記のメッセージのどちらも"活動"の場合、高可用性が問題なく動作していることを示します。状態が "失敗" と表示されている場合、高可用性の設定は失敗していることを示します。
高可用性の状態について
高可用性とは、プライマリ/スタンバイ サーバー間の継続的なレプリケーションを示します。"活動"は、完全なデータ複製とデータ同期が実行されていることを示します。プライマリ/セカンダリ間のネットワークの問題などが発生すると、状態は"失敗"になります。
"失敗"は、プライマリ/スタンバイサーバーのデータベース間の通信/接続ができない場合に発生する可能性があります。接続が回復すると、データベース間のデータ同期が再開します。プライマリ/スタンバイ間の接続ができない間でも、いずれかのサーバーに接続しているユーザーは、サービスに不具合を生じることはありません。
つまり、状態の表示はデータベース間の接続/通信の状態を示すものであり、何かのトラブルシューティングを示しているものではありません。
レプリケーションの状態について
上述した通り、高可用性はMySQLのレプリケーション機能を利用して実現しています。プライマリ サーバーのデータベースはマスターデータベースとして動作し、セカンダリ サーバーのデータベースはスレーブデータベースとして動作します。データが正しく複製された場合、状態は"活動"となります。データの更新や、クエリで失敗などが発生すると、レプリケーションの状態が"失敗"となります。
状態が"失敗"になると、PMPの高可用性設定も使用できません。この場合、高可用性の設定を再度行う必要があります。
高可用性を再度設定しても状態が"失敗"のままである場合、次のログファイルをPMPサポートセンターまでお送りください;
Windows:[PMP Installation Folder]/mysql/data/[ホスト名].errファイル
Linux:[PMP Installation Folder]/mysql/data/tmp/.outファイル
"失敗"状態時のアラート通知のメカニズム
上記2つの状態は高可用性の設定にとって重要です。そのため、ステータスが"失敗"になった場合、あるいは"活動"になった場合にはリアルタイムで通知を受け取ることが必要です。通知を設定するには、[監査] >> [リソース監査] >> [監査アクション] >> [監査を設定] >> [一般操作] を開き、[高可用性の活動]と[高可用性の失敗]の通知方法で、[メール送信]/[SNMPトラップを送信]/[Syslogの生成]を選択します。
メモ 1:障害復旧の実行中にプライマリ サーバーがクラッシュした場合、次の事項を確認をしてください;
- セカンダリサーバーの[PMP_Home]/mysql/data を開き、ファイル ibdata1 と passtrix をコピーします。
- PMPを新規インストールします(上記ファイルをコピーしたPMPセカンダリと同じバージョンのもの)。
- 新規にインストールしたPMPで、[PMP_Home]/mysql/data を開き、セカンダリ サーバーからコピーした ibdata1 と passtrix を上書きします。
- 新規にインストールしたPMPを起動します。
メモ 2:
- 高可用性の設定後にプライマリ サーバーのポート番号を変更すると、高可用性は機能しなくなります。この場合、設定を再度行う必要があります。
メモ 3:
2段階認証が設定されている場合
- 2段階認証が有効化された、もしくは2段階認証のタイプ(PhoneFactor/RSA SecurID/ワンタイム パスワード)が変更されたシステムで、かつ高可用性が設定されている場合、PMPのセカンダリ サーバーを再起動する必要があります。