Network Load Balancer (NLB) と PrivateLink を使用して、同一リージョン内の 2 つの 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 を接続した場合でも、デフォルトではクラスターはプライベートネットワーク経由で通信できません。このソリューションでは、CEN 接続の上に NLB と PrivateLink を使用して、2 つのクラスターの管理 VPC をブリッジします。プロセスは次のとおりです:
-
CEN を使用して、リーダー クラスターとフォロワー クラスターの VPC を接続します。両方の Elasticsearch インスタンスが同じ VPC 内にある場合は、このステップをスキップしてステップ 2 に進むことができます。
-
フォロワー クラスターの VPC に NLB インスタンスを作成し、リーダー クラスターのプライベート IP にトラフィックを転送します。
-
NLB インスタンスに基づいてエンドポイントサービスを作成します。
-
フォロワー クラスターの Alibaba Cloud Elasticsearch コンソールでプライベート接続を設定し、PrivateLink ドメイン名を取得します。
-
フォロワー クラスターの Kibana コンソールで、リモートクラスターを追加し、CCR を設定します。
操作手順
ステップ 1: CEN を使用した同一リージョン内 VPC の接続
両方の Elasticsearch インスタンスが同じ VPC 内にある場合は、このステップをスキップしてステップ 2 に進むことができます。
Cloud Enterprise Network (CEN) を使用して、リーダー クラスターの VPC とフォロワー クラスターの VPC を接続します。詳細な手順については、「同一リージョン内 VPC の接続」をご参照ください。
ステップ 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 の設定
-
フォロワー クラスターの Kibana コンソールにログインします。パブリックエンドポイントを使用する別の手順については、「パブリックエンドポイントを使用して v2/v3 クラスターの Kibana コンソールにログインする」をご参照ください。
フォロワー クラスターのインスタンス詳細ページで、左側のナビゲーション ペインのデータ可視化をクリックし、[Kibana に移動]をクリックします。
-
リモートクラスターを追加します。
-
Kibana の左側のナビゲーションペインで、[スタック管理] をクリックします。
-
[データ] セクションで、[リモートクラスター] をクリックします。
-
[リモートクラスターの追加] をクリックし、以下のパラメーターを設定します。
パラメーター
説明
名前
リーダー クラスターのインスタンス ID を入力します。
プロキシモード
プロキシモードを有効にします。
プロキシアドレス
ステップ 4 で取得した PrivateLink ドメイン名を
<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返されたドキュメントが書き込んだ内容と一致する場合、新しいデータはリアルタイムで同期されています。
よくある質問
リモートクラスターが接続されないのはなぜですか?
次の項目を確認してください:
-
CEN のリージョン内接続に帯域幅が割り当てられており、2 つの VPC 間のネットワーク接続が確立されているかを確認してください。
-
NLB リスナーのポート範囲に 9200-9300 が含まれているかを確認してください。
-
サーバーグループ内のリーダー クラスターのプライベート IP が正しいかを確認してください。
-
サーバーグループのヘルスチェックがポート 9300 を使用しているかを確認してください。
-
PrivateLink エンドポイントの接続ステータスが接続済みであることを確認します。
同一リージョン CCR のレイテンシーはどのくらいですか?
同一リージョン CCR のレプリケーション レイテンシーは通常、秒単位ですが、単一ネットワーク内でのレプリケーションよりはわずかに高くなります。実際のレイテンシーは、CEN の帯域幅設定、データ量、およびネットワーク状況によって異なります。ビジネス要件に基づいて CEN のリージョン内帯域幅を設定してください。
CCR のバージョン要件は何ですか?
フォロワー クラスターのバージョンは、リーダー クラスターのバージョンより古くすることはできません。両方のクラスターはバージョン 7.10.0 以降であり、v3 クラウドネイティブ管理アーキテクチャを使用している必要があります。