

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon OpenSearch Service のクラスター間レプリケーション
<a name="replication"></a>

Amazon OpenSearch Service のクラスター間レプリケーションを使用すると、1 つの OpenSearch Service ドメインから別のドメインにユーザーインデックス、マッピング、メタデータをレプリケートできます。クラスター間レプリケーションでは、障害発生時の災害対策が保証され、地理的に離れたデータセンター間でデータをレプリケートしてレイテンシーを削減できます。ドメイン間で転送されるデータには、[標準のデータ転送 AWS 料金](https://aws.amazon.com/opensearch-service/pricing/)がかかります。

クラスター間レプリケーションは、*ローカル*または*フォロワー*インデクスが*リモート*または*リーダー*インデックスからデータを取り出すアクティブ/パッシブレプリケーションモデルに従います。リーダーインデックスは、データのソース (データの複製元) のインデックスを意味します。リーダーインデックスは、データのターゲット (データの複製先) のインデックスを意味します。

クラスター間レプリケーションは、Elasticsearch 7.10 または OpenSearch 1.1 以降を実行するドメインで使用できます。

**注記**  
このドキュメントでは、Amazon OpenSearch Service の観点からクラスター間のレプリケーションを設定する方法について説明します。これには、 を使用してクラスター間接続 AWS マネジメントコンソール を設定することが含まれます。これは、セルフマネージド OpenSearch クラスターでは不可能です。設定リファレンスと包括的な API リファレンスを含む詳細なドキュメントについては、OpenSearch ドキュメントの「[Cross-cluster replication](https://docs.opensearch.org/latest/tuning-your-cluster/replication-plugin/index/)」を参照してください。

**Topics**
+ [制限事項](#replication-limitations)
+ [前提条件](#replication-prereqs)
+ [アクセス許可の要件](#replication-permissions)
+ [クラスター間接続のセットアップ](#replication-connect)
+ [レプリケーションの開始](#replication-start)
+ [レプリケーションの確認](#replication-confirm)
+ [レプリケーションの一時停止と再開](#replication-pause-resume)
+ [レプリケーションの開始](#replication-stop)
+ [自動フォロー](#replication-autofollow)
+ [接続されたドメインのアップグレード](#replication-upgrade)

## 制限事項
<a name="replication-limitations"></a>

クラスター間レプリケーションには、次の制約事項があります。
+ Amazon OpenSearch Service ドメインとセルフマネージド OpenSearch クラスターまたは Elasticsearch クラスターの間でデータをレプリケートすることはできません。
+ 1 つのフォロワードメインから別のフォロワードメインにインデックスをレプリケートすることはできません。インデックスを複数のフォロワードメインにレプリケートする場合、レプリケートできるのは単一のリーダードメインからのみです。
+ ドメインは、インバウンド接続とアウトバウンド接続の組み合わせを介して最大 20 のその他のドメインに接続できます。
+ クラスター間接続を最初に設定する際には、リーダードメインがフォロワードメインと同じか、またはそれ以降のバージョンである必要があります。
+ を使用してドメイン CloudFormation を接続することはできません。
+ M3 インスタンスとバースト可能 (T2 および T3) インスタンスではクラスター間レプリケーションを使用できません。
+ UltraWarm インデックスとコールドインデックス間でデータをレプリケートすることはできません。両方のインデックスがホットストレージにある必要があります。
+ リーダードメインからインデックスを削除してもフォロワードメインの対応するインデックスが自動的に削除されることはありません。
+ クラスター間のレプリケーションは、デフォルト と[オプトイン ](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)の間ではサポートされていません。両方のドメインは、デフォルトのリージョンまたはオプトインリージョンにある必要があります。

## 前提条件
<a name="replication-prereqs"></a>

クラスター間レプリケーションをセットアップする前に、ドメインが次の要件を満たしていることを確認してください。
+ Elasticsearch 7.10 または OpenSearch 1.1 以降
+ [Fine-grained access control](fgac.md)が有効
+ [ノード間暗号化](ntn.md)が有効
+ リーダーインデックスは を `index.soft_deletes.enabled`に設定する必要があります`true`。Elasticsearch 7.0 または OpenSearch 1.0 以降で作成されたインデックスでは、この設定がデフォルトで有効になっています。ただし、Elasticsearch 6.x で作成されてアップグレードされたインデックスは を保持します`soft_deletes=false`。このようなインデックスをレプリケートするには、まずインデックスを再作成する必要があります。

  インデックスでソフト削除が有効になっているかどうかを確認するには:

  ```
  GET <index-name>/_settings?include_defaults=true&flat_settings=true&filter_path=*.settings.index.soft_deletes.enabled
  ```

  `soft_deletes` が の場合`false`、レプリケーションを開始する前にデータを新しいインデックスに再インデックスします。

## アクセス許可の要件
<a name="replication-permissions"></a>

レプリケーションを開始するには、リモート (リーダー) ドメインの `es:ESCrossClusterGet` アクセス許可を含める必要があります。リモートドメイン上で以下の IAM ポリシーが推奨されます。このポリシーでは、ドキュメントのインデックス作成や標準検索の実行など、他のオペレーションも実行できます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/leader-domain/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:ESCrossClusterGet",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/leader-domain"
    }
  ]
}
```

------

`es:ESCrossClusterGet` アクセス許可が `/leader-domain/*` ではなく `/leader-domain` に適用されていることを確認してください。

管理者以外のユーザーがレプリケーションアクティビティを実行するには、適切なアクセス許可にマッピングする必要もあります。ほとんどのアクセス許可は、特定の [REST API オペレーション](https://docs.opensearch.org/latest/tuning-your-cluster/replication-plugin/api/)に対応します。例えば、`indices:admin/plugins/replication/index/_resume` アクセス許可を使用すると、インデックスのレプリケーションを再開できます。アクセス許可の完全な一覧については、OpenSearch ドキュメントの「[Replication permissions](https://docs.opensearch.org/latest/tuning-your-cluster/replication-plugin/permissions/#replication-permissions)」を参照してください。

**注記**  
レプリケーションを開始してレプリケーションルールを作成するコマンドは、特殊なケースです。リーダードメインとフォロワードメインでバックグラウンドプロセスが呼び出されるため、リクエストで `leader_cluster_role` と `follower_cluster_role` を渡す必要があります。OpenSearch Service は、すべてのバックエンドレプリケーションタスクでこれらのロールを使用します。これらのロールのマッピングと使用の詳細については、OpenSearch ドキュメントの「[Map the leader and follower cluster roles](https://docs.opensearch.org/latest/tuning-your-cluster/replication-plugin/permissions/#map-the-leader-and-follower-cluster-roles)」を参照してください。

## クラスター間接続のセットアップ
<a name="replication-connect"></a>

1 つのドメインから別のドメインにインデックスをレプリケートするには、ドメイン間でクラスター間接続を設定する必要があります。ドメイン間の接続する最も簡単な方法は、ドメインダッシュボードの [**接続**] タブを使用することです。[設定 API](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/Welcome.html) または [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-outbound-connection.html) を使用することもできます。クラスター間レプリケーションは「プル」モデルに従うため、フォロワードメインから接続を開始します。

**注記**  
以前に[クラスター間検索](cross-cluster-search.md)を実行するために 2 つのドメインを接続したことのある場合、その同じ接続をレプリケーションに使用することはできません。コンソールで、接続は `SEARCH_ONLY` とマークされます。以前に接続された 2 つのドメイン間でレプリケーションを実行するには、接続を削除し、再度作成する必要があります。これを実行すれば、クラスター間検索とクラスター間レプリケーションの両方で接続が使用できるようになります。

**接続をセットアップするには**

1. Amazon OpenSearch Service コンソールで、フォロワードメインを選択し、[**接続**] タブに移動して [**リクエスト**] を選択します。

1. [**接続エイリアス**] に接続の名前を入力します。

1.  AWS アカウント と リージョンのドメインに接続するか、別のアカウントまたはリージョンに接続するかを選択します。
   +  AWS アカウント および リージョンのドメインに接続するには、ドメインを選択し、**リクエスト**を選択します。
   + 別の AWS アカウント またはリージョンのドメインに接続するには、リモートドメインの ARN を指定し、**リクエスト**を選択します。

OpenSearch Service が接続リクエストを検証します。ドメインに互換性がない場合、接続は失敗します。正常に完了した検証は承認のために宛先ドメインに送信されます。宛先ドメインでリクエストが承認されたら、レプリケーションを開始できます。

クラスター間レプリケーションは双方向レプリケーションをサポートします。したがって、ドメイン A からドメイン B へのアウトバウンド接続と、ドメイン B からドメイン A への別のアウトバウンド接続を作成できます。その後、ドメイン A がドメイン B のインデックスに従い、ドメイン B がドメイン A のインデックスに従うようにレプリケーションを設定できます。

## レプリケーションの開始
<a name="replication-start"></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](https://docs.opensearch.org/latest/tuning-your-cluster/replication-plugin/permissions/#map-the-leader-and-follower-cluster-roles)」を参照してください。

## レプリケーションの確認
<a name="replication-confirm"></a>

レプリケーションが行われていることを確認するには、レプリケーションステータスを取得します。

```
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"
        }
      }
    ]
  }
}
```

## レプリケーションの一時停止と再開
<a name="replication-pause-resume"></a>

問題を修復する場合や、リーダードメインの負荷を削減する必要がある場合は、レプリケーションを一時的に一時停止できます。次のリクエストをフォロワードメインに送信します。空のリクエストボディを含めてください。

```
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 時間以上一時停止してからレプリケーションを再開することはできません。レプリケーションを停止し、フォロワーインデックスを削除し、リーダーのレプリケーションを再開する必要があります。

## レプリケーションの開始
<a name="replication-stop"></a>

レプリケーションを完全に停止すると、フォロワーインデックスはリーダーのフォローを解除し、標準インデックスになります。停止したレプリケーションを再開することはできません。

フォロアードメインからレプリケーションを停止します。空のリクエストボディを含めてください。

```
POST _plugins/_replication/follower-01/_stop
{}
```

## 自動フォロー
<a name="replication-autofollow"></a>

指定したパターンに一致するインデックスを自動的にレプリケートする 1 つのリーダードメインに対して、レプリケーションルールのセットを定義できます。リーダードメイン上のインデックスがパターンの 1 つ (`books*` など) に一致すると、一致するフォロワーインデックスがフォロワードメインに作成されます。OpenSearch Service は、パターンに一致する既存のインデックスに加えて、ユーザーが作成した新しいインデックスを複製します。フォロワードメインにすでに存在するインデックスはレプリケートされません。

すべてのインデックス (システムによって作成されたインデックスおよびフォロワードメインに既に存在するインデックスを除く) をレプリケートするには、ワイルドカード (`*`) パターンを使用します。

### レプリケーションルールの作成
<a name="replication-rule-create"></a>

フォロアードメインにレプリケーションルールを作成し、クラスター間接続の名前を指定します。

```
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](https://docs.opensearch.org/latest/tuning-your-cluster/replication-plugin/permissions/#map-the-leader-and-follower-cluster-roles)」を参照してください。

ドメイン上の既存のレプリケーションルールのリストを取得するには、[auto-follow stats API オペレーション](https://docs.opensearch.org/latest/tuning-your-cluster/replication-plugin/api/#get-auto-follow-stats)を使用します。

ルールをテストするには、リーダードメインのパターンに一致するインデックスを作成します。

```
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
```

### レプリケーションルールの削除
<a name="replication-rule-delete"></a>

レプリケーションルールを削除すると、OpenSearch Service は、パターンに一致する*新規*インデックスのレプリケーションを停止しますが、ユーザーが[レプリケーションを停止](#replication-stop)するまで、既存のレプリケーションアクティビティは継続します。

フォロアードメインからレプリケーションルールを削除します。

```
DELETE _plugins/_replication/_autofollow
{
   "leader_alias" : "connection-alias",
   "name": "rule-name"
}
```

## 接続されたドメインのアップグレード
<a name="replication-upgrade"></a>

クラスター間接続が可能な 2 つのドメインのエンジンバージョンをアップグレードするには、まずフォロワードメインをアップグレードしてから、リーダードメインをアップグレードします。それらの間の接続を削除しないでください。削除すると、レプリケーションが一時停止し、再開できなくなります。