このページでは、高可用性(HA)ペアとしてコントローラを管理およびトラブルシューティングする方法について説明します。 

HAペアのモニタリングの設定

別のコントローラをモニタリングコントローラとしてインストールすることで、HAペアのモニタリングを設定できます。

  1. HA ペアがない場合は、設定します
  2. [カスタム インストール] を選択し、新しいプラットフォームで Enterprise Console ホストにモニタリングコントローラをインストールします。
    1. プラットフォーム(コントローラ監視プラットフォームなど)を作成します。

      このプラットフォームは、別のサービスのインストールには使用しないでください。

    2. コントローラをインストールします。
    3. [Install] をクリックする前に、[Install Events Service] オプションの選択を解除してください。
  3. HAペアにアプリケーションエージェントとマシンエージェントをインストールおよび構成して、モニタリングの設定を完了します。

モニタリング用のアプリケーションエージェントの設定

アプリケーション エージェントは、Enterprise Console によってコントローラホストに自動的にインストールされます。HA ペアの両方のコントローラに設定することで、モニタリングコントローラに報告できます。これは、HA ペアプラットフォームの JVM オプションを更新することで実行できます。Enterprise Console を使用してアプリケーション エージェントを設定するには、次の手順を実行します。

  1. プライマリ コントローラ ボックスに SSH で接続し、次のコマンドを実行することでプライマリ コントローラ アプリ エージェントの controller-info.xml を更新します。

    cd <controller-install-dir>/appserver/glassfish/domains/domain1/appagent
    cp conf/controller-info.xml ver<version#>/conf/
  2. セカンダリコントローラでも手順1を実行します。
  3. Enterprise Console UI で HA ペアのプラットフォームを選択し、Configurations > [Controller Settings] > [Appserver Configurations] の順にクリックして [JVM Options] セクションに移動します。

  4. 次の手順に従ってJVMのオプションを更新します。

    1. appdynamics.controller.hostName をモニタリングコントローラの IP に更新します。

    2. モニタリングに必要な以下の 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 で指定されたアカウントを使用します。

  5. ページを下にスクロールして [Save] をクリックします。ジョブに指定したプロパティが適用され、プライマリコントローラとセカンダリコントローラが再起動されます。
  6. Enterprise Console UIでコントローラ監視プラットフォームを選択し、Controllerページに移動します。
  7. ウィジェットの [External URL] をクリックして、モニタリングコントローラの UI を開きます。
  8. コントローラにログインします。プライマリコントローラとセカンダリコントローラ両方のモニタリングアプリケーションが表示されれば成功です。

モニタリング用のマシンエージェントのインストールおよび設定

HAペアの両方のコントローラに、モニタリングコントローラへのレポートを行うマシンエージェントをインストールする必要があります。このエージェントは、ハードウェアメトリックを収集するJavaプログラムです。マシンエージェントをインストールおよび設定するには、以下の手順を実行します。

  1. Install the Machine Agentスタンドアロン マシン エージェントをプライマリ コントローラ ボックスにインストールします。このエージェントは起動しないでください。

  2. セカンダリコントローラでも手順1を実行します。
  3. <machine_agent_home>/conf ディレクトリにある controller-info-xml ファイルを編集して、両方のマシンエージェントのマシン エージェント プロパティを構成します。
    1. <controller-host> をモニタリングコントローラの IP に更新します。
    2. 残りの controller-info-xml ファイルは、「構成例」に従ってモデル化します。

  4. 両方のマシンエージェントを起動します
  5. Enterprise Console UIでコントローラ監視プラットフォームを選択し、Controllerページに移動します。
  6. ウィジェットの [External URL] をクリックして、モニタリングコントローラの UI を開きます。
  7. コントローラにログインします。プライマリコントローラとセカンダリコントローラ両方のモニタリングアプリケーションが表示されれば成功です。

フェイルオーバーのトリガーなしでのプライマリコントローラのバウンス

