////
Search
Duplicate
6️⃣

6장. 클러스터 운영하기

ElasticSearch 클러스터 버전 업그레이드 하기
인덱스의 샤드 배치 방식 변경하기
운영 중 온라인으로 클러스터나 인덱스 설정 변경하기
인덱스 API 활용하기
템플릿 활용하기

6.1 버전 업그레이드

Full Cluster Restart
: 모든 노드를 동시에 재시작하는 방식이며 다운 타임이 발생하지만 빠르게 버전을 업그레이드할 수 있다.
Rolling Restart
: 노드를 순차적으로 한 대씩 재시작하는 방식이며 다운 타임은 없지만 노드 개수에 따라서 업그레이드에 소요되는 시간이 길어질 수 있다.
업그레이드 적용 버전
최신 버전(7.8.0)으로 업그레이드하는 방법
5.0 ~ 5.5
1. 5.6 버전 2. 6.8 버전 3. 7.8.0 버전
5.6
1. 6.8 버전 2. 7.8.0 버전
6.0 ~ 6.7
1. 6.8 버전 2. 7.8.0 버전
6.8
1. 7.8.0 버전
7.0 ~ 7.7
1. 7.8.0 버전
1.
Cluster 내 샤드 할당 기능 비활성화
코드
: 노드의 프로세스를 중지하여 클러스터에서 제외되더라도 해당 노드에 포함된 샤드를 다른 노드로 재분배하지 않는다.
2.
프라이머리 샤드와 레플리카 샤드 데이터 동기화
코드
: 현재 배치해놓은 프라이머리 샤드와 레플리카 샤드 간의 데이터를 똑같은 형태로 맞춤
: 두 샤드가 가지고 있는 문서과 완벽히 일치해야 클러스터에서 제외되더라도 데이터의 정합성을 보장할 수 있기 때문
3.
노드 한 대 버전 업그레이드 이후 클러스터 합류 확인
: 업그레이드할 ElasticSearch 프로세스를 내리고 버전 업그레이드를 진행한 후, 프로세스를 재시작한다.
: 이때 클러스터의 상태는 green에서 yellow로 변경되며 unassigned 샤드가 생긴다.
4.
클러스터 내 샤드 할당 기능 활성화
코드
: 샤드 할당 기능을 재활성화한다.
5.
클러스터 그린 상태 확인
: 이후 마스터 노드의 관리를 통해 클러스터의 상태가 yellow에서 green으로 돌아오는지 확인한다.
: unassigned 샤드가 작업이 완료된 노드로 전부 할당되면 클러스터는 yellow 상태에서 green 상태로 바뀐다.
⇒ 서비스 중단이 가능한 상황이라면 Full Cluster Restart를 어려운 상황이라면 Rolling Restart을 추천

6.2 샤드 배치 방식 변경

: ElasticSearch는 대부분 자동으로 샤드를 배치하지만 경우에 따라 샤드 배치 방식을 변경해야할 때, 변경하는 방법에 대해 알아보자.
⇒ 특정 노드에 장애가 발생하여 생성된 unassigned 샤드들에 대한 재할당 작업이 5회 이상 실패할 경우
⇒ 혹은 일정 기간이 지난 오래된 인덱스의 샤드를 특정 노드에 강제로 배치해야할 경우
샤드 수동 배치 방법
옵션
설명
reroute
샤드 하나하나를 특정 노드에 배치할 때 사용
allocation
클러스터 전체에 해당하는 샤드 배치 방식을 변경할 때 사용
rebalance
클러스터 전체에 해당하는 샤드 재분배 방식을 변경할 때 사용
filtering
특정 조건에 해당하는 샤드들을 특정 노드에 배치할 때 사용
reroute : 인덱스의 특정 샤드를 대상으로 하는 재배치
allocation : 클러스터 전체에 적용되는 재배치 방식을 수정

6.3 클러스터와 인덱스의 설정 변경

클러스터 설정 변경
설정 변경 방법
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' ---- 1 { "persistent": { "cluster.routing.allocation.enable": "none" } } '
Shell
복사
1.
cluster/settings라는 API를 통해서 변경이 가능하다. settings 앞에 cluster가 있는데, 이런 형태의 API를 클러스터 API라고 부르며 클러스터 전체를 대상으로 변경할 때 사용
설정 확인 방법
curl -X GET "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' ---- 1 { "persistent" : { }, ---- 1 "transient" : { } ---- 2 } '
Shell
복사
1.
영구히 적용되는 설정들이다. 아무런 값이 없으면 각 항목의 기본값이 자동으로 적용, 이 값은 클러스터를 재시작해도 유지됨
2.
클러스터가 운영 중인 동안에만 적용되는 설정들, 아무런 갑싱 없다면 각 항목의 기본값이 적용, 임의로 설정한 값은 재시작하면 초기화된다.
: 기본적인 설정값은 elasticsearch.yml 파일을 통해서도 설정이 가능하며, 만약, 1과 2 그리고 elasticsearch.yml 파일 세 군데에 다르게 설정했다면 우선순위는 다음과 같다.
⇒ transient > persistent > elasticsearch.yml
: 그렇다고 해서 클러스터 API를 통해서 해당 두 항목의 모든 부분을 설정이 가능한 것은 아니다.
클러스터와 관련된 항목 외에 노드별로 설정할 수 있는 항목들은 elasticsearch.yml 파일에서만 설정할 수 있다.
: 우선순위에 따라 노드별로 설정해야 하는 항목과 변경되지 않고 클러스터에 공통으로 필요한 설정은 elasticsearch.yml에 설정하고 자주 변경되지는 않지만
간헐적으로 변경이 필요한 설정은 클러스터 API를 통해서 persistent에 자주 변경되는 설정은 클러스터 API를 통해 transient에 설정하는 것이 좋다.

6.4 인덱스 API

6.5 템플릿 활용하기

6.6 마치며