翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon OpenSearch Service のクラスター間レプリケーション
Amazon OpenSearch Service のクラスター間レプリケーションを使用すると、1 つの OpenSearch Service ドメインから別のドメインにユーザーインデックス、マッピング、メタデータをレプリケートできます。クラスター間レプリケーションでは、障害発生時の災害対策が保証され、地理的に離れたデータセンター間でデータをレプリケートしてレイテンシーを削減できます。ドメイン間で転送されるデータについて、標準の AWS データ転送料金
クラスター間レプリケーションは、ローカルまたはフォロワーインデクスがリモートまたはリーダーインデックスからデータを取り出すアクティブ/パッシブレプリケーションモデルに従います。リーダーインデックスは、データのソース (データの複製元) のインデックスを意味します。リーダーインデックスは、データのターゲット (データの複製先) のインデックスを意味します。
クラスター間レプリケーションは、Elasticsearch 7.10 または OpenSearch 1.1 以降を実行するドメインで使用できます。
注記
このドキュメントでは、Amazon OpenSearch Service の観点からクラスター間のレプリケーションを設定する方法について説明します。これには、AWS Management Console を使用してクラスター間接続をセットアップすることが含まれます。これは、セルフマネージド OpenSearch クラスターでは不可能です。設定リファレンスと包括的な API リファレンスを含む詳細なドキュメントについては、OpenSearch ドキュメントの「Cross-cluster replication
トピック
制約事項
クラスター間レプリケーションには、次の制約事項があります。
-
Amazon OpenSearch Service ドメインとセルフマネージド OpenSearch クラスターまたは Elasticsearch クラスターの間でデータをレプリケートすることはできません。
-
1 つのフォロワードメインから別のフォロワードメインにインデックスをレプリケートすることはできません。インデックスを複数のフォロワードメインにレプリケートする場合、レプリケートできるのは単一のリーダードメインからのみです。
-
ドメインは、インバウンド接続とアウトバウンド接続の組み合わせを介して最大 20 のその他のドメインに接続できます。
-
クラスター間接続を最初に設定する際には、リーダードメインがフォロワードメインと同じか、またはそれ以降のバージョンである必要があります。
-
AWS CloudFormation を使用してドメインを接続することはできません。
-
M3 インスタンスとバースト可能 (T2 および T3) インスタンスではクラスター間レプリケーションを使用できません。
-
UltraWarm インデックスとコールドインデックス間でデータをレプリケートすることはできません。両方のインデックスがホットストレージにある必要があります。
-
リーダードメインからインデックスを削除してもフォロワードメインの対応するインデックスが自動的に削除されることはありません。
前提条件
クラスター間レプリケーションをセットアップする前に、ドメインが次の要件を満たしていることを確認してください。
-
Elasticsearch 7.10 または OpenSearch 1.1 以降
-
ノード間暗号化が有効
アクセス許可の要件
レプリケーションを開始するには、リモート (リーダー) ドメインの es:ESCrossClusterGet
アクセス許可を含める必要があります。リモートドメイン上で以下の IAM ポリシーが推奨されます。このポリシーでは、ドキュメントのインデックス作成や標準検索の実行など、他のオペレーションも実行できます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/leader-domain/*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/leader-domain" } ] }
es:ESCrossClusterGet
アクセス許可が /leader-domain/*
ではなく /leader-domain
に適用されていることを確認してください。
管理者以外のユーザーがレプリケーションアクティビティを実行するには、適切なアクセス許可にマッピングする必要もあります。ほとんどのアクセス許可は、特定の REST API オペレーションindices:admin/plugins/replication/index/_resume
アクセス許可を使用すると、インデックスのレプリケーションを再開できます。アクセス許可の完全な一覧については、OpenSearch ドキュメントの「Replication permissions
注記
レプリケーションを開始してレプリケーションルールを作成するコマンドは、特殊なケースです。リーダードメインとフォロワードメインでバックグラウンドプロセスが呼び出されるため、リクエストで leader_cluster_role
と follower_cluster_role
を渡す必要があります。OpenSearch Service は、すべてのバックエンドレプリケーションタスクでこれらのロールを使用します。これらのロールのマッピングと使用の詳細については、OpenSearch ドキュメントの「Map the leader and follower cluster roles
クラスター間接続のセットアップ
1 つのドメインから別のドメインにインデックスをレプリケートするには、ドメイン間でクラスター間接続を設定する必要があります。ドメイン間の接続する最も簡単な方法は、ドメインダッシュボードの [接続] タブを使用することです。設定 API または AWS CLI を使用することもできます。クラスター間レプリケーションは「プル」モデルに従うため、フォロワードメインから接続を開始します。
注記
以前にクラスター間検索を実行するために 2 つのドメインを接続したことのある場合、その同じ接続をレプリケーションに使用することはできません。コンソールで、接続は SEARCH_ONLY
とマークされます。以前に接続された 2 つのドメイン間でレプリケーションを実行するには、接続を削除し、再度作成する必要があります。これを実行すれば、クラスター間検索とクラスター間レプリケーションの両方で接続が使用できるようになります。
接続をセットアップするには
-
Amazon OpenSearch Service コンソールで、フォロワードメインを選択し、[接続] タブに移動して [リクエスト] を選択します。
-
[接続エイリアス] に接続の名前を入力します。
-
利用中の AWS アカウント とリージョンのドメインに接続するか、別のアカウントまたは別のリージョンのドメインに接続するかどうかを選択します。
-
おなじAWS アカウントとリージョンに接続するには、ドメインを選択して [リクエスト] を選択します。
-
別の AWS アカウント アカウントまたはリージョンのドメインに接続するには、リモートドメインの ARN を指定して [リクエスト] を選択します。
-
OpenSearch Service が接続リクエストを検証します。ドメインに互換性がない場合、接続は失敗します。正常に完了した検証は承認のために宛先ドメインに送信されます。宛先ドメインでリクエストが承認されたら、レプリケーションを開始できます。
クラスター間レプリケーションは双方向レプリケーションをサポートします。したがって、ドメイン A からドメイン B へのアウトバウンド接続と、ドメイン B からドメイン A への別のアウトバウンド接続を作成できます。その後、ドメイン A がドメイン B のインデックスに従い、ドメイン B がドメイン A のインデックスに従うようにレプリケーションを設定できます。
レプリケーションの開始
クラスター間接続を確立したら、データのレプリケーションを開始できます。まず、レプリケートするインデックスをリーダードメインに作成します。
PUT leader-01
そのインデックスをレプリケートするには、次のコマンドをフォロワードメインに送信します。
PUT _plugins/_replication/follower-01
/_start
{
"leader_alias": "connection-alias
",
"leader_index": "leader-01
",
"use_roles":{
"leader_cluster_role": "all_access
",
"follower_cluster_role": "all_access
"
}
}
接続エイリアスは、ドメインダッシュボードの [接続] タブで確認できます。
この例では、管理者がリクエストを発行していると仮定し、説明を簡単にするために all_access
を leader_cluster_role
と follower_cluster_role
に使用します。ただし、本番環境では、リーダーインデックスとフォロワーインデックスの両方でレプリケーションユーザーを作成してマッピングすることをお勧めします。ユーザー名は同一である必要があります。これらのロールのマッピング方法の詳細については、OpenSearch ドキュメントの「Map the leader and follower cluster roles
レプリケーションの確認
レプリケーションが行われていることを確認するには、レプリケーションステータスを取得します。
GET _plugins/_replication/follower-01
/_status
{
"status" : "SYNCING",
"reason" : "User initiated",
"leader_alias" : "connection-alias",
"leader_index" : "leader-01",
"follower_index" : "follower-01",
"syncing_details" : {
"leader_checkpoint" : -5,
"follower_checkpoint" : -5,
"seq_no" : 0
}
}
リーダーとフォロワーのチェックポイントの値は負の整数で始まり、ユーザーが持っているシャードの数を反映します (1 つのシャードの場合は -1、5 つのシャードの場合は -5 など)。変更を加えるたびに、値は正の整数で増加します。2 つの値が同じ場合、インデックスが完全に同期されていることを意味します。これらのチェックポイント値を使用して、ドメイン間のレプリケーションのレイテンシーを測定できます。
レプリケーションをさらに検証するには、リーダーインデックスにドキュメントを追加します。
PUT leader-01
/_doc/1
{
"Doctor Sleep":"Stephen King"
}
そして、それがフォロワーインデックスに表示されることを確認します。
GET follower-01
/_search
{
...
"max_score" : 1.0,
"hits" : [
{
"_index" : "follower-01",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"Doctor Sleep" : "Stephen King"
}
}
]
}
}
レプリケーションの一時停止と再開
問題を修復する場合や、リーダードメインの負荷を削減する必要がある場合は、レプリケーションを一時的に一時停止できます。次のリクエストをフォロワードメインに送信します。空のリクエストボディを含めてください。
POST _plugins/_replication/follower-01
/_pause
{}
次に、ステータスを取得して、レプリケーションが一時停止していることを確認します。
GET _plugins/_replication/follower-01
/_status
{
"status" : "PAUSED",
"reason" : "User initiated",
"leader_alias" : "connection-alias",
"leader_index" : "leader-01",
"follower_index" : "follower-01"
}
変更作業が完了したら、レプリケーションを再開します。次のリクエストをフォロワードメインに送信します。空のリクエストボディを含めてください。
POST _plugins/_replication/follower-01
/_resume
{}
12 時間以上一時停止してからレプリケーションを再開することはできません。レプリケーションを停止し、フォロワーインデックスを削除し、リーダーのレプリケーションを再開する必要があります。
レプリケーションの開始
レプリケーションを完全に停止すると、フォロワーインデックスはリーダーのフォローを解除し、標準インデックスになります。停止したレプリケーションを再開することはできません。
フォロアードメインからレプリケーションを停止します。空のリクエストボディを含めてください。
POST _plugins/_replication/follower-01
/_stop
{}
自動フォロー
指定したパターンに一致するインデックスを自動的にレプリケートする 1 つのリーダードメインに対して、レプリケーションルールのセットを定義できます。リーダードメイン上のインデックスがパターンの 1 つ (books*
など) に一致すると、一致するフォロワーインデックスがフォロワードメインに作成されます。OpenSearch Service は、パターンに一致する既存のインデックスに加えて、ユーザーが作成した新しいインデックスを複製します。フォロワードメインにすでに存在するインデックスはレプリケートされません。
すべてのインデックス (システムによって作成されたインデックスおよびフォロワードメインに既に存在するインデックスを除く) をレプリケートするには、ワイルドカード (*
) パターンを使用します。
レプリケーションルールの作成
フォロアードメインにレプリケーションルールを作成し、クラスター間接続の名前を指定します。
POST _plugins/_replication/_autofollow
{
"leader_alias" : "connection-alias
",
"name": "rule-name
",
"pattern": "books*
",
"use_roles":{
"leader_cluster_role": "all_access
",
"follower_cluster_role": "all_access
"
}
}
接続エイリアスは、ドメインダッシュボードの [接続] タブで確認できます。
この例では、管理者がリクエストを発行していると仮定し、説明を簡単にするために all_access
をリーダードメインルールとフォロワードメインルールとして使用します。ただし、本番環境では、リーダーインデックスとフォロワーインデックスの両方でレプリケーションユーザーを作成してマッピングすることをお勧めします。ユーザー名は同一である必要があります。これらのロールのマッピング方法の詳細については、OpenSearch ドキュメントの「Map the leader and follower cluster roles
ドメイン上の既存のレプリケーションルールのリストを取得するには、auto-follow stats API オペレーション
ルールをテストするには、リーダードメインのパターンに一致するインデックスを作成します。
PUT books-are-fun
そして、そのレプリカがフォロアードメインに表示されていることを確認します。
GET _cat/indices
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open books-are-fun ldfHO78xYYdxRMULuiTvSQ 1 1 0 0 208b 208b
レプリケーションルールの削除
レプリケーションルールを削除すると、OpenSearch Service は、パターンに一致する新規インデックスのレプリケーションを停止しますが、ユーザーがレプリケーションを停止するまで、既存のレプリケーションアクティビティは継続します。
フォロアードメインからレプリケーションルールを削除します。
DELETE _plugins/_replication/_autofollow
{
"leader_alias" : "connection-alias
",
"name": "rule-name
"
}
接続されたドメインのアップグレード
クラスター間接続が可能な 2 つのドメインのエンジンバージョンをアップグレードするには、まずフォロワードメインをアップグレードしてから、リーダードメインをアップグレードします。それらの間の接続を削除しないでください。削除すると、レプリケーションが一時停止し、再開できなくなります。