クロスクラスターレプリケーション (CCR) は、リーダークラスターからフォロワークラスターへインデックスデータをほぼリアルタイムでレプリケーションします。これにより、リモートディザスタリカバリ、読み書き分離、およびローカルアクセスが実現されます。本トピックでは、Elasticsearch 向けの一般的なディザスタリカバリソリューションを比較し、CCR の仕組みを説明することで、適切なソリューションの選定を支援します。
CCR の仕組み
基本アーキテクチャ
CCR はアクティブ・パッシブアーキテクチャを採用しています。リーダークラスターがすべての書き込み操作を処理し、読み取り専用のフォロワークラスターがリーダークラスターからデータをレプリケーションします。
リーダークラスター:すべての書き込み操作を受け付けるソースクラスターです。
フォロワークラスター:読み取り専用であり、リーダークラスターからデータをレプリケーションする送信先クラスターです。
データレプリケーションプロセス
CCR のデータレプリケーションは、以下の 2 つのフェーズで構成されます:
初期化フェーズ
フォロワークラスターがリーダークラスターに初期化リクエストを送信します。その後、リーダークラスターはスナップショット回復と同様のプロセスで、インデックスのすべての Lucene セグメントファイルをフォロワーインデックスへ転送します。
増分同期フェーズ
デフォルトでは、フォロワーインデックスのシャードが 1 秒ごとにリーダークラスターへプルリクエストを送信し、前回の同期ポイント以降の最新操作をフェッチします。そのプロセスは以下のとおりです:
プルリクエストの開始位置の決定:フォロワークラスターは、ローカルで
remote_checkpointを管理しており、これはローカルインデックスへ正常に適用された最新操作の位置を示します。この値は、リーダークラスターのトランザクションログ (Translog) 内のglobal_checkpointに対応します。リーダーの Translog からの操作の読み取り:リーダークラスターは、フォロワークラスターから提供された
from_seq_noを使用して Translog 内の開始位置を特定し、その後のすべての操作(インデックス登録、更新、削除など)を読み取り、これらの操作のリストを返します。フォロワークラスターでの操作の再生:フォロワークラスターは、これらの操作を順次再生し、
remote_checkpointを更新します。再生に失敗した場合(例:バージョンコンフリクト発生時)、同期は一時停止され、エラーがログに記録されます。継続的なポーリング:フォロワークラスターは固定間隔で新しい操作を継続的にポーリングし、通常は 1 秒未満の遅延を実現します。
Translog のコア役割
トランザクションログ (Translog) は、CCR における増分同期のデータソースです。Elasticsearch において、Translog は以下の目的で使用されます:
データ損失の防止:Translog はすべての書き込み操作を記録し、ノードがクラッシュした場合でもログの再生によってデータを回復できます。
レプリカの一貫性保証:書き込み操作は、まず Translog に書き込まれ、その後レプリカシャードへ転送されます。プライマリシャードおよびレプリカシャードの両方が書き込みを承認した場合にのみ、操作は成功とみなされます。
CCR 増分同期のサポート:CCR は Elasticsearch の内部 Translog API を使用して操作ログを読み取り、指定されたシーケンス番号以降のすべての変更を取得し、ほぼリアルタイムのデータレプリケーションを実現します。
Translog は各シャードごとに個別に保存されます。各シャードには、indices/{index_uuid}/{shard_id}/translog/ に配置される独自の Translog ディレクトリがあります。Translog ファイル (.tlog) はバイナリ形式で保存され、世代管理メカニズムによって制御されます。フラッシュが実行されるか、またはファイルサイズがデフォルト値である 512 MB に達すると、新しい世代のファイルが作成されます。
Alibaba Cloud Elasticsearch 向け CCR ネットワークソリューション
Alibaba Cloud Elasticsearch インスタンスは、ユーザー VPC ではなく、独立した管理用 VPC にデプロイされます。たとえ 2 つのクラスターが同一リージョン内に存在する場合や、CEN を使用して跨リージョンでユーザー VPC を接続している場合であっても、それらはプライベートネットワーク上で直接通信できません。そのため、管理用 VPC 間を接続するには、NLB および PrivateLink を使用する必要があります。
クラスターが同一リージョン内にあるかどうかに応じて、該当するドキュメントをご参照ください。
シナリオ | 説明 | ドキュメント |
同一リージョン | リーダークラスターおよびフォロワークラスターが同一リージョン内にあります。管理用 VPC 間を接続するために NLB および PrivateLink を使用します。 | |
跨リージョン | リーダークラスターおよびフォロワークラスターが異なるリージョン内にあります。まず CEN を使用してユーザー VPC を接続し、その後 NLB および PrivateLink を使用して管理用 VPC 間を接続する必要があります。 |
制限事項
両方のクラスターは、クラウドネイティブ新管理 (v3) モードを使用している必要があります。v1 または v2 アーキテクチャを使用しているクラスターがある場合は、事前にアップグレードする必要があります。詳細については、「インスタンスのアーキテクチャのアップグレード」をご参照ください。
Alibaba Cloud Elasticsearch クラスターのアーキテクチャバージョンを確認するには、Elasticsearch コンソール にログインします。インスタンスの 基本情報 ページで、デプロイコントロールモード を確認してください。表示されるモードは、クラウドネイティブの新しいコントロール (v3) または 基本コントロール (v2) のいずれかです。
両方のクラスターは Elasticsearch 7.10.0 以降を実行している必要があります。フォロワークラスターのバージョンは、リーダークラスターのバージョンと同じか、それより新しい必要があります。
リーダーインデックスのマッピングおよびシャード数は、フォロワーインデックスと一致している必要があります。フォロワーインデックスのシャード数は変更できません。