Enterprise Consoleでは、フェイルオーバーを開始せずにプライマリコントローラを停止および起動することはできません。このため、回避策として次の手順を実行する必要があります。

  1. Enterprise Consoleにログインし、Configurations、Controller Settingsの順にクリックしてAppserver Configurationsページに移動します。
  2. [Enable Auto Failover] を選択解除して、[Save] をクリックします。
  3. コントローラがインストールされているコントローラマシンにSSHで接続します。
  4. Enterprise Consoleホストで、以下のコマンドを実行します。

    bin/platform-admin.sh stop-controller-appserver
    bin/platform-admin.sh start-controller-appserver

    これにより、プライマリコントローラがHAモードでバウンスされます。

  5. 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による複製)を行う必要があります。この複製では、プライマリコントローラを稼働させたまま、ディスクの中身をセカンダリノードにコピーすることができます。

増分複製を開始するには:

  1. Enterprise Consoleホストで、以下のコマンドを実行します。

    bin/platform-admin.sh submit-job --service controller --job incremental-replication

    これによりバックグラウンドジョブが開始され、継続実行されます。

  2. 次のいずれかのコマンドを実行して、複製が 4 回以上行われるようにします。

    1. cd <controller_home>/controller-ha
      ./ha_replicate.sh -r status
      CODE
    2. cd <controller_home>/controller-ha/tmp
      cat replication.status
      CODE

    複製に失敗した場合は、セカンダリホストでrsyncプロセスとha-replicatie.shプロセスをすべて停止してください。その後、もう一度増分複製ジョブを実行してください。

  3. Enterprise Consoleホストで次のコマンドを実行し、ジョブを完了します。

    bin/platform-admin.sh submit-job --service controller --job finalize-replication

    これにより、増分複製のループが停止します。このコマンドによってプライマリコントローラが再起動され、ダウンタイムが発生します。

  4. プライマリコントローラとセカンダリコントローラ間に大きなギャップがないことをチェックして、複製が行われていることを確認します。Enterprise Consoleホストで次のコマンドを実行することで、複製のステータスを確認できます。

    bin/platform-admin.sh show-service-status --platform-name <platform_name> --service controller

    セカンダリのステータス確認には数分かかることがあります。

増分複製によるセカンダリコントローラの追加

1つのコントローラに大量のデータがある場合、増分複製によりHAペアに変換することができます。これにより、セカンダリコントローラの追加にかかるダウンタイムを抑え、コントローラを実行したままそのデータの大部分についてrsyncを実行することができます。

増分複製を使用してセカンダリコントローラを追加するには:

  1. ホストおよびrsyncのパラメータを指定して、増分複製を開始します。

    bin/platform-admin.sh submit-job --service controller --job incremental-replication --args controllerSecondaryHost=1.1.1.1 rsyncThrottle=40000 rsyncCompress=true

    これによりバックグラウンドジョブが開始され、継続実行されます。

  2. プライマリ データベース ホストにある <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プロセスをすべて停止してください。その後、もう一度増分複製ジョブを実行してください。

  3. セカンダリ追加ジョブを実行します。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 で、次の手順を実行します。
    1. Enterprise Console にログインし、[Controller] ページにアクセスします。

    2. [More] メニューから、実行している複製の種類に基づいて、[Incremental Replication] または [Finalize Replication] のいずれかを選択します。
      Increment or Finalize Replication

    3. [Number of parallel rsync threads] フィールドに数値を入力し、[Submit] をクリックします。デフォルト値は 1 です。
      Number of parallel rsync threads

  • 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 で、次の手順を実行します。
    1. Enterprise Console にログインし、[Controller] ページにアクセスします。

    2. [More] メニューから、[Finalize Replication] を選択します。
      Finalize Replication

    3. [Database parallel replication] チェックボックスをオンにして、MySQL5.7 データベースとのパラレル複製を有効にします。 
      Database parallel replication checkbox
    4. [] をクリックします。Submit  

  • CLI の場合は、Enterprise Console ホストから次のコマンドを実行して MySQL5.7 パラレル複製を有効にします。デフォルト値は true です。 

    bin/platform-admin.sh submit-job --job finalize-replication --args dbParallelReplication=true
    CODE

