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 エンタープライズ版の Transit Router では、VPC に異なるアベイラビリティーゾーンの少なくとも 2 つの VSwitch が必要です。VPC に VSwitch が 1 つしかない場合は、別のアベイラビリティーゾーンに別の VSwitch を作成して、VPC を Transit Router にアタッチする必要があります。
ステップ 2: リーダー クラスターのプライベート IP の取得
-
Alibaba Cloud Elasticsearch コンソールにログインします。
-
リーダー クラスターの 基本情報 ページで、内部エンドポイント フィールドを見つけ、プライベート ドメイン名をコピーします。
-
同じ VPC 内の ECS インスタンスから、次のコマンドを実行してリーダー クラスターのプライベート IP を解決します:
ping <リーダー クラスターのプライベートドメイン名>解決された IP アドレスを後で使用するために記録しておきます。
ステップ 3: NLB インスタンスとサーバーグループの作成
フォロワー クラスターの VPC に NLB インスタンスを作成し、リーダー クラスターにトラフィックを転送します。
NLB インスタンスとサーバーグループを作成する前に、フォロワー クラスターが配置されているリージョンに切り替えていることを確認してください。NLB インスタンスはフォロワー クラスターと同じリージョンにある必要があります。そうでない場合、エンドポイントサービスを作成できません。
-
Network Load Balancer (NLB) コンソールにログインします。
-
サーバーグループを作成します。
-
左側のナビゲーションペインで、ServerGroup をクリックします。
-
[サーバーグループの作成] をクリックし、以下のパラメーターを設定します:
パラメーター
説明
[サーバーグループのタイプ]
IPタイプ を選択します。
[転送ポート]
[全ポート転送] を有効にします。
[ヘルスチェック]
ポートには 9300 を入力します。
-
作成したサーバーグループで、[バックエンドサーバーの追加] をクリックします。 ステップ 2 で取得したリーダークラスターのプライベート IP を追加します。 ポート設定はデフォルトのままにします。
-
-
NLB インスタンスとリスナーを作成します。
NLB の購入ページでは、リスナー設定時に全ポート機能がサポートされていません。まずリスナーを設定せずに NLB インスタンスを作成し、その後、インスタンス詳細ページでリスナーを作成する際に全ポート機能を有効にします。
すでに NLB インスタンスがある場合は、直接リスナーを作成できます。インスタンスがない場合は、まず NLB インスタンスを作成します。
-
左側のナビゲーションペインで、インスタンス をクリックし、NLB インスタンスを選択または作成します。
-
インスタンス詳細ページに移動し、Listener タブをクリックし、次に [リスナーの作成] をクリックします。
-
[全ポート]機能を有効にし、リスナーポート範囲を [9200-9300] に設定します。
-
ServerGroup には、IPタイプ と前の手順で作成したサーバーグループを選択します。
-
ステップ 4: PrivateLink の設定
PrivateLink を使用して、フォロワー クラスターの管理 VPC をリーダー クラスターのネットワークに接続します。
-
PrivateLink コンソールにログインします。
-
エンドポイントサービスを作成します。
-
左側のナビゲーションペインで、エンドポイントサービス をクリックします。
-
エンドポイントサービスの作成 をクリックし、次のパラメーターを設定します:
パラメーター
説明
[サービスリソースタイプ]
[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 の左側のナビゲーションペインで、[スタック管理] をクリックします。
[データ] セクションで、[リモートクラスター] をクリックします。
[リモートクラスターの追加] をクリックし、次のパラメーターを設定します:
パラメータ
説明
[名前]
リーダー クラスターのインスタンス ID を入力します。
[プロキシモード]
プロキシモードを有効にします。
[プロキシアドレス]
フォロワー クラスターのプライベート接続を設定したときに取得した PrivateLink エンドポイントドメイン名を、
<domain-name>:9300の形式で入力します。 ドメイン名は、フォロワー クラスター インスタンスの [セキュリティ] ページの [プライベート接続の設定] の下に表示されます。保存 をクリックし、接続ステータスが [接続済み] であることを確認します。
CCR レプリケーションモードを設定します。
CCR は 2 つのモードをサポートしています。
モード
説明
フォロワーインデックス
単一の指定されたインデックスをレプリケートします。
自動フォローパターン
指定された名前パターンに一致するインデックスを自動的にレプリケートします。このモードは、一括同期に適しています。
自動フォローパターンを作成すると、リーダー クラスターで作成された新しいインデックスは自動的にフォロワー クラスターに同期されます。既存のインデックスは自動的に同期されません。既存のインデックスを同期するには、フォロワー クラスターでフォロワーインデックスを手動で作成する必要があります。
次の例では、自動フォローパターンを使用します。
[スタック管理] で、[クラスター間レプリケーション] をクリックします。
[自動フォローパターン] タブを選択し、[自動フォローパターンの作成] をクリックします。
[リモートクラスター] には、前の手順で追加したリモートクラスターを選択します。 [インデックスパターン] には、すべてのインデックスをレプリケートする場合は
*を、特定のインデックスのみをレプリケートする場合はlogs-*などのインデックス名パターンを入力します。[作成] をクリックします。
ステップ 6: データ同期の検証
既存インデックスの同期検証
自動フォローパターンを作成する前にリーダー クラスターにすでにインデックスが存在する場合、それらのインデックスは自動的にレプリケートされません。フォロワー クラスターの Kibana コンソールで [スタック管理] > [クロス クラスター レプリケーション] > [フォロワーインデックス] に移動して、手動でフォロワーインデックスを作成する必要があります。
フォロワーインデックスを作成した後、フォロワー クラスターの 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 ブロックが含まれていることを確認してください。クロスリージョンシナリオでは、NLB が CEN 経由でヘルスチェックとデータトラフィックをリーダー クラスターに転送する際、送信元 IP アドレスは NLB の VPC から発信されます。リーダー クラスターの許可リストにこれらの IP アドレスが含まれていない場合、NLB ヘルスチェックと接続が失敗します。
CEN にクロスリージョン帯域幅が割り当てられており、2 つの VPC 間のネットワーク接続が確立されていることを確認してください。
NLB リスナーポート範囲に 9200-9300 が含まれていることを確認してください。
サーバーグループ内のリーダー クラスターのプライベート IP アドレスが正しいことを確認してください。
サーバーグループのヘルスチェックポートが 9300 であることを確認してください。
PrivateLink エンドポイントサービスの接続ステータスが「接続済み」であることを確認してください。
クロスリージョン CCR のレイテンシーは高くなりますか。
クロスリージョン CCR の同期レイテンシーは、クロスリージョンネットワークレイテンシーの影響を受けます。通常、同一リージョンシナリオよりもわずかに高くなりますが、通常は数秒の範囲内に収まります。実際のレイテンシーは、CEN 帯域幅の設定、データ量、ネットワーク状況によって異なります。ビジネス要件に基づいて CEN クロスリージョン帯域幅を設定してください。
CCR のバージョン要件は何ですか。
フォロワー クラスターのバージョンは、リーダー クラスターのバージョンと同じか、それ以降である必要があります。両方のクラスターは、バージョン 7.10.0 以降であり、新しいクラウドネイティブ管理およびデプロイモード (v3) を使用している必要があります。