IT/ElasticSearch

Elasticsearch 클러스터 구성 및 확인 방법 | 1대 서버 멀티 노드 예제로 쉽게 정리

PARK_90 2022. 8. 3. 15:45
300x250

Elasticsearch를 어느 정도 공부하다 보면 개념만 아는 단계에서 꼭 막히는 지점이 있습니다. 바로 클러스터를 실제로 어떻게 구성하고, 정상 동작을 어떻게 확인하느냐입니다.

특히 처음에는 단일 노드 실행은 해봤어도, 여러 노드를 같은 클러스터로 묶고 health, nodes, indices 상태를 어디서 확인해야 하는지 흐름이 잘 안 잡히는 경우가 많습니다.

이번 글은 바로 그 검색 의도에 맞춰 정리합니다. 즉 “Elasticsearch 클러스터를 실제로 띄우는 방법”, “1대 서버에서 멀티 노드로 테스트하는 방법”, “정상 동작 여부를 어떤 명령어로 확인하는지”를 한 번에 볼 수 있게 구성합니다.

  • Elasticsearch 클러스터를 어떻게 실행할까?
  • 한 서버에서 여러 노드를 띄울 수 있을까?
  • cluster health, nodes, indices는 어떻게 확인할까?
  • 실전에서는 어떤 식으로 점검해야 할까?
핵심 요약
클러스터 구성은 같은 cluster.name을 공유하는 여러 노드를 실행하는 것부터 시작합니다.
멀티 노드 테스트는 1대 서버에서도 포트만 다르게 주면 가능합니다.
정상 확인은 health, nodes, indices, stats API를 순서대로 보면 됩니다.
핵심은 실행보다 ‘정상적으로 묶였는지 확인하는 습관’까지 같이 갖추는 것입니다.
쉬운 정의
클러스터 구성은 여러 노드를 하나의 검색 시스템으로 묶는 작업입니다.

Elasticsearch 클러스터 구성은 여러 노드가 같은 클러스터 이름 아래에서 함께 동작하도록 만드는 과정입니다.

초보자 기준에서는 아주 단순하게 이렇게 보면 됩니다.

  • 노드 여러 개를 실행한다.
  • 같은 cluster.name을 준다.
  • 서로 통신하게 만든다.
  • health와 nodes API로 정상 묶였는지 확인한다.

즉 핵심은 “노드를 여러 개 띄우는 것” 자체보다, 그 노드들이 정말 같은 클러스터로 묶여 동작하는지 확인하는 것입니다.

클러스터 구성은 Elasticsearch 여러 노드를 ‘같은 팀’으로 동작하게 만드는 작업입니다.
728x90
비교/구조
먼저 실행 흐름을 구조로 보면 전체가 쉽게 잡힙니다.

기본 흐름은 아래와 같습니다.

노드 1 실행
노드 2 실행
노드 3 실행
      ↓
같은 cluster.name으로 묶임
      ↓
클러스터 health 확인
      ↓
nodes / indices / stats 확인

1대 서버에서 멀티 노드를 띄우는 테스트 구조는 보통 이런 식입니다.

node1 → http 9200 / transport 9300
node2 → http 9201 / transport 9301
node3 → http 9202 / transport 9302

즉 포트만 분리하면 같은 서버에서도 멀티 노드 클러스터 테스트가 가능합니다.

구분 단일 노드 멀티 노드 클러스터
구성 노드 1개 노드 여러 개
장점 설정이 단순함 분산 구조와 운영 흐름을 더 현실적으로 테스트 가능
확인 포인트 실행 여부 health, nodes, indices, stats까지 확인 필요
한 줄 포인트
Elasticsearch 클러스터 테스트는 노드 실행 + 같은 cluster.name + 상태 확인 API 점검 이 3단계로 기억하면 됩니다.
예시
1대 서버 멀티 노드 테스트 예시로 보면 가장 이해가 쉽습니다.

예시 1. 노드 3개 실행

Elasticsearch가 실행되려면 먼저 Java 환경이 준비되어 있어야 합니다. 이후 같은 서버에서 포트만 다르게 주고 노드를 여러 개 실행할 수 있습니다.

# Node1 (9200/9300)
bin/elasticsearch -Ecluster.name=es-cluster -Enode.name=node1

# Node2 (9201/9301)
bin/elasticsearch -Ecluster.name=es-cluster -Enode.name=node2 -Ehttp.port=9201 -Etransport.port=9301

