Elasticsearch REST API는 HTTP 프토토콜과 JSON Data format을 이용한다.
이 chapter에서 언급된 convention은 별도로 기술되어 있지 않는 한, REST API를 통해 적용할 수 있다.
- Multiple Indices
- Common Options
Great Architect & Artist
지혜 있는 자는 궁창의 빛과 같이 빛날 것이요 많은 사람을 옳은 데로 돌아오게 한 자는 별과 같이 영원토록 빛나리라 (단 12:3)
Elasticsearch REST API는 HTTP 프토토콜과 JSON Data format을 이용한다.
이 chapter에서 언급된 convention은 별도로 기술되어 있지 않는 한, REST API를 통해 적용할 수 있다.
이 섹션에서는 application을 elasticsearch의 다른 버전으로 migration을 할 필요가 있을 때, 변경사항에 대해서 논의한다.
일반적으로 다음 Rule을 따른다.
더 자세한 내용은 07. Upgrading 섹션을 참고하라.
Rolling upgrade process
Rolling upgrade는 ES cluster에서 한번에 하나의 노드만 upgrade되게 한다. 따라서 end user는 다운타임을 느낄 수 없다. 동일 cluster에서 upgrade를 지원하는 기간을 넘어서 더 이상 지원하지 않는 여러 버전의 elasticsearch를 실행하는 것, 특히 더 최근 버전으로 이전 버전에 대한 shard replication을 구성하는 것은 동작하지 않는다.
1.0 release 이후 minor or maintenance release에서, rolling upgrade가 지원된다. Rolling upgrade를 수행하기 위해서는,
Elasticsearch 1.0 이후 버전에서 다음과 같이 실행한다.
curl -XPUT
localhost:9200/_cluster/settings -d '{
"transient" :
{
"cluster.routing.allocation.enable" :
"none"
}
}'
curl -XPOST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'
curl -XPUT
localhost:9200/_cluster/settings -d '{
"transient" :
{
"cluster.routing.allocation.enable" :
"all"
}
}'
[IMPORTANT]
Rolling upgrade 하는 동안, 더 높은 버전의 노드에 할당된 primary shard는 절대로 하위 버전의 노드에 replicas를 할당하지 않는다. 왜냐하면 새로운 버전은 이전 버전에서 이해할 수 없는 다른 데이터 형태를 갖고 있기 때문이다.
상위 버전의 노드에서 다른 노드로 replica르 ㄹ할당하는 것이 가능하지 않다면, 예를 들어 cluster내에 하위 버전의 노드가 하나밖에 없을 경우, replica shard는 할당되지 않고 남아 있게 된다. 따라서 cluster health는 yellow 상태이다. Cluster내에 다른 상위 버전의 노드가 참여하는 즉시 replica는 할당되고 cluster의 상태는 green으로 변경될 것이다.
서비스가 실행되고 있는 동안에 새로운 소프트웨어가 설치되어 upgrade를 수행하는 것도 가능하다. 이것은 upgrade된 노드에서 service가 정지하자마자 새로운 버전을 실행하여 downtime을 감소시킨다. 이것은 새로운 버전을 별도의 디렉토리에 설치하고, symbolic link method를 이용하면 가능하다. 이 과정을 테스트 하기 위해서는 먼저 site-specific 설정 데이터와 production index들을 upgrade 과정 중에 덮어쓰지 않아야 한다.
Cluster restart upgrade process
Elasticsearch의 1.0버전 이전과 이후는 서로 호환되지 않는다. 따라서 rolling upgrade는 불가능하다. 1.0 이전 버전 시스템에서 1.0 이후버전 시스템으로 upgrade하기 위해서는 cluster 전체를 stop하고 start하는 것이 필요하다. 이러한 upgrade를 수행하기 위해서는
1.0 이전 버전에서 syntax는 다음과 같다.
curl -XPUT
localhost:9200/_cluster/settings -d '{
"persistent" :
{
"cluster.routing.allocation.disable_allocation" :
true
}
}'
1.0 이후 버전에서는 다음 syntax로 실행할 수 있다.
curl -XPUT
localhost:9200/_cluster/settings -d '{
"persistent" :
{
"cluster.routing.allocation.disable_allocation":
false,
"cluster.routing.allocation.enable" :
"all"
}
}'
이 cluster upgrade는 cluster 서비스를 종료하기 전에 새로운 소프트웨어를 설치하여 간단하게 수행할 수 있다. 이 작업이 완료되면 restart를 시작하기 전에 production data와 설정 파일들이 덮어써지지는 않았는지 반드시 확인하는 테스트가 수행되어야 한다.
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/717