* 원문링크 *
Rolling Restarts
클러스를 온라인 상태를 유지하면서 순차적인 재시작이 필요한 순간이 있다.
* 엘라스틱서치 업그레이드
* 서버( OS, hardware update) 의 유지보수를 위해
원래 엘라스틱은 데이터가 복제되어 있고 고르게 분배되어 있다. 만약 하나의 노드를 끄게 되면 클러스터는 이를 즉시 감지하고 재배치를 시작한다. 비록 다운타임이 짧다 하더라도 샤드의 크기가 클 경우 재배치 하는데 꽤나 긴 시간이 걸리게 되는데 이 부분이 상당히 번거롭다.
이와 같은 번거로운 상황을 피하기 위해 외부의 작업(재시작이 필요한) 이 완료되기 까지 엘라스틱서치의 재배치 작업을 끌 수있다. 이 단계는 아래와 같다.
1. 가능하다면 새로운 데이터의 indexing 작업을 멈춘다. 이 작업이 항상 가능할 순 없지만 인덱싱 작업을 멈춤으로써 소요 시간을 줄일 수 있다.
2. 샤드 할당 작업을 끈다. 이 설정은 유실된 샤드의 재배치를 하지 않도록 만든다. 샤드 할당을 끄는 설정은 ( disable allocation ) 아래와 같다.
{
"transient" : {
"cluster.routing.allocation.enable" : "none"
}
}
3. 노드를 내린다.
4. 유지보수 / 업그레이드 작업을 한다.
5. 노드를 다시 올리고 노드가 클러스터에 포함이 되는지 확인을 한다.
6. [위 2번] 에서 끈 설정을 다시 킨다.
{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}위 옵션을 켜게 되면 샤드를 재배치 하는데 시간이 좀 걸린다. 클러스터의 상태가 green 이 될때까지 기다린다.
7. [위 2번] 에서 [6번] 작업을 나머지 노드에도 진행한다.
8. 이 시점부터 안전하게 재 인덱싱을 할 수 있지만 클러스터가 완전히 배치 될때까지 기다리는게 빠른 작업을 위해 좋다.
추가적으로 cluster.routing.allocation.enable 옵션의 설명을 찾아 보면 아래와 같다.
all - (기본값) 모든 종류의 샤드 배치
primaries - primary shard 만 배치
new_primaries - 새로운 인덱스가 생성되는 primary shard만 배치
none - 모든 샤드 배치 안함
'elasticsearch' 카테고리의 다른 글
elasticsearch indexing Performance Tips ( 엘라스틱서치) (0) | 2016.06.01 |
---|---|
elasticsearch module (엘라스틱서치 모듈에 대해서) (0) | 2016.05.29 |
엘라스틱서치 샤드 갯수? (0) | 2016.05.26 |
엘라스틱서치 ( elasticsearch ) 메모리 관련 (공식 홈피 번역) (2) | 2016.05.26 |
엘라스틱서치 ( elasticsearch ) 릴리즈를 위한 하드웨어 고려 (공식 가이드 번역) (0) | 2016.05.26 |