Network Load Balancer (NLB) および PrivateLink を使用して、同一リージョン内の 2 つの Alibaba Cloud Elasticsearch クラスター間でプライベートネットワーク接続を確立します。その後、クラスター間レプリケーション (CCR) を設定し、インデックスデータをニアリアルタイムで同期することで、同一リージョン内におけるディザスタリカバリおよび読み書き分離を実現します。
前提条件
中国 (杭州) などの同一リージョン内で、2 つの Alibaba Cloud Elasticsearch インスタンスを作成済みである必要があります。一方のインスタンスをリーダークラスター、もう一方をフォロワークラスターとして使用します。インスタンスの作成方法については、「Alibaba Cloud Elasticsearch インスタンスの作成」をご参照ください。
両クラスターがクラウドネイティブ管理アーキテクチャ (v3) を使用している必要があります。v1 または v2 アーキテクチャを使用している場合は、事前にアーキテクチャのスペックアップを実行する必要があります。詳細については、「インスタンスのアーキテクチャのスペックアップ」をご参照ください。
両クラスターのバージョンが 7.10.0 以降である必要があります。また、フォロワークラスターのバージョンは、リーダークラスターのバージョンと同一か、それより新しい必要があります。
ソリューションの概要
Alibaba Cloud Elasticsearch インスタンスは、お客様のユーザ VPC ではなく、専用の管理 VPC にデプロイされます。たとえ Cloud Enterprise Network (CEN) を使用して同一リージョン内の異なるユーザ VPC を接続したとしても、クラスター間で直接プライベートネットワーク接続を確立することはできません。そのため、2 つのクラスターの管理 VPC を接続するには、CEN 接続に加えて NLB および PrivateLink を使用する必要があります。全体の手順は以下のとおりです:
CEN を使用して、リーダークラスターおよびフォロワークラスターが配置されている VPC を接続します。両方の Elasticsearch インスタンスが同一 VPC 内にある場合は、このステップをスキップしてステップ 2 に進んでください。
フォロワークラスターの VPC 内で NLB を作成し、そのトラフィックをリーダークラスターのプライベート IP アドレスに転送します。
NLB を基に PrivateLink エンドポイントサービスを作成します。
フォロワークラスターの Alibaba Cloud Elasticsearch コンソールで、プライベート接続を設定して PrivateLink ドメイン名を取得します。
フォロワークラスターの Kibana コンソールで、リモートクラスターを追加し、CCR を設定します。
操作手順
ステップ 1:CEN を使用した同一リージョン内 VPC の接続
2 つの Elasticsearch インスタンスが同一 VPC 内にある場合は、このステップをスキップしてステップ 2 に進んでください。
Cloud Enterprise Network (CEN) を使用して、リーダークラスターが配置されている VPC とフォロワークラスターが配置されている VPC を接続します。詳細な手順については、「同一リージョン内 VPC の接続」をご参照ください。
ステップ 2:リーダークラスターのプライベート IP アドレスの取得
Alibaba Cloud Elasticsearch コンソール にログインします。
リーダークラスターの 基本情報 ページで、内部エンドポイント フィールドを確認し、そのドメイン名をコピーします。
同一 VPC 内の ECS インスタンスで、以下のコマンドを実行してリーダークラスターのプライベート IP アドレスを解決します:
ping <private_domain_of_the_leader_cluster>後続の手順で使用するため、解決された IP アドレスを記録してください。
ステップ 3:NLB およびサーバーグループの作成
フォロワークラスターの VPC 内に NLB インスタンスを作成し、そのトラフィックをリーダークラスターに転送します。
Network Load Balancer (NLB) コンソール にログインします。
サーバーグループを作成します。
左側ナビゲーションウィンドウで、サーバーグループ をクリックします。
サーバーグループの作成 をクリックし、以下のパラメーターを設定します:
パラメーター
説明
サーバーグループタイプ
IP を選択します。
転送ポート
すべてのポートを転送 を有効化します。
ヘルスチェック
ポートを 9300 に設定します。
作成したサーバーグループで、バックエンドサーバーの追加 をクリックし、ステップ 2 で取得したリーダークラスターのプライベート IP アドレスを追加します。ポートはデフォルト値のままとします。
NLB インスタンスおよびリスナーを作成します。
すでに NLB インスタンスをお持ちの場合は、リスナーを直接作成できます。そうでない場合は、まず NLB インスタンスの作成 を実行し、リスナーの設定はスキップしてください。
左側ナビゲーションウィンドウで、インスタンス をクリックします。既存の NLB インスタンスを選択するか、新規に作成します。
インスタンスの詳細ページに移動し、リスナー タブをクリックしてから、リスナーの作成 をクリックします。
すべてのポート 機能を有効化し、リスナーのポート範囲を 9200–9300 に設定します。
サーバーグループ では、IP および先ほど作成したサーバーグループを選択します。
ステップ 4:PrivateLink の設定
PrivateLink を使用して、フォロワークラスターの管理 VPC からリーダークラスターへのネットワーク接続を確立します。
PrivateLink コンソール にログインします。
エンドポイントサービスを作成します。
左側ナビゲーションウィンドウで、エンドポイントサービス をクリックします。
エンドポイントサービスの作成 をクリックし、以下のパラメーターを設定します:
パラメーター
説明
サービスリソースタイプ
NLB を選択します。
サービスリソース
ステップ 3 で作成または使用した NLB インスタンスを選択します。
可用性ゾーン
NLB インスタンスが配置されている可用性ゾーンを選択します。
エンドポイント接続を自動承諾
はい を選択します。
フォロワークラスターのプライベート接続を追加します。
Alibaba Cloud Elasticsearch コンソール にログインし、フォロワークラスターのインスタンスの詳細ページに移動します。
左側ナビゲーションウィンドウで、設定と管理 > セキュリティ設定 を選択します。
クラスターネットワーク設定 セクションで、プライベート接続の設定 をクリックします。
プライベート接続の追加 をクリックし、先ほど作成したエンドポイントサービスを選択します。
接続ステータスが 接続済み に変更されるまで待ちます。
PrivateLink ドメイン名の取得
接続が確立された後、PrivateLink コンソールに戻ります。エンドポイントの接続ステータス タブで、自動的に作成されたエンドポイント接続を検索します。この接続のドメイン名が、後続のリモートクラスター設定で使用する PrivateLink ドメイン名です。
ステップ 5:クラスター間レプリケーション (CCR) の設定
フォロワークラスターの Kibana コンソールにアクセスします。詳細については、「インターネット経由での Kibana コンソールへのログイン (v2 または v3 アーキテクチャのインスタンス向け)」をご参照ください。
フォロワークラスターのインスタンス詳細ページで、左側ナビゲーションウィンドウから ビジュアライゼーションコントロール をクリックし、次に Kibana へのアクセス をクリックします。
リモートクラスターを追加します。
Kibana の左側ナビゲーションウィンドウで、スタック管理 をクリックします。
データ セクションで、リモートクラスター をクリックします。
リモートクラスターの追加 をクリックし、以下のパラメーターを設定します:
パラメーター
説明
名前
リーダークラスターのインスタンス ID を入力します。
プロキシモード
プロキシモードを有効化します。
プロキシアドレス
ステップ 4 で取得した PrivateLink ドメイン名を入力します。形式は
<domain_name>:9300です。保存 をクリックし、接続ステータスが 接続済み であることを確認します。
CCR レプリケーションモードの設定
CCR では、以下の 2 種類のレプリケーションモードがサポートされています:
モード
説明
フォロワーインデックス
単一の指定インデックスをレプリケーションします。
オートフォローパターン
指定したインデックス名パターンに一致するインデックスを自動的にレプリケーションします。このモードはバッチ同期に適しています。
オートフォローパターンを作成すると、リーダークラスターで新規に作成されたインデックスが自動的にフォロワークラスターにレプリケーションされます。既存のインデックスは自動的にはレプリケーションされません。既存のインデックスをレプリケーションするには、手動で対応するフォロワーインデックスを作成する必要があります。
以下に、オートフォローパターンの設定手順を示します:
スタック管理 で、クラスター間レプリケーション をクリックします。
オートフォローパターン タブをクリックし、オートフォローパターンの作成 をクリックします。
リモートクラスター には、先ほど追加したリモートクラスターを選択します。インデックスパターン には、すべてのインデックスをレプリケーションする場合
*を入力します。特定のインデックスのみをレプリケーションする場合は、logs-*のような名前パターンを入力します。作成 をクリックします。
ステップ 6:データレプリケーションの検証
既存データのレプリケーションを検証します。
フォロワークラスターの 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返されたドキュメントの内容が書き込んだものと一致する場合、増分データはニアリアルタイムでレプリケーションされています。
よくある質問
リモートクラスターが接続されないのはなぜですか?
以下の設定を確認してください:
CEN の同一リージョン内帯域幅が割り当てられており、2 つの VPC 間のネットワーク接続が確立されていることを確認します。
NLB のリスナーのポート範囲に 9200–9300 が含まれていることを確認します。
サーバーグループ内のリーダークラスターのプライベート IP アドレスが正しいことを確認します。
サーバーグループのヘルスチェックポートが 9300 であることを確認します。
PrivateLink エンドポイントサービスの接続ステータスが「接続済み」であることを確認します。
同一リージョン内 CCR のレイテンシーは、同一可用性ゾーン内よりも高くなりますか?
同一リージョン内 CCR のレイテンシーは、リージョン内のネットワーク遅延に影響を受けます。通常、単一の可用性ゾーン内でのレプリケーションと比較してやや高くなりますが、一般的には数秒以内に収まります。実際のレイテンシーは、CEN の帯域幅設定、データ量、およびネットワーク状況によって異なります。ビジネス要件に応じて、CEN の同一リージョン内帯域幅を適切に設定することを推奨します。
フォロワーインデックスにデータを書き込むことはできますか?
いいえ。フォロワーインデックスは読み取り専用です。すべての書き込み操作はリーダークラスターで実行する必要があります。フォロワーインデックスを書き込み可能にするには、以下の手順で標準インデックスに変換します:
フォロー処理を一時停止します:
POST /<index>/_ccr/pause_followインデックスをクローズします:
POST /<index>/_closeリーダーインデックスからのフォローを解除します:
POST /<index>/_ccr/unfollowインデックスを再オープンして書き込み可能にします:
POST /<index>/_open
CCR クラスターのバージョン要件
フォロワークラスターのバージョンは、リーダークラスターのバージョンと同一か、それより新しい必要があります。また、両クラスターともバージョン 7.10.0 以降であり、クラウドネイティブ管理アーキテクチャ (v3) を使用している必要があります。