Elasticsearch のディスク容量と使用量を最適化する方法

ディスクがいっぱい (過剰使用) の場合やディスク容量が十分に使用されていない場合の防止方法と対処方法について説明します。

Elasticsearchは初めてですか?Elasticsearchを使い始めるウェビナーに参加しましょう。無料のクラウドトライアルを始めるか、今すぐマシンでElasticを試すこともできます。

ディスク管理はどのデータベースでも重要であり、Elasticsearch も例外ではありません。十分なディスク容量がない場合、Elasticsearch はノードへのシャードの割り当てを停止します。これにより、最終的にはクラスターにデータを書き込むことができなくなり、アプリケーションでデータが失われる潜在的なリスクが生じます。一方、ディスク容量が多すぎる場合は、必要以上のリソースに対して料金を支払うことになります。

透かしの背景

Elasticsearch クラスターには、使用可能なディスク容量を追跡するのに役立つさまざまな「ウォーターマーク」しきい値があります。ノード上のディスクがいっぱいになると、最初に超えるしきい値は「低ディスク ウォーターマーク」になります。2 番目のしきい値は、「高ディスク ウォーターマークしきい値」になります。最終的には、「ディスク洪水段階」に到達します。このしきい値を超えると、クラスターは、ウォーターマークを通過したノード上の 1 つのシャード (プライマリまたはレプリカ) を持つすべてのインデックスへの書き込みをブロックします。読み取り(検索)は引き続き可能です。

ディスクがいっぱいになった場合(過剰使用)の防止と対処方法

Elasticsearch ディスクがいっぱいになった場合の対処方法はいくつかあります。

  1. 古いデータ を削除する: 通常、データを無期限に保存しないでください。ディスクがいっぱいになるのを防ぎ、解決する 1 つの方法は、データが一定の期間に達したときに確実にアーカイブされ、削除されるようにすることです。これを行う 1 つの方法は、 ILM を使用することです。
  2. ストレージ容量の追加:データを削除できない場合は、パフォーマンスに悪影響を与えずにすべてのデータを保持するために、データ ノードを追加するか、ディスク サイズを増やす必要がある場合があります。クラスターにストレージ容量を追加する必要がある場合は、ストレージ容量だけを追加するのか、それともストレージ容量に加えて RAM と CPU のリソースも比例して追加するのかを検討する必要があります (以下のディスク サイズ、RAM、CPU の比率に関するセクションを参照)。

Elasticsearch クラスターにストレージ容量を追加する方法

  1. データ ノードの数を増やします。新しいノードは既存のノードと同じサイズで、同じ Elasticsearch バージョンである必要があることに注意してください。
  2. 既存のノードのサイズを増やす:クラウドベースの環境では、通常、既存のノードのディスク サイズと RAM/CPU を増やすのは簡単です。
  3. ディスク サイズのみを増やす:クラウドベースの環境では、ディスク サイズを増やすのは比較的簡単です。
  4. スナップショット そして 復元:要求に応じて古いデータを自動プロセスでバックアップから取得できるようにする場合は、古いインデックスのスナップショットを作成し、それらを削除して、要求に応じてスナップショットからデータを一時的に復元できます。
  5. シャードごとのレプリカの数を減らす:データを削減するもう 1 つのオプションは、各シャードのレプリカの数を減らすことです。高可用性を実現するには、シャードごとに 1 つのレプリカを用意する必要がありますが、データが古くなると、レプリカなしでも作業できる可能性があります。これは通常、データが永続的である場合、または必要に応じて復元できるバックアップがある場合に機能します。
  6. アラートを作成する:将来ディスクがいっぱいになるのを防ぎ、積極的に対処するには、ディスクの使用状況に基づいて、ディスクがいっぱいになり始めたときに通知するアラートを作成する必要があります。

ディスク容量が十分に活用されない場合の防止と対処方法

ディスク容量が十分に活用されていない場合は、クラスター上のストレージ ボリュームを削減するさまざまなオプションがあります。

