이는 Elasticsearch가 디스크 공간이 부족하다고 판단하여 읽기 전용 모드로 전환 될 때 발생합니다.
기본적으로 Elasticsearch의 결정은 여유 디스크 공간 의 백분율 을 기반으로 하므로 대용량 디스크에서는 여유 공간이 많은 경우에도 발생할 수 있습니다.
플러드 단계 워터 마크는 기본적으로 95 %이므로 1TB 드라이브에서는 최소 50GB의 여유 공간이 필요합니다. 그렇지 않으면 Elasticsearch가 자체적으로 읽기 전용 모드로 전환됩니다.
홍수 단계 워터 마크에 대한 문서는 https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html을 참조 하십시오 .
올바른 솔루션은 컨텍스트에 따라 달라집니다 (예 : 프로덕션 환경과 개발 환경).
해결 방법 1 : 디스크 공간 확보
디스크의 5 % 이상을 사용할 수 있도록 충분한 디스크 공간을 확보하면이 문제가 해결됩니다. Elasticsearch는 충분한 디스크가 사용 가능 해지면 자동으로 읽기 전용 모드에서 벗어나지 않습니다. 인덱스를 잠금 해제하려면 다음과 같이해야합니다.
$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
해결 방법 2 : 홍수 단계 워터 마크 설정 변경
"cluster.routing.allocation.disk.watermark.flood_stage"
설정을 다른 것으로 변경하십시오 . 더 낮은 백분율 또는 절대 값으로 설정할 수 있습니다. 다음 은 문서 에서 설정을 변경하는 방법의 예입니다 .
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "100gb",
"cluster.routing.allocation.disk.watermark.high": "50gb",
"cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
"cluster.info.update.interval": "1m"
}
}
이 작업을 수행 한 후에는 위의 curl 명령을 사용하여 인덱스를 잠금 해제해야하지만 그 후에는 다시 읽기 전용 모드로 전환되지 않아야합니다.