검색엔진/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 노드 순으로 작업한다.