Elasticsearch クラスターのストレージ容量を削減する方法

クラスターのストレージ容量を削減する方法はさまざまです。

1. データノードの数を減らす

データストレージを削減し、RAM と CPU リソースも同じ割合で削減したい場合は、これが最も簡単な戦略です。不要なノードを廃止すると、最大のコスト削減が実現する可能性があります。

ノードを廃止する前に、次の操作を行う必要があります。

  • 廃止するノードが MASTER ノードとして必要ではないことを確認します。常に、MASTER ノード ロールを持つノードが少なくとも 3 つ必要です。
  • 廃止するノードからデータ シャードを移行します。

2. 既存のノードを小さなノードに置き換える

ノードの数をさらに減らすことができない場合 (通常、最小構成は 3 です)、既存のノードのサイズを縮小することが必要になる場合があります。シャードはノードあたりのシャード数に基づいてバランスが取られるため、すべてのデータ ノードが同じ RAM メモリとディスク サイズであることを確認することをお勧めします。

プロセスは次のようになります。

  • クラスターに新しい小さなノードを追加する
  • 廃止するノードからシャードを移行する
  • 古いノードをシャットダウンする

3. ノード上のディスクサイズを減らす

クラスターの全体的な RAM または CPU を変更せずに、ノード上のディスク サイズのみを削減したい場合は、各ノードのディスク サイズを削減できます。Elasticsearch ノード上のディスク サイズを縮小するのは簡単なプロセスではありません。

最も簡単な方法は通常次のようになります。

  • ノードからシャードを移行する
  • ノードを停止する
  • 適切なサイズの新しいデータボリュームをノードにマウントします
  • 古いディスクボリュームから新しいボリュームにすべてのデータをコピーします
  • 古いボリュームAを切り離す
  • ノードを起動し、シャードをノードに戻す

これには、このプロセス中にノードからの追加シャードを一時的に保存するのに十分な容量が他のノードに必要です。多くの場合、このプロセスの管理にかかるコストは、ディスク使用量の潜在的な節約額を上回る可能性があります。このため、必要なディスク サイズを持つ新しいノードにノード全体を置き換える方が簡単な場合があります (上記の「既存のノードをより小さなノードに置き換える」を参照)。

不要なリソースに料金を支払う場合、リソースの使用率を最適化することでコストを削減できることは明らかです。

ディスクサイズ、RAM、CPUの関係

クラスター内のディスク容量と RAM の理想的な比率は、特定のユースケースによって異なります。このため、ストレージ容量の変更を検討する際には、現在のディスク/RAM/CPU の比率が適切にバランスされているかどうか、また、その結果として RAM/CPU を同じ比率で追加/削減する必要があるかどうかも考慮する必要があります。

RAM と CPU の要件は、インデックス作成アクティビティの量、クエリの数と種類、さらに検索および集約されるデータの量によって異なります。これは多くの場合、クラスターに保存されるデータの量に比例するため、ディスク サイズにも関連している必要があります。

ディスク容量と RAM の比率は、使用事例に応じて変わる可能性があります。ここでいくつかの例をご覧ください:

インデックスアクティビティ保持検索アクティビティディスク容量ラム
エンタープライズ検索アプリ中程度のログ摂取長さライト2TB32GB
アプリ監視集中的なログ取り込み短いライト1TB32GB
電子商取引軽量データインデックス不定重い500GB32GB

ノード マシンの構成の変更は、ノードのダウンタイムが発生する可能性があり、すでに過剰に負荷がかかっている他のノードにシャードが移行しないようにする必要があるため、慎重に行う必要があることに注意してください。

関連記事

最先端の検索体験を構築する準備はできましたか?

十分に高度な検索は 1 人の努力だけでは実現できません。Elasticsearch は、データ サイエンティスト、ML オペレーター、エンジニアなど、あなたと同じように検索に情熱を傾ける多くの人々によって支えられています。ぜひつながり、協力して、希望する結果が得られる魔法の検索エクスペリエンスを構築しましょう。

はじめましょう