Download PDF
Download page 高可用性デプロイの管理.
高可用性デプロイの管理
このページでは、高可用性(HA)ペアとしてコントローラを管理およびトラブルシューティングする方法について説明します。
HAペアのモニタリングの設定
別のコントローラをモニタリングコントローラとしてインストールすることで、HAペアのモニタリングを設定できます。
- HA ペアがない場合は、設定します。
- [カスタム インストール] を選択し、新しいプラットフォームで Enterprise Console ホストにモニタリングコントローラをインストールします。
プラットフォーム(コントローラ監視プラットフォームなど)を作成します。
このプラットフォームは、別のサービスのインストールには使用しないでください。
- コントローラをインストールします。
- [Install] をクリックする前に、[Install Events Service] オプションの選択を解除してください。
- HAペアにアプリケーションエージェントとマシンエージェントをインストールおよび構成して、モニタリングの設定を完了します。
モニタリング用のアプリケーションエージェントの設定
アプリケーション エージェントは、Enterprise Console によってコントローラホストに自動的にインストールされます。HA ペアの両方のコントローラに設定することで、モニタリングコントローラに報告できます。これは、HA ペアプラットフォームの JVM オプションを更新することで実行できます。Enterprise Console を使用してアプリケーション エージェントを設定するには、次の手順を実行します。
プライマリ コントローラ ボックスに SSH で接続し、次のコマンドを実行することでプライマリ コントローラ アプリ エージェントの
controller-info.xml
を更新します。cd <controller-install-dir>/appserver/glassfish/domains/domain1/appagent cp conf/controller-info.xml ver<version#>/conf/
- セカンダリコントローラでも手順1を実行します。
Enterprise Console UI で HA ペアのプラットフォームを選択し、Configurations > [Controller Settings] > [Appserver Configurations] の順にクリックして [JVM Options] セクションに移動します。
次の手順に従ってJVMのオプションを更新します。
appdynamics.controller.hostName
をモニタリングコントローラの IP に更新します。モニタリングに必要な以下の
jvm-options
を追加します。-Dappdynamics.agent.applicationName=<app_name>, -Dappdynamics.agent.tierName=<tier_name>, -Dappdynamics.agent.nodeName=<node_name>, -Dappdynamics.agent.accountName=<account_name>, -Dappdynamics.agent.accountAccessKey=<access_key>
コントローラ UI からアクセスキーを取得するには、[Settings] > [License] > [Account] に移動します。次に、クリックすると、アクセスキーが表示されます。コントローラにログインするときには、
appdynamics.agent.accountName
で指定されたアカウントを使用します。
- ページを下にスクロールして [Save] をクリックします。ジョブに指定したプロパティが適用され、プライマリコントローラとセカンダリコントローラが再起動されます。
- Enterprise Console UIでコントローラ監視プラットフォームを選択し、Controllerページに移動します。
- ウィジェットの [External URL] をクリックして、モニタリングコントローラの UI を開きます。
- コントローラにログインします。プライマリコントローラとセカンダリコントローラ両方のモニタリングアプリケーションが表示されれば成功です。
モニタリング用のマシンエージェントのインストールおよび設定
HAペアの両方のコントローラに、モニタリングコントローラへのレポートを行うマシンエージェントをインストールする必要があります。このエージェントは、ハードウェアメトリックを収集するJavaプログラムです。マシンエージェントをインストールおよび設定するには、以下の手順を実行します。
Install the Machine Agentスタンドアロン マシン エージェントをプライマリ コントローラ ボックスにインストールします。このエージェントは起動しないでください。
- セカンダリコントローラでも手順1を実行します。
<machine_agent_home>/conf
ディレクトリにあるcontroller-info-xml
ファイルを編集して、両方のマシンエージェントのマシン エージェント プロパティを構成します。<controller-host>
をモニタリングコントローラの IP に更新します。残りの
controller-info-xml
ファイルは、「構成例」に従ってモデル化します。
- 両方のマシンエージェントを起動します。
- Enterprise Console UIでコントローラ監視プラットフォームを選択し、Controllerページに移動します。
- ウィジェットの [External URL] をクリックして、モニタリングコントローラの UI を開きます。
- コントローラにログインします。プライマリコントローラとセカンダリコントローラ両方のモニタリングアプリケーションが表示されれば成功です。
フェイルオーバーのトリガーなしでのプライマリコントローラのバウンス
Enterprise Consoleでは、フェイルオーバーを開始せずにプライマリコントローラを停止および起動することはできません。このため、回避策として次の手順を実行する必要があります。
- Enterprise Consoleにログインし、Configurations、Controller Settingsの順にクリックしてAppserver Configurationsページに移動します。
- [Enable Auto Failover] を選択解除して、[Save] をクリックします。
- コントローラがインストールされているコントローラマシンにSSHで接続します。
Enterprise Consoleホストで、以下のコマンドを実行します。
bin/platform-admin.sh stop-controller-appserver bin/platform-admin.sh start-controller-appserver
これにより、プライマリコントローラがHAモードでバウンスされます。
- Enterprise Console Appserver Configurationsページで、自動フェイルオーバーを再有効化します。
コントローラの起動と停止
Enterprise Consoleでは、プライマリコントローラをシャットダウンできません。ただし、コントローラの起動および停止コマンドを使用してセカンダリコントローラを再起動することはできます。
コントローラを手動で起動または停止するには、以下のコマンドを使用します。
開始するには:
bin/platform-admin.sh start-controller-appserver --with-db
停止するには:
bin/platform-admin.sh stop-controller-appserver --with-db
自動フェイルオーバー
Enterprise Consoleは、プライマリアプリサーバーとデータベースの正常性を監視します。アプリサーバーかデータベースが応答しなくなった場合、デフォルトでは、Enterprise Consoleは5分間待機してからフェイルオーバーを開始します。この待機時間は、Controller SettingsのAppserver ConfigurationsページにあるDomain Protocolテキストフィールドのデフォルト値を変更することで構成できます。
自動フェイルオーバーの有効/無効は CLI で切り替えることもできます。
Enterprise Console のバージョン 4.5.14 以降には、コントローラウォッチドッグを自動フェールオーバーに使用する高可用性(HA)モジュールが付属しています。自動フェールオーバーを有効または無効にするには、watchdog
スクリプトを実行または停止する必要があります。
次のコマンドを使用して、CLI でコントローラウォッチドッグを無効または有効にするには、次のようになります。
- コントローラウォッチドッグを停止する場合:
./platform-admin.sh submit-job --job stop-controller-watchdog --service controller
- コントローラウォッチドッグを開始するには、次の手順を実行します。
./platform-admin.sh submit-job --job start-controller-watchdog --service controller
手動フェールオーバーとフェールバックの実行
プライマリからセカンダリへ手動でフェールオーバーするには、Enterprise Console の [Controller] ページの [HA Failover] オプションをクリックするか、または Enterprise Console ホストで次のコマンドを実行します。
bin/platform-admin.sh submit-job --service controller --job ha-failover --platform-name <name_of_the_platform>
これにより、セカンダリのアプリサーバーがプライマリになり、セカンダリのデータベースが複製マスターになります。また、それまでのプライマリがセカンダリに変更されます。
古いプライマリへのフェイルバックを実行するプロセスは、セカンダリへのフェイルオーバーと同じです。Enterprise Console ホストで次のコマンドを実行するだけです。
bin/platform-admin.sh submit-job --service controller --job ha-failover --platform-name <name_of_the_platform>
プライマリが7日以上ダウンしていた場合は、以下のセクションに従ってデータベースを復旧する必要があります。
コントローラデータベース増分複製の開始
中断していた複製の再有効化
セカンダリコントローラにあるデータベース複製とプライマリコントローラの開きが3日以上ある場合、増分複製(プライマリデータベース稼働中のrsyncによる複製)を行う必要があります。この複製では、プライマリコントローラを稼働させたまま、ディスクの中身をセカンダリノードにコピーすることができます。
増分複製を開始するには:
Enterprise Consoleホストで、以下のコマンドを実行します。
bin/platform-admin.sh submit-job --service controller --job incremental-replication
これによりバックグラウンドジョブが開始され、継続実行されます。
次のいずれかのコマンドを実行して、複製が 4 回以上行われるようにします。
cd <controller_home>/controller-ha ./ha_replicate.sh -r status
CODEcd <controller_home>/controller-ha/tmp cat replication.status
CODE
複製に失敗した場合は、セカンダリホストでrsyncプロセスとha-replicatie.shプロセスをすべて停止してください。その後、もう一度増分複製ジョブを実行してください。
Enterprise Consoleホストで次のコマンドを実行し、ジョブを完了します。
bin/platform-admin.sh submit-job --service controller --job finalize-replication
これにより、増分複製のループが停止します。このコマンドによってプライマリコントローラが再起動され、ダウンタイムが発生します。
プライマリコントローラとセカンダリコントローラ間に大きなギャップがないことをチェックして、複製が行われていることを確認します。Enterprise Consoleホストで次のコマンドを実行することで、複製のステータスを確認できます。
bin/platform-admin.sh show-service-status --platform-name <platform_name> --service controller
セカンダリのステータス確認には数分かかることがあります。
増分複製によるセカンダリコントローラの追加
1つのコントローラに大量のデータがある場合、増分複製によりHAペアに変換することができます。これにより、セカンダリコントローラの追加にかかるダウンタイムを抑え、コントローラを実行したままそのデータの大部分についてrsyncを実行することができます。
増分複製を使用してセカンダリコントローラを追加するには:
ホストおよびrsyncのパラメータを指定して、増分複製を開始します。
bin/platform-admin.sh submit-job --service controller --job incremental-replication --args controllerSecondaryHost=1.1.1.1 rsyncThrottle=40000 rsyncCompress=true
これによりバックグラウンドジョブが開始され、継続実行されます。
プライマリ データベース ホストにある
<controller_home>/controller-ha/tmp/replication.status
をチェックして、複製が 4 回以上行われていることを確認します。
rsync ステータスファイルの出力サンプルを以下に示します。rsync started at Mon Mar 5 11:49:56 PST 2018 rsync completed at Mon Mar 5 11:50:56 PST 2018 rsync started at Mon Mar 5 11:51:01 PST 2018 rsync completed at Mon Mar 5 11:51:11 PST 2018
複製に失敗した場合は、セカンダリホストでrsyncプロセスとha-replicatie.shプロセスをすべて停止してください。その後、もう一度増分複製ジョブを実行してください。
セカンダリ追加ジョブを実行します。Enterprise Consoleで最終rsyncが実行され、セカンダリが追加されます。
bin/platform-admin.sh submit-job --service controller --job add-secondary --args controllerSecondaryHost=secondary mysqlRootPassword=‘password'
このコマンドによってプライマリコントローラが再起動され、ダウンタイムが発生します。
add-secondaryコマンドをトリガーするまで、セカンダリコントローラはEnterprise Consoleプラットフォームに追加されません。このため、Enterprise Consoleで、セカンダリコントローラに対してオペレーションを実行することはできません。
複製を停止する場合は、次のコマンドを実行します。
bin/platform-admin.sh submit-job --service controller --job stop-incremental-replication
Rsync スレッドのレプリケーションファクタの設定
Enterprise Console UI または CLI を使用して、増分または確定の複製を実行するときの並列 rsync スレッドの数をジョブパラメータとして設定できます。
- Enterprise Console UI で、次の手順を実行します。
Enterprise Console にログインし、[Controller] ページにアクセスします。
[More] メニューから、実行している複製の種類に基づいて、[Incremental Replication] または [Finalize Replication] のいずれかを選択します。
[Number of parallel rsync threads] フィールドに数値を入力し、[Submit] をクリックします。デフォルト値は 1 です。
CLI から、実行している複製の種類に基づいて、Enterprise Console ホストから次のいずれかのコマンドを実行し、
numberThreadForRsync
引数を設定します。bin/platform-admin.sh submit-job --job incremental-replication --args numberThreadForRsync=<number> bin/platform-admin.sh submit-job --job finalize-replication --args numberThreadForRsync=<number>
CODE
MySQL 5.7 パラレル複製の有効化
Enterprise Console UI または CLI を使用して、確定複製を実行するときに MySQL 5.7 パラレル複製を有効にできます。
- Enterprise Console UI で、次の手順を実行します。
Enterprise Console にログインし、[Controller] ページにアクセスします。
[More] メニューから、[Finalize Replication] を選択します。
- [Database parallel replication] チェックボックスをオンにして、MySQL5.7 データベースとのパラレル複製を有効にします。
[] をクリックします。Submit
CLI の場合は、Enterprise Console ホストから次のコマンドを実行して MySQL5.7 パラレル複製を有効にします。デフォルト値は true です。
bin/platform-admin.sh submit-job --job finalize-replication --args dbParallelReplication=true
CODE
増分複製のステータスのトラブルシューティング
最初の増分複製の実行に通常より時間がかかる場合は、次のいずれかのコマンドを実行して、複製のステータスを確認できます。
cd <controller_home>/controller-ha ./ha_replicate.sh -r status
CODEcd <controller_home>/controller-ha/tmp cat replication.status
CODE
コントローラデータベース複製の再有効化
コントローラデータベースが 7 日間以上同期されていない場合、複製スクリプトを使用して同期することができます。マスターより 7 日間以上遅れたデータベースを同期させることは、コントローラデータベースの復旧とみなされます。データベースを復旧させるには、基本的に新規のセカンダリコントローラを既存の本番コントローラに追加する場合と同じ手順が必要です(セカンダリコントローラの設定と複製の開始を参照)。複製に失敗した HA のフェールオーバーで、この手順を実行することもできます。
複製を再度有効化(コントローラデータベースを復旧)するには:
[Controller] ページで、[Remove Controller] をクリックするか、Enterprise Console ホストで次のコマンドを実行します。
bin/platform-admin.sh submit-job --job remove --service controller
- データベースルート認証情報を入力します。
[Remove Binaries] をオンにするか、Enterprise Console ホストで次のコマンドを実行します。
bin/platform-admin.sh submit-job --job remove --service controller --args removeBinaries=true
- [Remove Controller Cluster] をオフにします。すでにチェックマークが外れている場合は、セカンダリサーバーを削除します。
- [Submit] をクリックします。
[Controller] ページからセカンダリコントローラを追加するか、Enterprise Console ホストで次のコマンドを実行します。
bin/platform-admin.sh submit-job --service controller --job add-secondary --args controllerSecondaryHost=secondary mysqlRootPassword=‘password'
このコマンドによってプライマリコントローラが再起動され、ダウンタイムが発生します。
Enterprise Consoleにセカンダリコントローラがオンボードされ、複製が再び有効化されます。
HAペアのコントローラデータのバックアップと復元
HA デプロイメントでは、セカンダリコントローラがプライマリ コントローラ サービスを中断することなくコールドバックアップを実行することができる完全な本番データを提供するため、コントローラデータのバックアップが比較的簡単になります。
HA を設定した後、バックアップを実行するため、Enterprise Console でコントローラを停止し、AppDynamics ホームディレクトリのファイルレベルコピー(コールドバックアップなど)を実行します。完了したら、Enterprise Console からコントローラを再起動するだけです。セカンダリはその後プライマリのデータに同期化します。
HA環境またはスタンドアロン環境でバックアップからデータベースを復元する場合、プライマリサーバーとセカンダリサーバーでha.typeがactiveに、ha.modeがpassiveに設定されていることを確認してください。
HAペアの構成アップデート
Enterprise Console は、プライマリコントローラで行われたファイルレベルの構成変更(domain.xml や db.cnf
の変更など)をすべて、セカンダリコントローラにコピーします。
今後、コントローラの構成を変更する場合は、必ず Enterprise Console の [Controller Settings] ページにある [Configurations] で行ってください。ここで行った変更は、アップグレード時も保持されます。Enterprise Console以外で行った変更は、アップグレード後に破棄されます。
HAのトラブルシューティング
コントローラの診断データ
Enterprise Console は、Enterprise Console ホストにある platform-admin-server.log
に HA 関連のログメッセージを書き込みます。
コントローラを診断するには、次のコマンドを実行します。
bin/platform-admin.sh submit-job --platform-name <name_of_the_platform> --job diagnosis --service controller
platform-admin-server.log
でコントローラの診断データを確認してください。
サンプルコントローラの診断データ
Linux
Controller diagnostic data: 123.45.0.1: controller_database: running controller_appserver: running reports_service: running operating_system: Linux controller_version: 004-004-001-000 controller_performance_profile: small controller_ha_type: primary controller_appserver_mode: active controller_metric_data_per_min: N/A slave_io_state: Waiting for master to send event seconds_behind_master: 0 master_server_id: 567. master_host: controller-secondary master_ssl_allowed: No 123.45.0.2: controller_database: running controller_appserver: not running reports_service: running operating_system: Linux controller_version: 004-004-001-000 controller_performance_profile: small controller_ha_type: secondary controller_appserver_mode: passive
HAコントローラのロールが無効
コントローラデータベースのHAコントローラのロールが不適切である場合、Enterprise Consoleで検出とアップグレードジョブを行うことはできません。HAコントローラの状態が無効になるのは、2つのコントローラのロールタイプが同じ(両方プライマリ、または両方セカンダリなど)である場合です。
この問題を修正するには
- プライマリサーバーを特定します。
コントローラのインストールディレクトリで次のコマンドを実行して、いずれかのコントローラデータベースにログインします。
bin/controller.sh login-db
次のコマンドを実行します。
select * from global_configuration_local where name=‘ha.controller.type’;
- データベースで
ha.controller.type
が適切に設定されていることを確認します。コントローラのインストールディレクトリで次のコマンドを実行して、変更対象のコントローラデータベースにログインします。
bin/controller.sh login-db
次のコマンドを実行して、データベースをプライマリとセカンダリのいずれかに設定します。
use controller; update global_configuration_local set value=‘primary’ where name=‘ha.controller.type’; update global_configuration_local set value=‘active’ where name=‘appserver.mode’;
BASHuse controller: update global_configuration_local set value=‘secondary’ where name=‘ha.controller.type’; update global_configuration_local set value=‘passive’ where name=‘appserver.mode’;
BASH
データベースを再起動して、アプリサーバーに変更内容を反映させます。
bin/platform-admin.sh stop-controller-appserver --with-db bin/platform-admin.sh start-controller-appserver --with-db
セカンダリアプリサーバーがすでにシャットダウン状態、データベースを再起動する必要はありません。
複製が正常であることを確認します。
show slave status\G
Slave_IO_Running
とSlave_SQL_Running
で [Yes
] と表示されている必要があります。
これで、検出とアップグレードジョブを再試行できるようになります。
フェイルオーバーを実行できない
コントローラのHA構成でフェイルオーバーが失敗した場合、次の2つのシナリオのうちいずれかが原因であると考えられます。
- セカンダリデータベースがダウンしています。セカンダリデータベースが実行中でないと、フェイルオーバーを実行できません。
この問題を解決するには、次の手順に従ってください。セカンダリホストで次のコマンドを実行して、セカンダリデータベースを再起動します。
bin/controller.sh start-db
- データベースの複製が正常に行われていません。この場合、フェイルオーバーを行うことはできません。
このようになる原因は複数考えられます。問題を解決するには、AppDynamicsアカウント担当者にお問い合わせください。