OpenSearch Service クラスターでクラスター間レプリケーションが失敗する場合のトラブルシューティング方法を教えてください。
Amazon OpenSearch Service クラスターにおいて、クラスター間のレプリケーションが機能していません。
解決策
クラスター間の接続構成および権限の要件に準拠していることを確認してください。
注: データストリームではクラスター間レプリケーションを使用できません。詳細については、OpenSearch のウェブサイトで「データストリーム」を参照してください。AWS PrivateLink を使用する場合は、複数 AWS リージョンにわたるクラスター間検索を使用することはできません。
レプリケーションタスクのステータスを参照し、レプリケーション失敗の原因を特定する
レプリケーションタスクのステータスを確認するには、フォロワードメインで次のコマンドを実行します。
GET _plugins/_replication/index_name/_status
注: index-name をインデックス名に置き換えてください。
出力例:
{ "status" : "PAUSED", "reason" : "Paused by AWS due to burstable instance type", "leader_alias" : "connection1", "leader_index" : "test-leader-index", "follower_index" : "test-follower-index" }
出力から reason の値を書き留めておき、レプリケーション失敗を解決するためのアクションを特定します。たとえば下記の出力例で問題をトラブルシューティングするには、バーストできない Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタイプを使用します。
auto-follow の失敗を解決する
auto-follow レプリケーションルールを使用すると、パターンに基づいてインデックスを複製できます。auto-follow ルールは、リーダードメインに新しいインデックスがないか定期的に確認し、パターンに一致するインデックスを自動的に複製します。
auto-follow が失敗した原因を確認する
OpenSearch Service ドメインでエラーログが有効な場合は、キーワード AutoFollowTask および IndexReplicationTask を検索して auto-follow レプリケーションのエラーを特定します。詳細については、「OpenSearch Service のエラーログを確認する」を参照してください。
auto-follow レプリケーションルールの状態を確認するには、フォロワードメインで次のコマンドを実行します。
GET _plugins/_replication/autofollow_stats
出力の failed_indices 値で障害が発生したインデックスを特定します。
出力例:
{ "num_success_start_replication" : 1, "num_failed_start_replication" : 0, "num_failed_leader_calls" : 0, "failed_indices" : [ ".kibana_2", ".opendistro-reports-definitions", ".opendistro-reports-instances", ".kibana_3" ], "autofollow_stats" : [ { "name" : "rule1", "pattern" : "*", "num_success_start_replication" : 1, "num_failed_start_replication" : 0, "num_failed_leader_calls" : 0, "failed_indices" : [ ".kibana_2", ".opendistro-reports-definitions", ".opendistro-reports-instances", ".kibana_3" ], "last_execution_time" : 1679381247239 } ] }
特定のインデックスに関する詳細情報を取得するには、フォロワードメインで次のコマンドを実行します。
GET _plugins/_replication/index_name/_status?pretty
注: index_name をインデックス名に置き換えてください。
障害が発生したインデックスのリストを取得するには、フォロワードメインで次のコマンドを実行します。
GET _cluster/state?pretty&filter_path=metadata.replication_metadata
出力で REPLICATION_LAST_KNOWN_OVERALL_STATE が FAILED であるインデックスを探します。
障害が発生したインデックスのトラブルシューティング
次の手順を実行します。
- フォロワードメインで次のコマンドを実行し、障害が発生したインデックスのレプリケーションを停止します。
注: failed_index_name をステータスが FAILED であるインデックスの名前に置き換えてください。POST _plugins/_replication/failed_index_name/_stop { } - インデックスを削除するには、フォロワードメインで次のコマンドを実行します。
注: failed_index_name をステータスが FAILED であるインデックスの名前に置き換えてください。DELETE failed_index_name - auto-follow ルールを削除するには、フォロワードメインで次のコマンドを実行します。
注: connection_alias を接続エイリアスに、rule_name を auto-follow ルール名に置き換えてください。接続エイリアスを特定するには、ドメインダッシュボードの [接続] タブを確認します。DELETE _plugins/_replication/_autofollow { "leader_alias" : "connection_alias", "name": "rule_name" } - インデックスパターンを使用して auto-follow ルールを再作成するには、フォロワードメインで次のコマンドを実行します。
注: connection_alias を接続エイリアスに、rule_name をルール名に、index_pattern をインデックスパターンに置き換えてください。さらに、leader_cluster_role をリーダークラスターのロールに、follower_cluster_role をフォロワークラスターのロールに置き換えてください。POST _plugins/_replication/_autofollow { "leader_alias": "connection_alias", "name": "rule_name", "pattern": "index_pattern", "use_roles": { "leader_cluster_role": "leaderclusterrole", "follower_cluster_role": "followerclusterrole" } }
レプリケーションに遅延がないか確認する
Amazon CloudWatch のクラスター間レプリケーションに関するメトリクスを参照し、クラスター間のレプリケーションの遅延を特定します。
高遅延が発生しているリーダードメインとフォロワードメインにおいて、Java Virtual Machine (JVM) メモリの高負荷が発生していないか確認し、トラブルシューティングします。ドメインが正常状態の場合は、CloudWatch メトリクス LeaderCheckPoint および FollowerCheckPoint を参照し、遅延が漸増しているか、一定に留まっているかを判断します。LeaderCheckPoint と FollowerCheckPoint メトリクスが正常な場合は、IndexingRate がフォロワードメインに対して高すぎる可能性があります。同期フェーズを高速化するには、レプリケーションを停止して再開します。手順については、「レプリケーションの一時停止と再開」を参照してください。
レプリケーションが実行中であること、および遅延が発生しているかどうかを確認します。リーダーとフォロワーの両方のチェックポイントが同じ場合、レプリケーションは同期しています。
フォロワードメインとリーダードメインのインデックスレプリケーションに関するステータスを確認するには、フォロワードメインとリーダードメインで次のコマンドを実行します。
GET _plugins/_replication/follower_stats?pretty GET _plugins/_replication/leader_stats?pretty
レプリケーションが完了したかどうかを確認するには、フォロワードメインで次のコマンドを実行します。
GET _cat/indices
出力において、リーダーシャードとフォロワーシャードのインデックスリストが同じかどうかを確認します。同じでない場合は、レプリケーションは途中段階です。
レプリケーションを一時停止して再開する
レプリケーションを一時的に一時停止することで、問題の修正、リーダードメインの負荷軽減、またはリーダードメインの更新を行うことができます。
レプリケーションを一時停止するには、フォロワードメインで次のコマンドを実行します。
POST _plugins/_replication/index_name/_pause { }
注: index_name をインデックス名に置き換えてください。
レプリケーションを再開するには、フォロワードメインで次のコマンドを実行します。
POST _plugins/_replication/index_name/_resume { }
注: index_name をインデックス名に置き換えてください。
レプリケーションの一時停止期間が 12 時間を超えると、レプリケーションを再開できなくなります。この場合は、レプリケーションを停止し、フォロワーのインデックスを削除した後、リーダーのレプリケーションを再開する必要があります。
重要: レプリケーションを停止すると、フォロワーインデックスはリーダーに追従せず、標準インデックスになります。停止したレプリケーションは再開できません。
レプリケーションを停止するには、フォロワードメインで次のコマンドを実行します。
POST _plugins/_replication/index_name/_stop { }
注: index_name をインデックス名に置き換えてください。