増分複製のステータスのトラブルシューティング

最初の増分複製の実行に通常より時間がかかる場合は、次のいずれかのコマンドを実行して、複製のステータスを確認できます。

  1. cd <controller_home>/controller-ha
    ./ha_replicate.sh -r status
    CODE
  2. cd <controller_home>/controller-ha/tmp
    cat replication.status
    CODE

コントローラデータベース複製の再有効化

コントローラデータベースが 7 日間以上同期されていない場合、複製スクリプトを使用して同期することができます。マスターより 7 日間以上遅れたデータベースを同期させることは、コントローラデータベースの復旧とみなされます。データベースを復旧させるには、基本的に新規のセカンダリコントローラを既存の本番コントローラに追加する場合と同じ手順が必要です(セカンダリコントローラの設定と複製の開始を参照)。複製に失敗した HA のフェールオーバーで、この手順を実行することもできます。

複製を再度有効化(コントローラデータベースを復旧)するには:

  1. [Controller] ページで、[Remove Controller] をクリックするか、Enterprise Console ホストで次のコマンドを実行します。

    bin/platform-admin.sh submit-job --job remove --service controller
  2. データベースルート認証情報を入力します。
  3. [Remove Binaries] をオンにするか、Enterprise Console ホストで次のコマンドを実行します。

    bin/platform-admin.sh submit-job --job remove --service controller --args removeBinaries=true
  4. [Remove Controller Cluster] をオフにします。すでにチェックマークが外れている場合は、セカンダリサーバーを削除します。
  5. [Submit] をクリックします。
  6. [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つのコントローラのロールタイプが同じ(両方プライマリ、または両方セカンダリなど)である場合です。

この問題を修正するには

  1. プライマリサーバーを特定します。
    1. コントローラのインストールディレクトリで次のコマンドを実行して、いずれかのコントローラデータベースにログインします。

      bin/controller.sh login-db
    2. 次のコマンドを実行します。

      select * from global_configuration_local where name=‘ha.controller.type’;
  2. データベースで ha.controller.type が適切に設定されていることを確認します。
    1. コントローラのインストールディレクトリで次のコマンドを実行して、変更対象のコントローラデータベースにログインします。

      bin/controller.sh login-db
    2. 次のコマンドを実行して、データベースをプライマリとセカンダリのいずれかに設定します。

      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’;
      BASH
      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’;
      BASH
  3. データベースを再起動して、アプリサーバーに変更内容を反映させます。

    bin/platform-admin.sh stop-controller-appserver --with-db
    bin/platform-admin.sh start-controller-appserver --with-db

    セカンダリアプリサーバーがすでにシャットダウン状態、データベースを再起動する必要はありません。

  4. 複製が正常であることを確認します。

    show slave status\G

    Slave_IO_RunningSlave_SQL_Running で [Yes] と表示されている必要があります。

これで、検出とアップグレードジョブを再試行できるようになります。

フェイルオーバーを実行できない

コントローラのHA構成でフェイルオーバーが失敗した場合、次の2つのシナリオのうちいずれかが原因であると考えられます。

  • セカンダリデータベースがダウンしています。セカンダリデータベースが実行中でないと、フェイルオーバーを実行できません。
    この問題を解決するには、次の手順に従ってください。
    1. セカンダリホストで次のコマンドを実行して、セカンダリデータベースを再起動します。

      bin/controller.sh start-db
    このコマンドを実行してもフェイルオーバーが有効化されない場合、次のシナリオが原因であると考えられます。
  • データベースの複製が正常に行われていません。この場合、フェイルオーバーを行うことはできません。
    このようになる原因は複数考えられます。問題を解決するには、AppDynamicsアカウント担当者にお問い合わせください。