검색엔진/ElasticSearch
ElasticSearch - Rolling Restart
ZzangHo
2022. 3. 22. 13:28
728x90
앞에 Full-cluster Restart에 이어서 Rolling Restart방식도 알아보자.
먼저 순서의 경우 앞의 Full-cluster Restart와 동일하다. 다만 차이점은 Full-Cluster의 경우 전체 노드를 Shutdown하고 StartUp을 하지만 Rolling Restart의 경우 노드 한대씩 작업을 하는 것이다.
그리고 가급적이면 수행중인 인덱싱(색인) 작업은 중지 하고 작업하는게 안전하다.
1. 샤드 할당을 비활성화 한다.(Health = green)
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
2. 인덱싱을 중지하고 플러시를 수행합니다.(Health = green)
POST /_flush
3. 노드 중지(Health = yellow)
우리팀의 경우 Docker+Docker-compose로 ES를 운영하고 있기 때문에 아래 docker-compose down으로 shutdown을 한다.
docker-compose down
4. 변경 사항 반영(Health = yellow)
이 단계에서 수행할 작업을 진행하면 된다. (ES 업그레이드, Plugin 작업 등등)
5. 노드 재시작(Health = yellow)
작업이 완료 되었으면 다시 노드를 재시작한다.
docker-compose up -d
6. 노드가 클러스터에 합류가 되었는 것을 확인한다.(Health = yellow)
나의 경우 cerebro 또는 head를 통해 확인한다. API가 더 익숙한 사람들은 아래 API를 통해 확인한다.
GET _cat/nodes?pretty&v
7. 노드가 정상적으로 합류가 되었으면 샤드 할당을 다시 활성화한다.(Health = yellow)
health를 green으로 만들기 위해 다시 allocation 옵션을 null 또는 "all"로 초기화 해준다.
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": null
}
}
8. 샤드가 복구 되는지 확인한다.(Health = green)
6번과 마찬가지로 모니터링 Tool을 이용하거나 API를 이용하여 확인한다.
GET _cat/health?v
1~8번까지의 작업을 노드 순서만큼 반복하여 작업한다.주의점은 항상 Health가 green 상태로 되는것을 확인하고 다음 노드를 작업해야 한다.
그리고 Data -> Master 노드 순으로 작업한다.