Cloud Enterprise Network (CEN)、Network Load Balancer (NLB)、PrivateLink を使用して 2 つの Elasticsearch クラスター間にリージョン間プライベート接続を確立します。その後、クロスクラスターレプリケーション (CCR) を設定し、リージョン間ディザスタリカバリのためにインデックスデータをほぼリアルタイムで同期します。
前提条件
-
中国 (上海) や中国 (杭州) など、異なるリージョンに 2 つの Elasticsearch インスタンスを作成し、リーダー クラスターとフォロワー クラスターとして使用します。インスタンスの作成方法の詳細については、「Alibaba Cloud Elasticsearch インスタンスの作成」をご参照ください。
-
両方のクラスターが新しいクラウドネイティブ管理およびデプロイモード (v3) を使用している必要があります。クラスターが v1 または v2 のアーキテクチャを使用している場合は、まずアップグレードする必要があります。詳細については、「インスタンスのアーキテクチャのアップグレード」をご参照ください。
-
両方のクラスターがバージョン 7.10.0 以降を実行しており、フォロワー クラスターのバージョンはリーダー クラスターと同じか、それ以降である必要があります。
ソリューション概要
Alibaba Cloud Elasticsearch インスタンスは、ユーザーの VPC ではなく、専用の管理 VPC にデプロイされます。CEN を使用して 2 つのリージョンのユーザー VPC を接続しても、クラスター間でプライベートネットワーク経由で直接通信することはできません。プライベート接続を有効にするには、CEN の上に NLB と PrivateLink を使用して、2 つのクラスターの管理 VPC をブリッジする必要があります。
-
CEN を使用して、リーダー クラスターとフォロワー クラスターの VPC 間にリージョン間接続を確立します。
-
フォロワー クラスターの VPC で NLB を作成し、IP タイプのサーバーグループを使用して、リージョン間でリーダー クラスターのプライベート IP アドレスにトラフィックを転送します。
-
NLB に基づいて PrivateLink エンドポイントサービスを作成します。
-
フォロワー クラスターの Elasticsearch コンソールで、プライベート接続を設定して PrivateLink ドメイン名を取得します。
-
フォロワー クラスターの Kibana で、リモートクラスターを追加し、CCR を設定します。
操作手順
ステップ 1:CEN でリージョン間 VPC を接続
Cloud Enterprise Network (CEN) を使用して、リーダー クラスターとフォロワー クラスターの VPC 間にリージョン間接続を確立します。詳細な手順については、「異なるリージョンの VPC を接続」をご参照ください。
CEN Enterprise Edition のトランジットルーターでは、VPC に異なるアベイラビリティーゾーンに少なくとも 2 つの vSwitch が必要です。VPC に vSwitch が 1 つしかない場合は、別のアベイラビリティーゾーンにもう 1 つ作成して、VPC をトランジットルーターにアタッチする必要があります。
ステップ 2:リーダー クラスターのプライベート IP の取得
-
Alibaba Cloud Elasticsearch コンソールにログインします。
-
リーダー クラスターの 基本情報 ページで、内部エンドポイント フィールドを探してプライベート ドメイン名をコピーします。
-
同じ VPC 内の ECS インスタンスから、以下のコマンドを実行してリーダー クラスターのプライベート IP アドレスを解決します。
ping <リーダー クラスターのプライベートドメイン名>解決された IP アドレスを記録し、後で使用します。
ステップ 3:NLB とサーバーグループの作成
フォロワー クラスターの VPC 内に NLB インスタンスを作成し、リーダー クラスターにトラフィックを転送します。
NLB インスタンスとサーバーグループを作成する前に、フォロワー クラスターが配置されているリージョンに切り替えてください。PrivateLink エンドポイントサービスを作成するため、NLB インスタンスはフォロワー クラスターと同じリージョンに配置する必要があります。
-
Network Load Balancer (NLB) コンソールにログインします。
-
サーバーグループを作成します。
-
左側のナビゲーションペインで、ServerGroup をクリックします。
-
サーバーグループの作成 をクリックし、以下のパラメーターを設定します:
パラメータ
説明
[サーバーグループのタイプ]
IPタイプ を選択します。
[転送ポート]
フルポート転送 を有効にします。
[ヘルスチェック]
ポートを 9300 に設定します。
-
作成したサーバーグループで、バックエンドサーバーの追加 をクリックします。 ステップ 2 で取得したリーダークラスターのプライベート IP アドレスを追加し、ポートはデフォルトのままにします。
-
-
NLB インスタンスとリスナーを作成します。
NLB 購入ページでは、全ポート機能を持つリスナーの作成はサポートされていません。そのため、まずリスナーなしで NLB インスタンスを作成します。次に、インスタンスの詳細ページでリスナーを作成し、全ポート機能を有効にします。
すでに NLB インスタンスをお持ちの場合は、直接リスナーを作成できます。お持ちでない場合は、まず NLB インスタンスを作成する必要があります。
-
左側のナビゲーションペインで、インスタンス をクリックし、NLB インスタンスを選択または作成します。
-
インスタンス詳細ページに移動し、Listener タブをクリックし、次に リスナーの作成 をクリックします。
-
[Full-port] 機能を有効にし、リスナーポート範囲を [9200-9300] に設定します。
-
ServerGroup には、IPタイプ と前の手順で作成したサーバーグループを選択します。
-
ステップ 4:PrivateLink の構成
PrivateLink を使用して、フォロワー クラスターのマネージド VPC からリーダー クラスターへのネットワーク接続を確立します。
-
[PrivateLink コンソール]にログインします。
-
エンドポイントサービスを作成します。
-
左側のナビゲーションペインで、エンドポイントサービス をクリックします。
-
エンドポイントサービスの作成 をクリックして、次のパラメーターを設定します。
パラメータ
説明
[Service Resource Type]
[NLB] を選択します。
[サービスリソース]
ステップ 3 で作成または使用した NLB インスタンスを選択します。
[Zone]
NLB インスタンスが配置されているアベイラビリティーゾーンを選択します。
[エンドポイント接続を自動で許可]
はい を選択します。
-
-
フォロワー クラスターにプライベート接続を追加します。
-
Alibaba Cloud Elasticsearch コンソールにログオンし、フォロワークラスターのインスタンス詳細ページに移動します。
-
左側のナビゲーションペインで、設定と管理 > セキュリティ設定 を選択します。
-
クラスターネットワーク設定 セクションで、プライベート接続の設定をクリックします。
-
プライベート接続の追加 をクリックし、前のステップで作成したエンドポイントサービスを選択します。
-
接続ステータスが 接続済み に変わるまでお待ちください。
-
-
PrivateLink ドメイン名を取得します。
接続が確立されたら、PrivateLink コンソールに戻ります。 エンドポイントサービスの エンドポイントの接続ステータス タブで、自動的に作成されたエンドポイント接続を表示します。 これは、リモートクラスターを設定するために使用する PrivateLink ドメイン名です。
ステップ 5:クロスクラスターレプリケーション (CCR) を設定
リモートクラスターを設定する前に、リーダー Elasticsearch クラスターのプライベートアクセス許可リストに NLB の VPC の CIDR ブロックが含まれていることを確認してください。リージョン間セットアップでは、NLB は CEN 経由でヘルスチェックとデータトラフィックを転送するため、送信元 IP アドレスは NLB の VPC から発信されます。リーダー クラスターの許可リストにこれらの IP アドレスが含まれていない場合、NLB のヘルスチェックとリモートクラスター接続の両方が失敗します。許可リストの設定方法については、「クラスターの IP 許可リストの設定」をご参照ください。
-
フォロワー クラスターの Kibana にログインします。詳細な手順については、「インターネット経由で Kibana コンソールにログイン (v2/v3 デプロイアーキテクチャ)」をご参照ください。
フォロワー クラスターのインスタンス詳細ページで、左側のナビゲーションペインにあるデータ可視化をクリックし、次に[Kibana へ移動]をクリックします。
-
リモートクラスターを追加します。
-
Kibana の左側のナビゲーションペインで、[スタック管理] をクリックします。
-
[データ] セクションで、[リモートクラスター] をクリックします。
-
[リモートクラスターを追加] をクリックして、次のパラメーターを設定します。
パラメータ
説明
[name]
リーダー クラスターのインスタンス ID を入力します。
[プロキシモード]
プロキシモードを有効にします。
[プロキシアドレス]
フォロワークラスターのプライベート接続を設定したときに取得した PrivateLink エンドポイントドメイン名を、
<domain-name>:9300の形式で入力します。ドメイン名は、フォロワークラスターインスタンスの [セキュリティ] ページの [プライベート接続の構成] の下に表示されます。 -
保存 をクリックし、接続ステータスが [接続済み] であることを確認します。
-
-
CCR レプリケーションモードを設定します。
CCR は 2 つのモードをサポートしています。
モード
説明
フォロワーインデックス
指定された単一のインデックスをレプリケートします。
自動フォローパターン
指定された名前パターンに一致するインデックスを自動的にレプリケートします。このモードは一括同期に適しています。
自動フォローパターンを作成した後、リーダー クラスターで作成された新しいインデックスは自動的にフォロワー クラスターに同期されます。既存のインデックスは自動的には同期されません。既存のインデックスを同期するには、フォロワー クラスターでフォロワーインデックスを手動で作成する必要があります。
次の例では、自動フォローパターンを使用します。
-
[スタック管理] で、[クラスター間レプリケーション] をクリックします。
-
[オートフォローパターン] タブを選択し、[オートフォローパターンの作成] をクリックします。
-
[リモートクラスター] には、前の手順で追加したリモートクラスターを選択します。 [インデックスパターン] には、すべてのインデックスをレプリケートする場合は
*を、特定のインデックスのみをレプリケートする場合はlogs-*などのインデックス名パターンを入力します。 -
[作成] をクリックします。
-
ステップ 6:データ同期の検証
既存のインデックスの同期を検証
自動フォローパターンを作成する前にリーダー クラスターに存在していたインデックスは、自動的にレプリケートされません。フォロワー クラスターの Kibana で、[Stack Management] > [Cross-Cluster Replication] > [Follower indices] に移動して、フォロワーインデックスを手動で作成する必要があります。
フォロワーインデックスを作成した後、フォロワー クラスターの Kibana で以下のコマンドを実行して、データが同期されていることを確認します。
GET /<index_name>/_search
返された結果がリーダー クラスターの結果と一致していれば、既存のデータは同期されています。
新しいデータの同期を検証
-
リーダー クラスターの Kibana で、新しいインデックスを作成し、ドキュメントを書き込みます。
PUT /test-increment-index POST /test-increment-index/_doc { "title": "increment test", "content": "This is a test document for CCR incremental sync." } -
フォロワー クラスターの Kibana で、インデックスをクエリします。
GET /test-increment-index/_search返されたドキュメントがソースドキュメントと一致していれば、リアルタイム同期は成功しています。
よくある質問
リモートクラスターが接続されないのはなぜですか?
次の点を確認してください。
-
リーダー Elasticsearch クラスターのプライベートアクセス許可リストに、NLB が存在する VPC の CIDR ブロックが含まれていること。リージョン間の設定では、ヘルスチェックとデータトラフィックは CEN を経由して転送されるため、リーダー クラスターから認識される送信元 IP アドレスは NLB の VPC のものになります。この CIDR ブロックが許可リストにないと、接続は失敗します。
-
CEN のリージョン間帯域幅が割り当てられており、2 つの VPC 間のネットワーク接続が確立されていること。
-
NLB リスナーのポート範囲に 9200-9300 が含まれていること。
-
サーバーグループ内のリーダー クラスターのプライベート IP アドレスが正しいこと。
-
サーバーグループのヘルスチェックポートが 9300 であること。
-
PrivateLink エンドポイントサービスの接続ステータスが「接続済み」であること。
リージョン間 CCR のレイテンシーは高くなりますか?
リージョン間 CCR 同期のレイテンシーは、リージョン間のネットワークレイテンシーの影響を受けます。通常、同一リージョンのシナリオよりもわずかに高くなりますが、多くの場合、数秒以内に収まります。実際のレイテンシーは、CEN の帯域幅設定、データ量、ネットワーク状況によって異なります。ビジネス要件に基づいて CEN のリージョン間帯域幅を設定してください。
CCR のバージョン要件は何ですか?
フォロワー クラスターのバージョンは、リーダー クラスターと同じか、それ以降である必要があります。両方のクラスターがバージョン 7.10.0 以降であり、新しいクラウドネイティブ管理およびデプロイモード (v3) を使用している必要があります。