일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- IONQ
- dbeaver
- Selenium
- Cache
- java
- 테슬라
- ann
- mysql
- Query
- KNN
- java crawler
- redis
- API
- Analyzer
- aqqle
- request cache
- JPA
- elasticsearch cache
- file download
- 양자컴퓨터
- NORI
- 아이온큐
- aggs
- Docker
- api cache
- Elastic
- vavr
- Elasticsearch
- TSLA
- Aggregation
- Today
- Total
아빠는 개발자
[es] Full-cluster restart and rolling restart 본문
전체 클러스터 재시작 및 순차적 재시작
전체 클러스터 다시 시작 또는 롤링 다시 시작을 수행하려는 상황이 있을 수 있습니다 . 전체 클러스터 재시작 의 경우 클러스터의 모든 노드를 종료하고 다시 시작하는 반면 , 롤링 재시작 의 경우 한 번에 하나의 노드만 종료하므로 서비스가 중단되지 않습니다.
전체 클러스터 다시 시작
1. 샤드 할당을 비활성화합니다. Disable shard allocation.
노드를 종료하면 할당 프로세스는 index.unassigned.node_left.delayed_timeout해당 노드의 샤드를 클러스터의 다른 노드에 복제하기 시작하기 전에(기본적으로 1분) 기다립니다. 이 작업에는 많은 I/O가 포함될 수 있습니다. 노드가 곧 다시 시작될 예정이므로 이 I/O는 필요하지 않습니다. 노드를 종료하기 전에 복제본 할당을 비활성화 하면 시계 경주를 피할 수 있습니다 .
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
#CURL
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
'
cluster.routing.allocation.enable
특정 종류의 샤드에 대한 할당을 활성화 또는 비활성화합니다.
- all - (default) Allows shard allocation for all kinds of shards. - 모든 종류의 샤드에 대한 샤드 할당을 허용합니다.
- primaries - Allows shard allocation only for primary shards. - 기본 샤드에 대해서만 샤드 할당을 허용합니다.
- new_primaries - Allows shard allocation only for primary shards for new indices. - 새 인덱스의 기본 샤드에 대해서만 샤드 할당을 허용합니다.
- none - No shard allocations of any kind are allowed for any indices. - 어떤 인덱스에도 어떤 종류의 샤드 할당도 허용되지 않습니다.
이 설정은 노드를 다시 시작할 때 로컬 기본 샤드 복구에 영향을 주지 않습니다. 할당되지 않은 기본 샤드의 복사본이 있는 다시 시작된 노드는 해당 할당 ID가 클러스터 상태의 활성 할당 ID 중 하나와 일치한다고 가정하여 해당 기본 샤드를 즉시 복구합니다.
2. 인덱싱을 중지하고 동기화된 플러시를 수행합니다. Stop indexing and perform a synced flush.
- 동기화된 플러시를 수행하면 샤드 복구 속도가 빨라집니다.
POST _flush/synced
curl -X POST "localhost:9200/_flush/synced?pretty"
동기화된 플러시를 수행할 때 응답을 확인하여 오류가 없는지 확인하세요. 보류 중인 인덱싱 작업으로 인해 실패한 동기화된 플러시 작업은 응답 본문에 나열되지만 요청 자체는 여전히 200 OK 상태를 반환합니다. 실패하면 요청을 다시 발행하십시오.
Request
POST /<index>/_flush/synced
GET /<index>/_flush/synced
POST /_flush/synced
GET /_flush/synced
3. (선택) 활성 기계 학습 작업 및 데이터 피드와 관련된 작업을 일시적으로 중지합니다. Temporarily stop the tasks associated with active machine learning jobs and datafeeds. (Optional)
클러스터를 종료할 때 기계 학습 작업 및 데이터 피드를 처리하는 두 가지 옵션이 있습니다.
기계 학습 작업 및 데이터 피드와 관련된 작업을 일시적으로 중지하고 업그레이드 모드 설정 API를 사용하여 새 작업이 열리지 않도록 합니다 .
업그레이드 모드를 비활성화하면 자동으로 저장된 마지막 모델 상태를 사용하여 작업이 재개됩니다. 이 옵션은 종료 중에 활성 작업을 관리하는 오버헤드를 방지하며 명시적으로 데이터 피드를 중지하고 작업을 닫는 것보다 빠릅니다.
POST _ml/set_upgrade_mode?enabled=true
curl -X POST "localhost:9200/_ml/set_upgrade_mode?enabled=true&pretty"
모든 데이터 공급을 중지하고 모든 작업을 닫습니다 . 이 옵션은 닫을 때 모델 상태를 저장합니다. 클러스터를 다시 시작한 후 작업을 다시 열면 정확히 동일한 모델을 사용합니다. 그러나 최신 모델 상태를 저장하는 것은 업그레이드 모드를 사용하는 것보다 시간이 더 오래 걸립니다. 특히 작업이 많거나 모델 상태가 큰 작업이 있는 경우에는 더욱 그렇습니다.
4. 모든 노드를 종료합니다.
systemd 사용하여 Elasticsearch를 실행하는 경우:
sudo systemctl stop elasticsearch.service
SysV init 으로 Elasticsearch를 실행하는 경우 :
sudo -i service elasticsearch stop
Elasticsearch를 데몬으로 실행하는 경우:
kill $(cat pid)
5. 필요한 변경을 수행합니다.
6. 노드를 다시 시작합니다.
GET _cat/health
GET _cat/nodes
모든 노드가 클러스터에 참여할 때까지 기다렸다가 노란색 상태를 보고합니다.
할당을 다시 활성화합니다.
머신러닝 작업을 다시 시작하세요. (선택 과목)
롤링 재시작
- 샤드 할당을 비활성화합니다.
노드를 종료하면 할당 프로세스는 index.unassigned.node_left.delayed_timeout해당 노드의 샤드를 클러스터의 다른 노드에 복제하기 시작하기 전에(기본적으로 1분) 기다립니다. 이 작업에는 많은 I/O가 포함될 수 있습니다. 노드가 곧 다시 시작될 예정이므로 이 I/O는 필요하지 않습니다. 노드를 종료하기 전에 복제본 할당을 비활성화 하면 시계 경주를 피할 수 있습니다 .
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
'
- 인덱싱을 중지하고 동기화된 플러시를 수행합니다.
동기화된 플러시를 수행할 때 응답을 확인하여 오류가 없는지 확인하세요. 보류 중인 인덱싱 작업으로 인해 실패한 동기화된 플러시 작업은 응답 본문에 나열되지만 요청 자체는 여전히 200 OK 상태를 반환합니다. 실패하면 요청을 다시 발행하십시오.
동기화된 플러시는 더 이상 사용되지 않으며 8.0에서 제거될 예정입니다. 플러시는 Elasticsearch 7.6 이상에서 동기화된 플러시와 동일한 효과를 갖습니다.
동기화된 플러시를 수행하면 샤드 복구 속도가 빨라집니다.
POST _flush/synced
curl -X POST "localhost:9200/_flush/synced?pretty"
활성 기계 학습 작업 및 데이터 피드와 관련된 작업을 일시적으로 중지합니다. (선택 )
클러스터를 종료할 때 기계 학습 작업 및 데이터 피드를 처리하는 두 가지 옵션이 있습니다.
순차적 재시작을 수행하는 경우 기계 학습 작업을 계속 실행 상태로 둘 수도 있습니다. 기계 학습 노드를 종료하면 해당 작업이 자동으로 다른 노드로 이동하고 모델 상태를 복원합니다. 이 옵션을 사용하면 종료 중에 작업을 계속 실행할 수 있지만 클러스터에 로드가 증가합니다.
기계 학습 작업 및 데이터 피드와 관련된 작업을 일시적으로 중지하고 업그레이드 모드 설정 API를 사용하여 새 작업이 열리지 않도록 합니다 .
업그레이드 모드를 비활성화하면 자동으로 저장된 마지막 모델 상태를 사용하여 작업이 재개됩니다. 이 옵션은 종료 중에 활성 작업을 관리하는 오버헤드를 방지하며 명시적으로 데이터 피드를 중지하고 작업을 닫는 것보다 빠릅니다.
POST _ml/set_upgrade_mode?enabled=true
모든 데이터 공급을 중지하고 모든 작업을 닫습니다 . 이 옵션은 닫을 때 모델 상태를 저장합니다. 클러스터를 다시 시작한 후 작업을 다시 열면 정확히 동일한 모델을 사용합니다. 그러나 최신 모델 상태를 저장하는 것은 업그레이드 모드를 사용하는 것보다 시간이 더 오래 걸립니다. 특히 작업이 많거나 모델 상태가 큰 작업이 있는 경우에는 더욱 그렇습니다.
기계 학습 기능을 사용하려면 특정 구독이 필요합니다 .
- 롤링 재시작 시 단일 노드를 종료합니다.
systemd 사용하여 Elasticsearch를 실행하는 경우:
sudo systemctl stop elasticsearch.service
SysV init 으로 Elasticsearch를 실행하는 경우 :
sudo -i service elasticsearch stop
Elasticsearch를 데몬으로 실행하는 경우:
kill $(cat pid)
- 필요한 변경을 수행합니다.
- 변경한 노드를 다시 시작합니다.
GET _cat/nodes curl -X GET "localhost:9200/_cat/nodes?pretty"
- 노드를 시작하고 로그 파일을 확인하거나 요청을 제출하여 노드가 클러스터에 연결되는지 확인합니다 _cat/nodes.
- 샤드 할당을 다시 활성화합니다.
PUT _cluster/settings { "persistent": { "cluster.routing.allocation.enable": null } } curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' { "persistent": { "cluster.routing.allocation.enable": null } } '
- 노드가 클러스터에 조인되면 cluster.routing.allocation.enable 샤드 할당을 활성화하는 설정을 제거하고 노드 사용을 시작합니다.
- 롤링 재시작의 경우 반복합니다.
노드가 복구되고 클러스터가 안정되면 변경해야 하는 각 노드에 대해 이러한 단계를 반복합니다.
- 머신러닝 작업을 다시 시작하세요. (선택)
POST _ml/set_upgrade_mode?enabled=false curl -X POST "localhost:9200/_ml/set_upgrade_mode?enabled=false&pretty"
- 기계 학습 작업과 관련된 작업을 일시적으로 중지한 경우 업그레이드 모드 설정 API를 사용하여 활성 상태로 되돌립니다.
'Elastic > elasticsearch' 카테고리의 다른 글
[es] elasticsearch index copy 를 mac 에서 (0) | 2024.04.06 |
---|---|
[es] Hot Threads API (0) | 2024.02.24 |
[es] multi_match 쿼리와 Lucene 쿼리 구조 (1) | 2023.12.23 |
[es] elasticsearch cache 모니터링 (query_cache, request_cache) (0) | 2023.09.24 |
[es] file system cache 를 이용한.. (0) | 2023.09.24 |