Elasticsearch cluster,node 정의 및 replica 시스템 설정
posted on 10 Jun 2020 under category note
참조
Elasticsearch를 사용 전 Cluster와 Node에 개념에 대해 이해가 필요합니다.
위의 이미지를 살펴보시면 클러스터는 여러 노드를 포함하고 있는 Elasticsearch system에 가장 큰 단위 입니다.
하나의 클러스터는 다수의 노드로 구성되어 있습니다.
하나의 클러스터는 다수의 서버로 바인딩하여 운영하거나 하나의 서버에서 다수의 클러스터를 운영 할 수 있습니다.
하나의 클러스터와 두개의 데이터 노드를 구성해 데이터 shard를 확인해 보겠습니다.
노드와 샤드에 대해 아래 블로그를 참조하시면 좋습니다.
https://brownbears.tistory.com/4
cluster.name: elastic-jun0
node.name: es-node-1
node.master: true
node.data: true
network.host: 10.0.0.73
http.host: 0.0.0.0
cluster.initial_master_nodes: ["10.0.0.73"]
cluster.name: elastic-jun0
node.name: es-node-2
node.master: false
node.data: true
network.host: 10.0.1.237
http.host: 0.0.0.0
discovery.seed_hosts: ["10.0.0.73:9300"]
- 마스터노드 설정과 크게 다르지 않으며\, master노드로 사용하지 않기때문에 false로 설정합니다.
- elasticsearch의 index에는 3가지의 상태가 있습니다.
Yellow 상태는 Primary shard는 준비가 되었으나, Replica shard가 준비되어 있지 않다! 라는 뜻 입니다.
Replica shard가 없으면 Yellow라는 것은, 필요한 이유가 있기 때문인데 그 것이 무엇일까?
1. 장애 복구 (fail-over) : 동일한 데이터를 나눠서 가지고 있기 때문에 하나의 노드에 문제가 생겨도\, replica shard가 primary shard로 교체가 됩니다.
2. 검색 성능 : replica shard도 읽기 요청을 처리할 수 있기 때문에 replica가 많아질 경우 검색 성능이 증가하지만\, 하드웨어를 더 추가해야만 증가한다고 합니다.
근데 node가 하나라면 복제를 할 수 없다는 점입니다. 기본적으로 elasticsearch는 같은 노드에 동일한 데이터를 가지는 shard를 저장할 수 없습니다.
[root@ip-10-0-0-73 system]# curl -XGET 'localhost:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana_task_manager_1 nbB6TrJeRZGI9mQ_zjNQfA 1 1 2 1 37.9kb 37.9kb
green open .apm-agent-configuration GW4jgi71RHWaqzXdvpJ4Xw 1 1 0 0 566b 283b
yellow open apm-7.5.0-metric-000001 X5IP6E_VT-atjVi7lwp2Iw 1 1 816 0 389.1kb 194.5kb
green open apm-7.5.0-transaction-000001 WSDY2YYqTCmhQ1c26vEgWQ 1 1 11 0 361.5kb 180.7kb
green open apm-7.5.0-span-000001 tKBmS5P0S1-X9EWTFIndLA 1 1 0 0 566b 283b
green open apm-7.5.0-error-000001 CHRZoZa5RZqxO7CcCl8ItQ 1 1 0 0 566b 283b
yellow open .kibana_1 c-snxIxlTV-5TLLTK2Lr0g 1 1 947 36 969kb 969kb
green open apm-7.5.0-onboarding-2020.01.02 VcWeYnn7RvmVunpoY9a0Ag 1 1 2 0 25.1kb 12.5kb
green open metricbeat-7.5.0-2019.12.17-000001 gYXMipKcSFiNwRCDUp-27A 1 1 194030 0 83.3mb 41.6mb
[root@ip-10-0-0-73 system]# curl -XGET 'localhost:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .kibana_task_manager_1 nbB6TrJeRZGI9mQ_zjNQfA 1 1 2 1 75.8kb 37.9kb
green open .apm-agent-configuration GW4jgi71RHWaqzXdvpJ4Xw 1 1 0 0 566b 283b
green open apm-7.5.0-metric-000001 X5IP6E_VT-atjVi7lwp2Iw 1 1 816 0 389.1kb 194.5kb
green open apm-7.5.0-span-000001 tKBmS5P0S1-X9EWTFIndLA 1 1 0 0 566b 283b
green open apm-7.5.0-transaction-000001 WSDY2YYqTCmhQ1c26vEgWQ 1 1 11 0 361.5kb 180.7kb
- 여러 노드로 replica되면 index health상태가 green으로 변경되는 것을 확인할 수 있습니다.
replication error 에러
[1]: the default discovery settings are unsuitable for production use;
at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured