apackプラグインは、Alibaba Cloud Elasticsearchチームによって開発されました。このプラグインは、物理レプリケーションとベクトル検索機能を提供します。このトピックでは、物理レプリケーション機能のみについて説明します。この機能は、CPUオーバーヘッドを大幅に削減し、ロギングや時系列分析などのシナリオでの書き込みパフォーマンスを向上させます。これらのシナリオでは、レプリカシャードがインデックス用に構成され、大量のデータが書き込まれ、データの可視性はレイテンシに依存しません。
前提条件
- Alibaba Cloud Elasticsearch V6.7.0またはV7.10.0クラスターが作成されていること。 V6.7.0クラスターを作成する場合は、クラスターのカーネルバージョンがV1.2.0以降であることを確認してください。このトピックでは、V6.7.0クラスターを使用します。クラスターの作成方法の詳細については、「Alibaba Cloud Elasticsearchクラスターを作成する」をご参照ください。
- apackプラグインがクラスターにインストールされていること。Elasticsearch V6.7.0およびV7.10.0クラスターのみがapackプラグインをサポートしています。カーネルバージョンがV1.2.0より前のElasticsearch V6.7.0クラスターを使用する場合は、apackプラグインを使用する前に、クラスターのカーネルを更新する必要があります。詳細については、「クラスターのバージョンをアップグレードする」をご参照ください。 V6.7.0クラスターのカーネルバージョンがV1.2.0以降の場合は、apackプラグインがデフォルトでクラスターにインストールされており、削除できません。 プラグイン ページに移動して、プラグインがインストールされているかどうかを確認できます。説明 apackプラグインをインストールすると、物理レプリケーションとベクトル検索の両方の機能を使用できます。ベクトル検索機能の使用方法の詳細については、「aliyun-knnプラグインを使用する」をご参照ください。
背景情報
物理レプリケーション機能の基本原則:この機能が無効になっている場合、プライマリシャードを格納するノードが書き込みリクエストを受信した後、システムはプライマリシャードにデータを書き込みます。次に、システムはリクエストをプライマリシャードのレプリカシャードが存在するノードに同期し、インデックスデータをレプリカシャードに書き込みます。このプロセスは、オープンソースのElasticsearchと同じです。このプロセスでは、インデックスデータはプライマリシャードとそのレプリカシャードだけでなく、それらのトランザクションログにも書き込まれます。この機能を有効にすると、インデックスデータはプライマリシャード、そのトランザクションログ、およびそのレプリカシャードのトランザクションログに書き込まれます。これにより、データの信頼性と整合性が確保されます。プライマリシャードがリフレッシュされるたびに、システムはネットワークを介してプライマリシャードのレプリカシャードにインデックスデータの増分をコピーします。この機能により、データの可視性が数ミリ秒遅延しますが、クラスターの書き込みパフォーマンスが大幅に向上します。
- テスト環境
- クラスター構成:5つのデータノード。各ノードは8 vCPU、32 GiBのメモリ、1つの2 TiB標準SSDを提供します。
- データセット:オープンソースのElasticsearchによって提供されるRallyの74 GiB nyc_taixs
- インデックス構成:5つのプライマリシャード、および各プライマリシャードに1つのレプリカシャード(デフォルト構成)
- テスト結果
サービス 書き込み速度(ドキュメント/秒) オープンソース Elasticsearch 6.7.0 127305 Alibaba Cloud Elasticsearch V6.7.0(物理レプリケーション機能有効) 184592 - テストの結論
物理レプリケーション機能が有効になっているAlibaba Cloud Elasticsearchは、オープンソースのElasticsearchよりも45%優れた書き込みパフォーマンスを提供します。
注意事項
- apackプラグインの物理レプリケーション機能は、インデックスに対して機能します。デフォルトでは、この機能はプラグインのインストール前に作成されたインデックスでは無効になっており、プラグインのインストール後に作成されたインデックスでは有効になっています。インデックスがプラグインのインストール前に作成された場合は、使用する前にこの機能を有効にする必要があります。
- インデックスの物理レプリケーション機能を無効にすることができます。ただし、この機能を無効にする前に、インデックスを無効にしてください。
- インデックスの物理レプリケーション機能を有効にする前に、インデックスを無効にし、インデックスのレプリカ シャードの数を 0 に設定します。
新しいインデックスの物理レプリケーション機能を有効にする
PUT index-1
{
"settings": {
"index.replication.type" : "segment"
}
}インデックスの物理レプリケーション機能を無効にする
- インデックスを無効にします。
POST index-1/_close - 物理レプリケーション機能を無効にします。
PUT index-1/_settings { "index.replication.type" : null } - インデックスを有効にします。
POST index-1/_open
既存のインデックスの物理レプリケーション機能を有効にする
- インデックスのレプリカ シャードの数を 0 に設定します。
PUT index-1/_settings { "index.number_of_replicas": 0 } - インデックスを無効にします。
POST index-1/_close - 物理レプリケーション機能を有効にします。
PUT index-1/_settings { "index.replication.type" : "segment" } - インデックスを有効にします。
POST index-1/_open - レプリカ シャードの数を 1 に設定します。
PUT index-1/_settings { "index.number_of_replicas": 1 }