ETC/Elasticsearch

[elasticsearch] 노드 관리 (Node Lifecycle)

seokhyun2 2025. 3. 2. 23:19

Overview

elasticsearch의 노드를 관리하는 방법에 대해서 오늘은 알아보겠습니다.

elasticsearch 클러스터를 관리하다보면, 노드를 추가하거나 제거하는 일이 발생하기 마련인데요.

서비스 중에 노드를 그냥 종료하게 되면, 바로 종료가 되면서 에러를 발생시킬 수 있습니다.

graceful termination이라는 단어를 들어보셨을텐데요.

'우아한 종료'라고 해서 서비스 중에 문제 없이 종료하는 방식을 뜻합니다.

elasticsearch는 graceful termination을 위해서 별도의 API를 호출해주어야만 하는 구조입니다.

Node Lifecycle

그래서 노드의 lifecycle을 관리할 수 있는 API가 존재합니다.

GET, PUT, DELETE로 이루어진 shutdown API인데요.

https://www.elastic.co/docs/api/doc/elasticsearch/v8/group/endpoint-shutdown

 

- PUT /_nodes/{node_id}/shutdown

https://www.elastic.co/guide/en/elasticsearch/reference/current/put-shutdown.html

- GET /_nodes/{node_id}/shutdown

https://www.elastic.co/guide/en/elasticsearch/reference/current/get-shutdown.html

- DELETE /_nodes/{node_id}/shutdown

https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-shutdown.html

PUT /_nodes/{node_id}/shutdown

PUT API는 노드의 상태를 변경할 수 있는 API 입니다.

path parameter로 node_id를 넣어주고 request body에 type을 넣어서 호출하면 됩니다.

type은 restart, remove, replace 3가지로 구성되어 있는데, restart는 노드를 재시작할 때, remove는 노드를 제거할 때, replace는 노드를 대체할 때 사용하시면 됩니다.

GET /_nodes/{node_id}/shutdown

GET API는 상태를 조회하는 API입니다. 노드의 상태를 조회하고 싶을 때 사용하시면 됩니다.

DELETE /_nodes/{node_id}/shutdown

DELETE는 헷갈릴 수 있어서 주의해야 하는데요.

DELETE라서 노드를 삭제하는건가라고 착각하실 수 있는데, 노드를 삭제하는 경우에는 위의 PUT API를 type에 remove를 넣어서 호출해야하고, DELETE API는 PUT API를 호출하고 나면 해당 노드의 상태를 지워주는 API입니다.

조금 더 풀어서 적어보면, remove로 호출하게 되면 해당 노드는 elasticsearch cluster에서 제거되는데 이 때 제거되면서 해당 노드는 cluster가 더 이상 서비스에 사용하지 않는 것으로 기억을 하고 있게 됩니다.

이 기억을 지워주기 위해서 DELETE API를 사용한다고 생각하시면 됩니다.

DELETE를 호출하지 않고, PUT API를 type에 remove 대신 restart를 넣어주어 다시 호출해주면 해당 노드는 재시작으로 cluster가 인지하게 되어 다시 서비스를 하게 됩니다.

Wrap Up

elasticsearch cluster를 운영하게 되면, 하드웨어에 문제가 있거나 노드 버전을 업그레이드 하거나 서버 교체를 하는 등의 작업이 필요한데 서비스를 명시적으로 점검을 걸면 상관이 없지만 그렇게 하지 않고 무중단으로 작업을 하는 경우에는 graceful termination을 위한 node lifecycle을 확인하여 적절하게 API를 호출해서 관리해주어야 합니다.

 

'ETC > Elasticsearch' 카테고리의 다른 글

[elasticsearch] 텍스트 검색  (0) 2025.03.16
[elasticsearch] 색인 -2  (0) 2025.02.02
[elasticsearch] 색인 -1  (0) 2025.01.19
[elasticsearch] 클러스터  (0) 2024.11.10
[elasticsearch] 데이터 저장  (1) 2024.10.27