elasticsearch - high disk watermark exceeded on one or more nodes, rerouting shards
어느날 elasticsearch 로그를 보고 있는데 아래와 같은 로그가 찍히고 있었다.
[2016-08-02 00:42:52,125][INFO ][cluster.routing.allocation.decider] [Fateball] high disk watermark exceeded on one or more nodes, rerouting shards
[2016-08-02 00:43:22,125][WARN ][cluster.routing.allocation.decider] [Fateball] high disk watermark [90%] exceeded on [Fateball] free: 33gb[7%], shards will be relocated away from this node
elasticsearch는 shard를 node에 배치할 때 (재배치 포함) 디스크 여유 공간을 검사하는데
그 때 미리 정해놓은 여유공간이 부족하면 이 node에 더이상 새 shard 를 배치하고 않고 위와 같은 경고 메세지를 찍는다고 한다.
이 기준을 watermark(수위)라고 표시 하는데 low 와 high로 따로 설정할 수 있다.
홍수가 났을 때 low watermark 부터 넘어가고 high watermark에 도달하는 것을 생각하면 된다.
참고로 low disk watermark 에러 메세지
[2017-08-14T15:45:31,688][INFO ][o.e.c.r.a.DiskThresholdMonitor] [BydL6N7] low disk watermark [85%] exceeded on [BydL6N7iRhu4YisM75Lirw][BydL6N7][/home/elasticsearch-5.1.1/data/nodes/0] free: 59.2gb[14.9%], replicas will not be assigned to this node
참고로 low watermark 기본 설정은 85%, high watermark 기본 설정은 90%이다.
즉 서버 디스크가 90% 차있는 상황 OTL
이런 경고가 뜨면 상황에 따라 설정을 변경하거나 node를 늘리거나 디스크를 정리하라고 가이드 하고 있는데
일단 디스크를 정리해야 겠다 -_-;
참고로 설정 변경 방법은 아래와 같다.
PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "80%",
"cluster.routing.allocation.disk.watermark.high": "50gb",
"cluster.info.update.interval": "1m"
}
}
참고: https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html
https://books.google.co.kr/books?id=oV4dDAAAQBAJ&pg=PA191&lpg=PA191&dq=high+disk+watermark+exceeded+on+one+or+more+nodes&source=bl&ots=NO8bB2bcR2&sig=cq17f8TFQ6W43cXLuyZQNoDyYpE&hl=ko&sa=X&ved=0ahUKEwi27NHg_KHOAhULl5QKHYKsAWw4HhDoAQghMAE#v=onepage&q=high%20disk%20watermark%20exceeded%20on%20one%20or%20more%20nodes&f=false