# Node3 (9202/9302)
bin/elasticsearch -Ecluster.name=es-cluster -Enode.name=node3 -Ehttp.port=9202 -Etransport.port=9302

초보자가 여기서 많이 놓치는 부분은 노드 이름만 다르게 주는 것으로 끝이 아니라, 포트도 충돌 없이 분리해야 한다는 점입니다.

예시 2. 백그라운드 실행

테스트나 운영에서 계속 포그라운드로 띄워두기 어렵다면 백그라운드 실행 스크립트를 사용할 수 있습니다.

echo 'bin/elasticsearch -d -Ecluster.name=es-cluster -Enode.name=node1 -p es_node1.pid' > elasticstart_1.sh
echo 'kill $(cat es_node1.pid)' > elasticstop_1.sh
chmod 755 elasticstart_1.sh elasticstop_1.sh

실행과 종료는 이렇게 확인할 수 있습니다.

./elasticstart_1.sh
ps -ef | grep elasticsearch

./elasticstop_1.sh
ps -ef | grep elasticsearch

기존 글에는 kill cat es_node1.pid처럼 오타에 가까운 예시가 있었는데, 실제로는 kill $(cat es_node1.pid) 형태가 맞습니다.

실무 포인트
실행보다 중요한 건 ‘정상 동작을 어떻게 판단하느냐’입니다.

클러스터가 정상인지 확인할 때는 아래 순서로 보면 실수가 줄어듭니다.

  1. 루트 응답 확인
curl http://localhost:9200/
  1. 클러스터 health 확인
curl http://localhost:9200/_cat/health?v&pretty
  1. 노드 목록 확인
curl http://localhost:9200/_cat/nodes?v
  1. 인덱스 목록 확인
curl http://localhost:9200/_cat/indices?v
  1. 상세 통계 확인
curl http://localhost:9200/_nodes/stats?pretty

즉 운영 관점에서는 실행 자체보다, health → nodes → indices → stats 순서로 보는 습관이 더 중요합니다.

초보자가 꼭 체크할 포인트
  • 같은 cluster.name을 줘야 같은 클러스터로 묶입니다.
  • 같은 서버에서 여러 노드를 띄울 땐 http/transport 포트 분리가 필요합니다.
  • 노드 실행 후에는 health와 nodes API로 정상 합류 여부를 꼭 확인해야 합니다.
  • 실행 스크립트는 편하지만, PID 종료 방식은 정확히 써야 합니다.
FAQ
  • Q. 1대 서버에서도 클러스터 테스트가 가능한가요?
    → 가능합니다. 포트만 분리해서 여러 노드를 실행하면 멀티 노드 클러스터처럼 테스트할 수 있습니다.
  • Q. 클러스터가 제대로 묶였는지는 어떻게 확인하나요?
    → `_cat/health`, `_cat/nodes`, `_cat/indices`, `_nodes/stats` 순서로 확인하면 됩니다.
  • Q. 운영 환경도 이 방식으로 그대로 구성하나요?
    → 테스트용으로는 좋지만, 운영 환경은 보통 실제로 서버를 분리하고 노드 역할과 리소스를 함께 설계합니다.

결론
클러스터 구성은 실행보다 확인까지 포함해서 이해해야 합니다.

Elasticsearch 클러스터 구성은 단순히 노드 2~3개를 띄우는 작업이 아닙니다.

  • 같은 클러스터로 묶이고
  • 서로 정상 통신하고
  • health와 nodes 상태가 기대대로 보이는지까지

확인해야 비로소 “구성했다”고 볼 수 있습니다.

처음에는 1대 서버 멀티 노드 예제로 충분합니다. 다만 운영으로 갈수록 노드 역할 분리, 리소스 설계, 샤드 전략까지 함께 봐야 완성도가 높아집니다.

Elasticsearch 클러스터 구성은 노드 실행 자체보다, 같은 클러스터로 정상 동작하는지 확인하는 과정까지 포함해서 이해해야 합니다.

※ 이 글은 Elasticsearch 클러스터 구성과 확인 흐름을 쉽게 설명하기 위한 입문 가이드입니다. 실제 운영 환경에서는 discovery 설정, seed hosts, 마스터 선출, 보안 설정, 버전별 구성 차이까지 함께 고려해야 합니다.

728x90