Download PDF
Download page ノードを使用したイベントサービスデータの移行.
ノードを使用したイベントサービスデータの移行
イベントサービス 4.5.x から 24.x バージョンへの移行に必要な時間は、データ量によって異なる場合があります。したがって、差分データとメタデータを複数回に分けて移行し、イベントサービス 24.x でカットオーバー後のデータを最小限に抑えることを推奨します。
移行のためのイベントサービス 4.5.x データの準備
$APPDYNAMICS_HOME/platform/events-service/processor/conf/event-service-api-store.properties
に移動し、イベントサービス 4.5.x プラットフォームで次のプロパティを有効にします。ad.es.node.http.enabled=true
CODEイベントサービスクラスタの各ノードでこの手順を繰り返します。
- Enterprise Console からイベントサービス 4.5 プラットフォームを再起動します。
イベントサービス 24.x で
INDEX_COMPACTION_PARENT_JOB
に対するジョブ圧縮を無効にします。curl -H 'Content-type: application/json' -XPOST 'http://<ELB_hostname_of_Events_Service_24.x>:<ElasticSearch_Port>/job_framework_job_details_v1/_update_by_query' -d '{ "query": { "term": { "name": "INDEX_COMPACTION_PARENT_JOB" } }, "script": { "inline": "ctx._source.jobDataMap.enabled = false", "lang": "painless" } }'
CODEElasticsearch の HTTP ポートは、対応するイベント サービス インスタンスの
$APPDYNAMICS_HOME/platform/events-service/processor/conf/events-service-api-store.properties
ファイルにあるad.es.node.http.port
プロパティから検索できます。- イベントサービス 24.x プラットフォームで
$APPDYNAMICS_HOME/platform/events-service/processor/conf/events-service-api-store.yml
構成ファイルを編集し、reindex.remote.whitelist
プロパティをカンマ区切りリスト形式で追加します。このリストの構成は次のとおりです。- Elasticsearch 2.x のホスト名とポート。
Elasticsearch 8.x のホスト名とポート。
reindex.remote.whitelist を更新する構文
- className: com.appdynamics.analytics.processor.elasticsearch.configuration.ElasticsearchConfigManagerModule properties: nodeSettings: cluster.name: ${ad.es.cluster.name} reindex.remote.whitelist: "<ELB_hostname_of_Events_Service_4.5.x>:<Port>,<ELB_hostname_of_Events_Service_24.x>:<Port>,<node1_hostname_of_Events_Service_4.5.x>:<Port>,<node2_hostname_of_Events_Service_4.5.x>:<Port>"
CODE例
reindex.remote.whitelist: "es2.elb.amazonaws.com:9200,es8.elb.amazonaws.com:10200,es2node1.amazonaws.com:9200,es2node2.amazonaws.com:9200,10.20.30.40:9200,10.20.30.41:9200,10.20.30.42:9200"
CODE
- Enterprise Console からイベントサービス 24.x プラットフォームを再起動します。
移行ユーティリティをダウンロードしたフォルダに
application.yml
ファイルを作成します。フォルダ構造
/home/username/ - analytics-on-prem-es2-es8-migration-LATESTVERSION-exec.jar - config - application.yml
CODE例
es: # Target Elasticsearch hostname and port for the data migration #(Get this from $APPDYNAMICS_HOME/platform/events-service/processor/conf/events-service-api-store.properties ad.es.node.http.port from events-service 24.x) targetHostName: poc-3tb-console-1177482667.us-west-2.elb.amazonaws.com targetPort: 10200 username: admin password: password # Source Elasticsearch hostname and port for the data migration #(Get this from $APPDYNAMICS_HOME/platform/events-service/processor/conf/events-service-api-store.properties ad.es.node.http.port from events-service 4.x) sourceHostName: poc-3tb-console-1177482667.us-west-2.elb.amazonaws.com sourcePort: 9200 # Maximum number of retries per index during the migration maxRetriesPerIndex: 3 # Delay in milliseconds between each retry attempt delayBetweenRetry: 2000 # Set this to true if you want to use an external version for iteration 2 and subsequent, # or false if you want to use an internal version for migration. useExternalVersion: true clusters: source: api: keys: # Controller API key for the source Elasticsearch v2.x cluster #(Get this from $APPDYNAMICS_HOME/platform/events-service/processor/conf/events-service-api-store.properties ad.accountmanager.key.controller from events-service 4.x) CONTROLLER: ba1140cb-ad2b-4a74-8f2f-2ba3648a99c5 # OPS API key for the source Elasticsearch v2.x cluster #(Get this from $APPDYNAMICS_HOME/platform/events-service/processor/conf/events-service-api-store.properties ad.accountmanager.key.ops from events-service 4.x) OPS: "ba339ff3-4244-4aa5-a458-acb66332aeb6" # API hostname and port of the source events-service cluster # Get the port from the events-service-api-store.properties file ad.dw.http.port from events-service 4.x api: http://poc-3tb-console-1177482667.us-west-2.elb.amazonaws.com:9080 # Provide the absolute path of the certificate (if needed) for the source events-service cluster cert: "" # Set this to true if you want to verify the hostname when creating the SSL context # or false to skip the hostname verification. check: false elasticsearch: # URL and internal URL of the source Elasticsearch v2.x cluster #(Get this from $APPDYNAMICS_HOME/appdynamics/platform/events-service/processor/conf/events-service-api-store.properties ad.es.node.http.port from events-service 4.x) url: http://poc-3tb-console-1177482667.us-west-2.elb.amazonaws.com:9200 internal: http://poc-3tb-console-1177482667.us-west-2.elb.amazonaws.com:9200 # Elasticsearch version of the source cluster (v2.x in this case) version: 2 protocol: http #Provide the scheme to connect to the elasticsearch Valid option : {http} destination: # URL and internal URL of the destination Elasticsearch v8.x cluster api: keys: # URL and internal URL of the source Elasticsearch v2.x cluster #(Get this from $APPDYNAMICS_HOME/appdynamics/platform/events-service/processor/conf/events-service-api-store.properties ad.es.node.http.port from events-service 4.x) CONTROLLER: ba1140cb-ad2b-4a74-8f2f-2ba3648a99c5 # OPS API key for the destination Elasticsearch v8.x cluster # Get this from $APPDYNAMICS_HOME/platform/events-service/processor/conf/events-service-api-store.properties ad.accountmanager.key.ops from events-service 24.x OPS: "ba339ff3-4244-4aa5-a458-acb66332aeb6" # API hostname and port of the destination events-service cluster (not Elasticsearch v8.x cluster) # Get the port from the events-service-api-store.properties file ad.dw.http.port from events-service 4.x api: "http://poc-3tb-console-1177482667.us-west-2.elb.amazonaws.com:10080" # Provide the absolute path of the certificate (if needed) for the source events-service cluster cert: "" # Set this to true if you want to verify the hostname when creating the SSL context # or false to skip the hostname verification. check: false elasticsearch: # URL and internal URL of the source Elasticsearch v2.x cluster #(Get this from $APPDYNAMICS_HOME/appdynamics/platform/events-service/processor/conf/events-service-api-store.properties ad.es.node.http.port from events-service 4.x) url: http://poc-3tb-console-1177482667.us-west-2.elb.amazonaws.com:10200 internal: http://poc-3tb-console-1177482667.us-west-2.elb.amazonaws.com:10200 # Elasticsearch version of the source cluster (v2.x in this case) version: 8 protocol: http #Provide the scheme to connect to the elasticsearch Valid options : {http, https} trustStoreFile: "client-ca.cer" elasticsearchUsername: "" elasticsearchPassword: "" migration: # Number of search hits per request during migration, search_hits: 5000 # Number of concurrent reindex requests during migration (based on CPU cores), maximum value recommended is 8. reindex_concurrency: 4 # Batch size for scrolling through search results during migration, reduce this if you hit the exception : Remote responded with chunk size reindex_scroll_batch_size: 5000 # Number of reindex requests per second during migration reindex_requests_per_second: 8000 # Threshold size in bytes for large rollovers during migration (60GB in this case) # TO DO: Detailed property explanation large_rollover_threshold_size_bytes: 60000000000 # 60 GB # Threshold size in bytes for small rollovers during migration (20GB in this case) small_rollover_threshold_size_bytes: 20000000000 # 20 GB # Required low disk size watermark during migration (85% in this case) required_low_disk_size_watermark: 85 #SQLite3 configuration for status monitoring spring: jpa: properties: hibernate: # Hibernate dialect for SQLite database dialect: org.hibernate.community.dialect.SQLiteDialect
YML
カットオーバー方法を使用したイベントサービスデータの移行
- イベントサービス 4.5.x プラットフォームを送信元として、イベントサービス 24.x を宛先として維持し、移行ユーティリティを実行します。
イベントサービス 4.5.x インデックスをロールオーバーします。
nohup java -jar analytics-on-prem-es2-es8-migration-LATESTVERSION-exec.jar rollover > rollover_output.log 2>&1 &
CODEデータとメタデータをイベントサービス 4.5.x から 24.x に移行します。
nohup java -jar analytics-on-prem-es2-es8-migration-LATESTVERSION-exec.jar data > data_output.log 2>&1 & nohup java -jar analytics-on-prem-es2-es8-migration-LATESTVERSION-exec.jar metadata > metadata_output.log 2>&1 &
CODE
差分をイベントサービス 4.5.x から 24.x プラットフォームに移行します。
nohup java -jar analytics-on-prem-es2-es8-migration-LATESTVERSION-exec.jar data > delta_data_output.log 2>&1 & nohup java -jar analytics-on-prem-es2-es8-migration-LATESTVERSION-exec.jar metadata > delta_metadata_output.log 2>&1 &
CODE- イベントサービス 4.5.x の差分が最小になるまで、この手順を繰り返すことをお勧めします。ログを使用して、差分を移行するために各反復でどのくらいの時間がかかるかを判断します。反復にかかった合計時間が以前よりも大幅に短い場合は、イベントサービス 4.5.x クラスタの差分が減少したことを示します。最後の 2 回の反復で移行にほぼ同じ時間がかかる場合は、反復を停止できます。
たとえば、反復で 30 秒かかり、前の反復でも 30 秒近くかかっている場合、差分は最小であると見なすことができます。 - 差分の移行とカットオーバー移行後の時間差を短縮します。これにより、カットオーバー後に移行するデータが最小限に抑えられます。
2023-08-09T21:52:43.116+05:30 INFO 87453 --- [ main] c.a.analytics.onprem.MigrationTool : Total time taken: 30 seconds
CODEイベントサービス 4.5.x クラスタの差分が最小の場合、ロードバランサポートを更新できます。イベントサービス 4.5.x トラフィックがイベントサービス 24.x に流れるように、ロードバランサ設定のインスタンスポート番号のみを変更します。これにより、イベントサービス 4.5.x の着信トラフィックがイベントサービス 24.x プラットフォームにリダイレクトされ、カットオーバーフェーズが開始されます。
次に設定例を示します。プラットフォーム ポート ロードバランサの設定 ロードバランサポート インスタンスポート イベントサービス 24.x 10080、10081 10080、10081 10080、10081 イベントサービス 4.5.x 9080、9081 9080、9081 10080、10081 アクティブなセッションまたはトランザクションがある場合、一部のデータが失われる可能性があります。
- イベントサービス 4.5.x の差分が最小になるまで、この手順を繰り返すことをお勧めします。ログを使用して、差分を移行するために各反復でどのくらいの時間がかかるかを判断します。反復にかかった合計時間が以前よりも大幅に短い場合は、イベントサービス 4.5.x クラスタの差分が減少したことを示します。最後の 2 回の反復で移行にほぼ同じ時間がかかる場合は、反復を停止できます。
任意のイベントサービスノードのホスト名を送信元および宛先として維持して、application.yml ファイルを更新します。
次に、ファイルの例を示します。es: targetHostName: <Node 1 IP Address> targetPort: 10200 username: admin password: password sourceHostName: <Node 1 IP Address> sourcePort: 9200 maxRetriesPerIndex: 3 delayBetweenRetry: 2000 useExternalVersion: true # Set this to true, if you want to use external version to be used for iteration 2 and subsequent. False, if you want to use internal clusters: source: api: keys: CONTROLLER: ba1140cb-ad2b-4a74-8f2f-2ba3648a99c5 OPS: "ba339ff3-4244-4aa5-a458-acb66332aeb6" api: http://<Node 1 IP Address>:9080 cert: "" check: false elasticsearch: url: http://<Node 1 IP Address>:9200 internal: http://<Node 1 IP Address>:9200 version: 2 protocol: http #Provide the scheme to connect to the elasticsearch Valid option : {http} destination: api: keys: CONTROLLER: ba1140cb-ad2b-4a74-8f2f-2ba3648a99c5 OPS: "ba339ff3-4244-4aa5-a458-acb66332aeb6" api: "http://<Node 1 IP Address>:10080" cert: "" check: false elasticsearch: url: http://<Node 1 IP Address>:10200 internal: http://<Node 1 IP Address>:10200 version: 8 protocol: http #Provide the scheme to connect to the elasticsearch Valid options : {http, https} trustStoreFile: "client-ca.cer" elasticsearchUsername: "" elasticsearchPassword: "" migration: search_hits: 5000 reindex_concurrency: 4 reindex_scroll_batch_size: 5000 reindex_requests_per_second: 8000 large_rollover_threshold_size_bytes: 60000000000 # 60 GB small_rollover_threshold_size_bytes: 20000000000 # 20 GB required_low_disk_size_watermark: 85 spring: jpa: properties: hibernate: dialect: org.hibernate.community.dialect.SQLiteDialect
CODE次のコマンドを実行して、カットオーバー後のデータをイベントサービス 4.5.x から 24.x に移行します。
nohup java -jar analytics-on-prem-es2-es8-migration-LATESTVERSION-exec.jar post_cutover_metadata > post_cutover_metadata_output.log 2>&1 & nohup java -jar analytics-on-prem-es2-es8-migration-LATESTVERSION-exec.jar post_cutover_data > post_cutover_data_output.log 2>&1 &
CODEイベントサービス 24.x で
INDEX_COMPACTION_PARENT_JOB
を有効にします。curl -H 'Content-type: application/json' -XPOST 'http://<ELB_hostname_of_Events_Service_24.x>:<ElasticSearch_Port>/job_framework_job_details_v1/_update_by_query' -d '{ "query": { "term": { "name": "INDEX_COMPACTION_PARENT_JOB" } }, "script": { "inline": "ctx._source.jobDataMap.enabled = true", "lang": "painless" } }'
CODE
これで、イベントサービス 24.x プラットフォームが同期されました。移行ステータスを確認し、移行が成功した場合は、イベントサービス 4.5.x プラットフォームを削除できます。