クラスター間のデータ複製は複雑で時間のかかるプロセスです。企業は、外部ツールを使用するか、カスタム スクリプトを作成して、あるクラスターから別のクラスターにデータを移動する必要があります。Elasticsearch は、クラスター間レプリケーション機能を備えています。
クラスター間レプリケーション (CCR) は、Elasticsearch の組み込み機能で、あるクラスターから別のクラスターにほぼリアルタイムでデータをレプリケートできます。これは、ユーザーが複数のクラスターにデータを分散し、データの復元力を向上させ、地理的領域全体でのデータ分析を可能にする強力なツールです。
クラスター間レプリケーションの世界に飛び込んで、いくつかのユースケースを探ってみましょう。
使用例 1: 災害復旧
災害はいつでも発生する可能性があるため、災害復旧計画を立てることが重要です。クラスター間レプリケーションは、プライマリ クラスターから地理的に異なる場所にあるセカンダリ クラスターにデータをレプリケートすることで、災害復旧に役立ちます。これにより、プライマリ クラスタに障害が発生した場合でも、セカンダリ クラスタが引き継ぎ、業務を中断することなく継続できることが保証されます。
使用例 2: 負荷分散
大量のデータを抱える大企業では、単一のクラスターでは負荷を処理できない場合があります。クラスター間レプリケーションにより、複数のクラスターにデータを分散することで負荷分散が可能になり、パフォーマンスとスケーラビリティが向上します。ユーザーは任意のクラスターのデータをクエリでき、結果はリアルタイムで結合されて返されます。
使用例 3: 分析
地理的領域にわたるデータの分析は、特にデータが個別のクラスターに保存されている場合に困難になる可能性があります。クラスター間レプリケーションを使用すると、ユーザーは複数のクラスターから中央クラスターにデータをレプリケートできるため、すべてのデータ ソースにわたる分析の実行が容易になります。これにより、企業はデータの全体像に基づいて情報に基づいた意思決定を行うことができます。
実用的
クラスター間レプリケーションを設定するには、セカンダリ クラスターでフォロワー インデックスを定義する必要があります。以下に例を示します。
PUT /_ccr/auto_follow/my_index
{
"remote_cluster": "primary_cluster",
"leader_index_patterns": ["my_index*"],
"follow_index_pattern": "{
{leader_index}}_follower",
"max_outstanding_read_requests": 1024,
"max_outstanding_write_requests": 512,
"max_read_request_operation_count": 256,
"max_write_request_operation_count": 256,
"max_write_buffer_count": 512,
"max_write_buffer_size": "512mb",
"max_retry_delay": "10s",
"read_poll_timeout": "1m",
"max_poll_interval": "5m"
}
これにより、my_index* パターンに一致するメイン クラスター内のインデックスに続く自動追従インデックスが作成されます。
レプリケーションのステータスを確認するには、_ccr/stats API を使用できます。以下に例を示します。
GET /_ccr/stats
これにより、レプリケーションのステータスに関する情報を含む JSON オブジェクトが返されます。
クラスター間のレプリケーションのいくつかの重要な概念と構成を詳しく見てみましょう。
理解しておくべき重要な概念は、リーダー インデックスとフォロワー インデックスの違いです。リーダー インデックスはレプリケートされるプライマリ クラスターのインデックスであり、フォロワー インデックスはレプリケートされたデータを受信するセカンダリ クラスターのインデックスです。
フォロワー インデックスを定義するときは、レプリケーション プロセスの動作を制御するさまざまな設定を指定できます。たとえば、未処理の読み取りおよび書き込みリクエストの数、書き込みバッファの最大サイズ、最大再試行遅延などの制限を設定できます。これらの設定は、ネットワーク全体のデータ フローを制御し、レプリケーションによってどちらのクラスターにも負荷がかからないようにするために重要です。
もう 1 つの重要な考慮事項は、コピー プロセスのセキュリティです。クラスター間レプリケーションは、クラスター間の安全な通信のために SSL/TLS 暗号化を使用するように構成できます。さらに、Elasticsearch の組み込みセキュリティ機能を使用して、レプリケーション API へのアクセスを制御し、保管中の機密データを暗号化することができます。記事「Elasticsearch: 証明書を更新せずにクラスター間の相互信頼を確立する方法」を参照してください。
前述したユースケースの 1 つである災害復旧を詳しく見てみましょう。このシナリオでは、あるデータ センターにプライマリ クラスターがあり、別のデータ センターにセカンダリ クラスターが存在する場合があります。レプリケーションを設定するには、リモート クラスターとリーダー インデックス モードを指定して、セカンダリ クラスターでフォロワー インデックスを定義する必要があります。
PUT /_ccr/auto_follow/my_index
{
"remote_cluster": "primary_cluster",
"leader_index_patterns": ["my_index*"],
"follow_index_pattern": "{
{leader_index}}_follower"
}
レプリケーションが設定されると、プライマリ クラスターのリーダー インデックスに加えられた変更は、セカンダリ クラスターのフォロワー インデックスに自動的にレプリケートされます。プライマリ クラスタに影響を与える災害が発生した場合は、セカンダリ クラスタに切り替えて、レプリケートされたデータを使用して運用を継続できます。
クラスター間レプリケーションのもう 1 つの使用例は、データ統合です。場合によっては、同様のデータを含む複数のクラスターが異なる地域または事業単位に分散している場合があります。これらのクラスター間でレプリケーションを設定すると、データを単一の中央クラスターに統合して、分析とレポートを容易に行うことができます。
クラスター間レプリケーションの使用を開始するには、Elasticsearch 6.4 以降がインストールされている必要があります。その後、Elasticsearch ドキュメントの手順に従ってクラスター間のレプリケーションを構成できます。
クラスター間レプリケーションは Elasticsearch の強力な機能で、災害復旧、ロード バランシング、分析のためにクラスター間でのデータ レプリケーションを可能にします。フォロワー インデックスを定義し、レプリケーション設定を構成することで、データ フローを制御し、レプリケーション プロセスの安全性を確保できます。したがって、Elasticsearch デプロイメントの復元力とスケーラビリティを向上させたい場合は、クラスター間でレプリケートしてみてください。