본문으로 바로가기

ElasticSearch Cluster 샤드 이동 후 노드 제거

category ELK 2022. 11. 21. 14:08
반응형

운영 중인 ElasticSearch에 노드를 제거하는 작업이 있어 해당 내용 정리해보려고 합니다.
노드를 제거하는 작업은 종종 있습니다. 
1. docker 재시작이 필요한 경우
2. ElasticSearch가 설치된 서버에 이상이 있는 경우
3. scale up을 하기 위해 추가했던 노드가 큰 효과가 없어서 다시 제거하는 경우

노드가 제거되면 ElasticSearch 자체에서 shard initializing을 시작하고 가지고 있던 replica를 primary 샤드로 자기 복제 등을 해서 안정적으로 자동 처리해주는 걸로 알고 있습니다. 이 과정 중에서 CPU Usage, Load Average 값이 치솟고 ElasticSearch 조회 서비스에서 지연이 발생하거나 색인 시에도 오류가 발생하거나 예기치 않는 오류가 발생할 수 있습니다. 그래서 노드를 제거하기 전에 지연과 오류를 최대한 막기 위해 샤드를 옮기고 제거하거나 샤드 이동이 필요 없는 경우에는 불필요한 샤드 이동을 막거나 하는 선 작업이 필요합니다.

 

테스트

2022.07.12 - [docker] - Docker + Elasticsearch, Kibana 구성 (cluster)

 

Docker + Elasticsearch, Kibana 구성 (cluster)

docker-elk-setting GitHub - lgm3555/docker-elk-setting: docker-elk-setting docker-elk-setting. Contribute to lgm3555/docker-elk-setting development by creating an account on GitHub. github.com 구성 1. node는 총 3개 구성 2. node1, node2는 master nod

1995-dev.tistory.com

 

샤드 이동 후 노드 제거

모든 샤드 상태 확인

  • es1, es2 노드 다 같이 존재
http://localhost:9200/_cat/shards

.monitoring-es-7-2022.11.11        0 r STARTED   3234   2.4mb 172.19.0.2 es2
.monitoring-es-7-2022.11.11        0 p STARTED   3234   2.7mb 172.19.0.3 es1
.monitoring-kibana-7-2022.11.08    0 p STARTED   5407   1.1mb 172.19.0.2 es2
.monitoring-kibana-7-2022.11.08    0 r STARTED   5407   1.1mb 172.19.0.3 es1
.monitoring-kibana-7-2022.11.11    0 p STARTED    145 172.3kb 172.19.0.2 es2
...

 

es2 노드 제거하기

  • _name : 노드 이름
  • _ip : 노드 IP
  • _host : 노드 호스트명

명령어 실행

PUT _cluster/settings
{
  "transient": {
    "cluster": {
      "routing": {
        "allocation.exclude": {
          "_name": "es2"
        }
      }
    }
  }
}

 

키바나 스택 모니터링

  • 샤드 이동

 

모든 샤드 상태 확인

  • es1 노드에만 존재
http://localhost:9200/_cat/shards

ilm-history-2-000001            0 p STARTED               172.19.0.3 es1
.monitoring-es-7-2022.11.11     0 p STARTED  3234   2.7mb 172.19.0.3 es1
.monitoring-kibana-7-2022.11.08 0 p STARTED  5407   1.1mb 172.19.0.3 es1
.apm-custom-link                0 p STARTED     0    208b 172.19.0.3 es1
.monitoring-es-7-2022.11.21     0 p STARTED  2495   2.6mb 172.19.0.3 es1
...

 

es2 노드 Shards Count 0

 

클러스터 내 샤드 할당 기능 비활성화

명령어 실행

#샤드 움직이지 않게
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "none"
  }
}

{
  "acknowledged" : true,
  "persistent" : {
    "cluster" : {
      "routing" : {
        "allocation" : {
          "enable" : "none"
        }
      }
    }
  },
  "transient" : { }
}

 

노드 제거 후 키바나 스택 모니터링

  • 샤드 이동 없음.

클러스터 내 샤드 할당 기능 활성화

명령어 실행

#샤드 움직일 수 있게
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}

{
  "acknowledged" : true,
  "persistent" : { },
  "transient" : { }
}

 

노드 재시작 후 키바나 스택 모니터링

  • 샤드 이동.

샤드 재배치 완료

  •  status 상태 green

반응형