elasticsearch 그룹을 정확하게 닫고 다시 시작하는 방식

문제의 원인:
elasticsearch 집단에서 집단이 어떤 노드가 닫힌 것을 발견하면 1분 지연(기본값) 후에 이 노드의 조각을 집단의 다른 노드에 복사하기 시작합니다. 이것은 많은 I/O와 관련이 있을 수 있습니다.이 노드는 머지않아 다시 시작될 것이기 때문에 이 I/O는 필요하지 않다.노드를 닫기 전에 복사본 할당을 비활성화함으로써 피할 수 있습니다.
올바른 종료 방법:
첫 번째 단계:
분할 자동 분포 금지
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
  "persistent": {
    "cluster.routing.allocation.enable": "primaries"
  }
}
'

2부:
동기식 새로 고침 수행
curl -X POST "localhost:9200/_flush/synced?pretty"

참고:
동기화 새로 고침을 실행할 때 응답이 실패하지 않았는지 확인하십시오.요청 자체는 200OK 상태로 되돌아갔지만 응답 본문에 색인 해제 작업으로 인해 실패한 동기화 새로 고침 작업이 열거되어 있습니다.실패하면 다시 요청을 보냅니다.
3부:
모든 노드 닫기
 Elasticsearch systemd:
sudo systemctl stop elasticsearch.service

 SysV Elasticsearch init:
sudo -i service elasticsearch stop

 Elasticsearch :
kill $(cat pid.txt)

종료 후 변경 사항을 실행할 수 있습니다
올바른 재부팅 방법:
첫 번째 단계:
작업이 끝나면 노드를 하나씩 시작합니다.
cd $ES_HOME
./bin/elasticsearch -d -p $ES_HOME/pid.txt

2단계:
모든 노드가 시작되면 다음과 같은 요청을 수행하여 클러스터 상태를 볼 수 있습니다.
curl -X GET "localhost:9200/_cat/health?pretty"
curl -X GET "localhost:9200/_cat/nodes?pretty"

상태는 red,yellow,green이다.
노드가 집단에 가입할 때, 로컬 저장소의 모든 메인 슬라이스를 복구하기 시작합니다.이 API는 처음에 _cat/health 에서 status 보고되며 모든 기본 조각이 할당된 것은 아님을 나타냅니다.노드가 로컬 블록을 복구하면 그룹redstatus로 전환되어 모든 메인 블록이 복구되었지만 모든 복사본 블록이 분배된 것은 아닙니다.할당을 다시 설정하지 않았기 때문에 예상할 수 있습니다.모든 노드 yellow 로 복제본 할당이 지연되면 마스터 서버는 로컬 분할 복제본이 이미 있는 노드에 복제본을 할당할 수 있습니다.
3단계:
슬라이스 자동 배포 활성화
모든 노드가 클러스터에 가입되어 주요 조각을 복원한 후 복원 yellow 을 통해 기본값으로 할당을 다시 설정할 수 있습니다.
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}
'

분배를 다시 활성화하면 집단은 복사본을 데이터 노드에 분배하기 시작한다.이 때, 색인 복구와 검색은 안전하지만, 모든 메인 슬라이스와 복사본 슬라이스가 성공적으로 분배되고 모든 노드의 상태가 될 때까지 기다릴 수 있다면, 집단은 더욱 빨리 회복될 것입니다cluster.routing.allocation.enable.green_cat/health API를 사용하여 진행 상황을 모니터링할 수 있습니다.
curl -X GET "localhost:9200/_cat/health?pretty"
curl -X GET "localhost:9200/_cat/recovery?pretty"

좋은 웹페이지 즐겨찾기