Elasticsearch를 운영하다 보면 커스텀 플러그인, 설정파일 수정이 필요한 경우가 종종 있습니다.
플러그인이나 설정파일 수정 시 Elasticsearch에 적용하려면 재기동이 필요합니다.
사내에서 사용하는 Rolling Restart로 노드 하나씩 재기동하는 방법 순서입니다.
1. 색인 중지
동적색인 모듈에 컨슈머를 0으로 설정하여 Elasticsearch에 색인이 되지 않도록 변경합니다.
2. 클러스터에서 샤드 할당 비활성화 설정
노드 하나씩 Restart를 진행할때 중지된 노드에 포함된 프라이머리, 레플리카 샤드들이 옮겨지거나 failover 되는 것을 방지합니다.
cluster.routing.allocation.enable: none
cluster.routing.allocation.enable: none
- all : 모든 노드에 대한 샤드 할당을 활성화. (default)
- none : 모든 샤드 할당을 비활성화.
- primaries : 프라이머리 샤드에 대한 할당만 활성화.
- new_primaries : 새로운 흐라이머리 샤드에 대한 할당만 활성화.
3. 검색 API Elasticsearch IP 제거
Restart 된 노드에 검색 쿼리 호출이 들어오면 안 되기 때문에 동적으로 재기동 전에 IP를 제거합니다.
(검색 API IP 리스트 동적 수정 API 개발)
4. Elasticsearch Restart
Elasticsearch 서비스 재기동
5. 클러스터 노드 상태 확인
/_cluster/health?pretty
{
"cluster_name": "es-cluster",
"status": "green",
"timed_out": false,
....
....
....
}
6. 검색 API Elasticsearch IP 추가
7. 3~6 반복
8. 클러스터 샤드 할당 활성화
9. 색인 시작
마스터 노드를 제외한 14개 노드 재기동시에 30분 정도 소요됩니다.
POST _flush/synced
클러스터, 노드에 장애가 생기면 데이터 변경 내용을 디스크에 동기화 시켜 일관성과 가용성을 유지할 수 있도록 하는 명령어입니다. (다른 블로그에서는 노드를 Restart 하기 전 flush 작업을 하는데 색인 중지를 하기 때문에 건너뛰어도 되는 작업)
'ELK' 카테고리의 다른 글
ICU플러그인과 Suggest쿼리를 사용해 제안 검색어 만들기 (0) | 2023.09.18 |
---|---|
es_rejected_execution_exception 처리하기 (2) | 2023.09.12 |
Elasticsearch Reindex 성능 개선 (1) | 2023.06.12 |
Elasticsearch copy_to 활용 (1) | 2023.05.26 |
Elasticsearch Scroll API, Search After 성능 비교 (0) | 2023.05.08 |