Programing

가동 중지 시간없이 런타임에 elasticsearch 클러스터에서 노드를 제거하는 방법

crosscheck 2020. 12. 4. 07:53
반응형

가동 중지 시간없이 런타임에 elasticsearch 클러스터에서 노드를 제거하는 방법


클러스터에 5 개의 노드가 있고 런타임에 2 개의 노드를 제거해야한다고 가정합니다. 그렇다면 인덱스에 영향을주지 않고 어떻게 할 수 있습니까?

나는 거의 10Gbphour로 지속적으로 인덱싱되는 데이터 스트림을 가졌습니다.

재조정이 이것에 도움이 될까요? 미리 감사드립니다


할당에서 제외하도록 클러스터에 지시하여 노드를 해제 할 수 있습니다. ( 여기 문서 에서 )

curl -XPUT localhost:9200/_cluster/settings -H 'Content-Type: application/json' -d '{
  "transient" :{
      "cluster.routing.allocation.exclude._ip" : "10.0.0.1"
   }
}';echo

이렇게하면 Elasticsearch가 클러스터 상태가 노란색 또는 빨간색으로 변경되지 않고 해당 노드의 샤드를 나머지 노드에 할당합니다 (복제 0이 있더라도).

모든 샤드가 재 할당되면 노드를 종료하고 필요한 모든 작업을 수행 할 수 있습니다. 완료되면 할당 할 노드를 포함하면 Elasticsearch가 샤드의 균형을 다시 조정합니다.


클러스터에서 elasticsearch 노드를 제거하려면 다음 명령을 실행하십시오.

curl -XPUT P.P.P.P:9200/_cluster/settings -H 'Content-Type: application/json' -d '{
  "transient" :{
      "cluster.routing.allocation.exclude._ip" : "X.X.X.X"
   }
}';echo

다음 P.P.P.P은 마스터 노드의 비공개 IP입니다 . localhostElasticsearch가 .NET에서 실행중인 경우 사용할 수도 있습니다 localhost. X.X.X.X클러스터에서 제거 할 노드의 개인 IP입니다.

이 명령은 acknowledgement true노드 제거가 승인되고 데이터 재배치가 시작되는지 여부 를 제공 합니다. 데이터 재배치가 끝났고 노드에 elasticsearch프로세스와 stop/terminate인스턴스를 중지 하는 것보다 조각이 남아 있지 않은지 확인하십시오 . 데이터 재배치 및 남은 샤드를 확인하는 명령은 이 문서 에서 찾을 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/17268495/how-to-remove-node-from-elasticsearch-cluster-on-runtime-without-down-time

반응형