イベントサービスデータをバックアップしておくと、イベントサービスマシンのハードウェア障害や他の種類の障害からの復旧に役立ちます。スナップショットは、イベントサービスクラスタ全体をバックアップしたデータを表します。スナップショットは、障害復旧だけでなく、イベントサービスの新規インスタンスへの移行にも利用できます。

イベントサービスのツール(Linux 用の events-service.sh と Windows 用の events-service.exe)には、以下に説明しているように、スナップショットによるバックアップ、スナップショットの作成、およびスナップショットからの復元のためにシステムの準備を行うコマンドがあります。 

以下の手順では、Linuxでのコマンド例を示しています。Windows を使用している場合は、.sh 形式ではなく実行ファイルの events-service.exe 形式を使用し、必要に応じてサンプルのディレクトリパスを調整します。

ファイルシステムの準備

バックアップの計画を立てる際には、バックアップの格納場所と頻度を検討することが重要です。スナップショット用のリポジトリとして機能するシステムには、高い I/O 要求を効率的に処理できる必要があるため、SSD ベースのストレージをお勧めします。また、リポジトリシステムには十分な空きディスク容量を確保しておきます。

データの完全なコピーが作成されるのは最初のスナップショットのみです。後続のスナップショットは増分であり、直前のスナップショット以降の変更のみが対象になります。したがって、高頻度でバックアップしても、低頻度のバックアップと比べて実質的なストレージオーバーヘッドは増加しません。

イベントサービスには、スナップショットリポジトリを設定するためのツールが付属しています。スナップショットリポジトリとして以下の場所タイプがサポートされています。

  • イベントサービスノード間で共有されているファイルシステム上の場所。 
  • Amazon S3バケット

スナップショットをホストするシステムを選択して準備したら、各イベントサービスノードを次のように設定します。

  1. ファイルシステムを使用している場合は、共有ファイルシステムをバックアップリポジトリのデフォルトの場所である <appd_home>/events-service/appdynamics-events-service-backup にマウントします。このバックアップの場所を変更するには、conf/events-service-api-store.propertiesad.es.backupmanager.path.repo 設定を変更します。ただし、プロパティファイルを変更した場合は、その変更を反映するためにイベントサービスノードを再起動する必要があります。
  2. 各ノードでリポジトリを設定します。使用するリポジトリタイプに合わせて適切なコマンドを使用します。
    • 共有ファイルシステムの場合:

      bin/events-service.sh snapshot-configure-fs -p conf/events-service-api-store.properties
    • Amazon S3の場合:

      bin/events-service.sh snapshot-configure-s3 -p conf/events-service-api-store.properties -bucket "s3-bucket-name"

      snapshot-configure-s3 コマンドは、S3 のアクセスキーと秘密鍵を渡すための引数などの追加オプション引数を受け付けます。"bin/events-service.sh -h" を実行してすべてのオプションを表示します。 

    次のようなメッセージが表示されれば、構成は成功しています。

    [2015-12-17T15:43:04,092-08:00] Successfully configured snapshot repository!

スナップショットの作成

リポジトリを設定したら、イベントサービスデータのスナップショットを生成できます。クラスタをバックアップする場合は、いずれかのプライマリノードでこのコマンドを実行するだけで済みます。複数のクラスタがある場合は、それぞれのクラスタでスナップショットを生成します。スナップショットはクラスタ固有です。

スナップショットを生成します。

bin/events-service.sh snapshot-run -p conf/events-service-api-store.properties

このコマンドを使用して、バックアップポリシーに基づく定期的なバックアップをスクリプト化できます。以下の出力は、バックアップが成功したことを表しています。

Take snapshot request executed successfully. Snapshot itself may still be in progress.

スナップショットの進捗を確認するには、snapshot-status を使用します。 

bin/events-service.sh snapshot-status -p conf/events-service-api-store.properties

スナップショットIDを指定していない場合、このコマンドは直近のスナップショットのステータスを取得します。snapshot-list コマンドを使用すると、利用可能なスナップショットの一覧を確認できます。 

スナップショットからの復元

スナップショットを復元すると、イベントサービス用に構成されているデータストアが以前にスナップショットとして保存していたデータストアに置き換えられます。スナップショットから復元する場合は、特定のクラスタのスナップショットから復元します。各クラスタで次のコマンドを実行します。

スナップショットを復元するには、snapshot-restore コマンドで、バックアップしているイベント サービス インスタンスのプロパティファイルを指定します。このコマンドの使用例とサンプル出力を以下に示します。

bin/events-service.sh snapshot-restore -p conf/events-service-api-store.properties
[2015-12-17T17:02:52,264-08:00] HV000001: Hibernate Validator 5.0.2.Final
[2015-12-17T17:02:52,811-08:00] Restore snapshot request executed successfully. Restore is now in progress. Use the snapshot-status command to view the current restore status.

snapshot-restore-status コマンドを使用して、スナップショット復元のステータスを確認します。例:

bin/events-service.sh snapshot-restore-status -p conf/analytics-api-store.properties
[2017-01-03T14:37:46,647-08:00] HV000001: Hibernate Validator 5.2.2.Final
[2017-01-03T14:37:47,027-08:00] Restore is complete, your cluster should be fully functional!

コマンドでスナップショットIDを渡すことにより、特定のスナップショットを復元できます。IDを指定しなかった場合は、直近のスナップショットが復元されます。

bin/events-service.sh snapshot-restore -p conf/events-service-api-store.properties -id <snapshot_id>

snapshot-list コマンドを使用すると、スナップショット ID の一覧を取得できます。

イベントサービスデータの移行

イベントサービスのインスタンス間でデータを移行するには、データのバックアップと復元だけでなく、スナップショットユーティリティを使用することもできます。

移行先のイベントサービスは新規インストールである必要があります。つまり、2 つの異なるイベント サービス インスタンスのデータをマージすることはできません。以下の手順を完了するまでは、コントローラ構成でイベントサービスの URL を新しいインスタンスの場所に変更しないでください。

イベントサービスデータを移行するには、以下の一般的な手順に従います。

  1. 前述の手順に従って、新しいイベントサービスノードを準備します。 
  2. 新しいイベントサービスノードそれぞれで、リポジトリがある共有ディレクトリをマウントします。
  3. 新しいクラスタのプライマリノードで、新しいクラスタを定義しているプロパティファイルを -p の引数として渡し、前述のように ID を指定してスナップショットを復元します。 
  4. 終了したら、「イベントサービスへの接続」の説明に従って、コントローラからイベントサービスおよびイベント サービス クライアントへの接続を、新しいインスタンスを使用するように変更します。