高可用性デプロイの管理
このページでは、高可用性(HA)ペアとしてコントローラを管理およびトラブルシューティングする方法について説明します。
HAペアのモニタリングの設定
別のコントローラをモニタリングコントローラとしてインストールすることで、HAペアのモニタリングを設定できます。
モニタリング用のアプリケーションエージェントの設定
モニタリング用のマシンエージェントのインストールおよび設定
- プライマリコントローラボックスにマシンエージェントをインストールします 。このエージェントは起動しないでください。
- セカンダリコントローラでも手順 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では、プライマリコントローラをシャットダウンできません。ただし、コントローラの起動および停止コマンドを使用してセカンダリコントローラを再起動することはできます。
コントローラを手動で起動または停止するには、以下のコマンドを使用します。
-
開始するには:
bin/platform-admin.sh start-controller-appserver --with-db
-
停止するには:
bin/platform-admin.sh stop-controller-appserver --with-db
自動フェールオーバー
Enterprise Console には、コントローラウォッチドッグを自動フェールオーバーに使用するウォッチドッグハイ アベイラビリティ(HA)モジュール が含まれています。自動フェールオーバーを有効または無効にするには、watchdog スクリプトをそれぞれ実行または停止する必要があります。
自動フェイルオーバーの有効/無効は CLI で切り替えることもできます。
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>
コントローラデータベース増分複製の開始
中断していた複製の再有効化
セカンダリコントローラにあるデータベース複製とプライマリコントローラの開きが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 -
cd <controller_home>/controller-ha/tmp cat replication.status
注: 複製に失敗した場合は、セカンダリホストで 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>
MySQL パラレル複製の有効化
Enterprise Console UI または CLI を使用して、確定複製を実行するときに MySQL(MySQL 5.7 以降で使用可能)パラレル複製を有効にできます。
- Enterprise Console UI で、次の手順を実行します。
-
Enterprise Console にログインし、[Controller] ページにアクセスします。
-
[More] メニューから、[Finalize Replication] を選択します。
-
[Database parallel replication] チェックボックスをオンにして、MySQL データベースとのパラレル複製を有効にします。
-
[送信(Submit)] をクリックします。
-
-
CLI で、Enterprise Console ホストから次のコマンドを実行して MySQL パラレル複製を有効にします。デフォルト値は true です。
bin/platform-admin.sh submit-job --job finalize-replication --args dbParallelReplication=true
増分複製のステータスのトラブルシューティング
最初の増分複製の実行に通常より時間がかかる場合は、次のいずれかのコマンドを実行して、複製のステータスを確認できます。
-
cd <controller_home>/controller-ha ./ha_replicate.sh -r status -
cd <controller_home>/controller-ha/tmp cat replication.status
コントローラデータベース複製の再有効化
コントローラデータベースが 7 日間以上同期されていない場合、複製スクリプトを使用して同期することができます。マスターより 7 日間以上遅れたデータベースを同期させることは、コントローラデータベースの復旧と見なされます。データベースを復旧させるには、新規のセカンダリコントローラを既存の本番コントローラに追加する場合と同じ手順が必要です(「セカンダリコントローラの設定と複製の開始」を参照)。複製に失敗した HA のフェールオーバーで、この手順を実行することもできます。
複製を再度有効化(コントローラデータベースを復旧)するには:
HA ペアのコントローラデータのバックアップと復元
HA 展開では、セカンダリコントローラがプライマリ コントローラ サービスを中断することなくコールドバックアップを実行できる完全な本番データを提供するため、コントローラデータのバックアップが比較的簡単になります。
HA を設定した後、バックアップを実行するために、Enterprise Console でコントローラを停止し、Splunk AppDynamics ホームディレクトリのファイルレベルコピー(コールドバックアップなど)を実行します。完了したら、Enterprise Console からコントローラを再起動するだけです。セカンダリはその後プライマリのデータに同期化します。
HA 環境またはスタンドアロン環境でバックアップからデータベースを復元する場合、プライマリサーバー ha.type が active に、セカンダリサーバー ha.mode が passive に設定されていることを確認する必要があります。
HAペアの構成アップデート
Enterprise Console は、プライマリコントローラで行われたファイルレベルの構成変更(Jetty 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
コントローラの診断データ 123.45.0.1: controller_database:実行中 controller_appserver:実行中 reports_service:実行中 operating_system:Linux controller_version:004-004-001-000 controller_performance_profile:小さい controller_ha_type:プライマリ controller_appserver_mode:アクティブ controller_metric_data_per_min:該当なし slave_io_state:マスターがイベントを送信するのを待っています seconds_behind_master:0 master_server_id:567 master_host:controller-secondary master_ssl_allowed:いいえ 123.45.0.2: controller_database:実行中 controller_appserver:実行されていない reports_service:実行中 operating_system:Linux controller_version:004-004-001-000 controller_performance_profile:小さい controller_ha_type:セカンダリ controller_appserver_mode:パッシブ
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’; - セカンダリ
-
use controller: update global_configuration_local set value=‘secondary’ where name=‘ha.controller.type’; update global_configuration_local set value=‘passive’ where name=‘appserver.mode’;
-
-
データベースを再起動して、アプリサーバーに変更内容を反映させます。
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
- データベースの複製が正常に行われていません。この場合、フェールオーバーを行うことはできません。このようになる原因は複数考えられます。問題を修正するには、カスタマーサポートにお問い合わせください。