web-dev-qa-db-ja.com

AWS Elastic-Search。 FORBIDDEN / 8 / index write(api)。インデックスに書き込めません

ドキュメントのリストをAWS Elastic-Searchインスタンスにダンプしようとしています。順調に動いていた。その後、突然このエラーがスローされ始めました:

{ _index: '<my index name>',
  _type: 'type',
  _id: 'record id',
  status: 403,
  error: 
   { type: 'cluster_block_exception',
     reason: 'blocked by: [FORBIDDEN/8/index write (api)];' } }

フォーラムで確認しました。それらのほとんどは、それがJVMメモリの問題であると言っています。 92%を超える場合、AWSはクラスター/インデックスへの書き込みを停止します。ただし、JVMメモリを確認したところ、92%未満でした。ここに何かが欠けていますか?

ありがとう。

25
paachi

このエラーは、クラスターが赤または黄色のステータスにならないように保護するためにAmazon ESサービスがアクティブに書き込みをブロックしていることです。 index.blocks.write を使用してこれを行います。

次の2つの理由があります。

低メモリ

JVMMemoryPressureメトリックスが30分間92%を超えると、Amazon ESは保護メカニズムをトリガーし、すべての書き込み操作をブロックして、クラスターが赤のステータスに達するのを防ぎます。保護がオンの場合、書き込み操作はClusterBlockExceptionエラーで失敗し、新しいインデックスを作成できず、IndexCreateBlockExceptionエラーがスローされます。

JVMMemoryPressureメトリックが5分間88%以下に戻ると、保護が無効になり、クラスターへの書き込み操作がブロック解除されます。

ディスク容量が少ない

Elasticsearchのデフォルトの「最低水準点」は85%です。つまり、ディスク使用量が85%を超えると、Elasticsearchはそのノードにシャードを割り当てなくなります。 Elasticsearchにはデフォルトで90%の「最高水準点」があり、この時点でシャードを他のノードに再配置しようとします。

46
gondalez

このエラーは、AWS ElasticSearchがディスク容量に基づいてドメインにブロックを配置したことを示しています。 85%では、ESは新しいインデックスの作成を許可しません。 90%では、新しいドキュメントを作成できません。

8
ckarabulut