2019. 9. 2. 18:32ㆍElasticsearch
디스크 용량 관련 shard allocation에 문제가 있어 관련 설정을 docs에서 찾아본 김에 포스팅
((https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html)
엘라스틱서치는 새로운 샤드를 어디에 할당할지 결정하기전에 노드의 사용 가능한 디스크 공간을 고려함
elasticsearch.yml 파일을 통해 수정하고 재시작하거나 cluster-update-setting API를 통해 live 상태의 클러스터도 변경할 수 있음
cluster.routing.allocation.disk.threshold_enable
디폴트로 true. 디스크 할당자(disk allocation decider) diasble하려면 false
cluster.routing.allocation.disk.watermark.low
디폴트로 85%. 디스크가 85% 이상 사용중이면 해당 노드에 샤드를 할당하지 않겠다는 의미
500mb와 같이 절대값 바이트로 설정할 수도 있음
cluster.routing.allocation.disk.watermark.high
디폴트로 90%. 해당 노드의 디스크 사용량이 90% 이상이면 샤드를 relocate한다는 의미
watermark.low와 마찬가지로 500mb와 같이 절대값 바이트로 설정할 수도 있음
cluster.routing.allocation.disk.watermark.flood_stage
디폴트로 95%. 사용량이 95%를 넘는 디스크를 가진 노드에 할당된 하나 이상의 샤드를 가진 모든 인덱스를 read-only로 block(index.blocks.read_only_allow_delete)
노드에 디스크 공간이 부족하지 않도록 방지하는 최후의 수단
인덱싱을 계속하기 위해 이렇게 block된 인덱스는 사용 가능한 공간을 마련한 뒤 아래와 같이 수동으로 풀어줘야함
curl -X PUT "localhost:9200/twitter/_settings?pretty" -H 'Content-Type: application/json' -d'
{
"index.blocks.read_only_allow_delete": null
}
'
※ 위의 설정들에 대해 퍼센트값과 절대값 바이트를 섞어서 쓸 수는 없음
※ 백분율값은 사용된 디스크 공간을 의미, 바이트값은 사용 가능한 디스크 공간을 의미하므로 혼란스러울 수 있으니 유의해서 사용
ex. watermark.low = 100GB, watermark.high = 50GB, watermark.flood_stage = 10GB 정도로 설정하는 것이 합리적
cluster.info.update.interval
디폴트로 30초. 엘라스틱서치가 클러스터 내 각 노드에 디스크 사용량을 체크하는 간격
cluster.routing.allocation.disk.include_relocations
디폴트로 true. 엘라스틱서치가 노드의 디스크 사용량을 계산할 때 해당 노드로 현재 relocate 중인 샤드도 고려한다는 의미
'Elasticsearch' 카테고리의 다른 글
[Elasticsearch] 운영 환경에서 노드 디스크 교체 작업 가이드 (0) | 2019.08.30 |
---|---|
[Elasticsearch] Cluster & Node (0) | 2019.08.29 |
[Elasticsearch] 특정 shard가 assigned되지 않고 다른 shard들이 relocate를 반복하는 현상 (0) | 2019.08.28 |
[Elasticsearch] 스냅샷이 지워지지 않는 경우 (0) | 2019.08.16 |
[Elasticsearch] 기본개념 이해하기 (0) | 2019.08.16 |