Elasticsearch 8.x 설치 및 Cluster구성하기
Elasticsearch는 실시간 분산 검색 및 분석 엔진으로, 대용량 데이터를 효율적으로 저장, 검색, 분석할 수 있는 오픈소스 도구입니다.
Apache Lucene 라이브러리를 기반으로 구축되었으며, 주로 풀텍스트 검색, 로그 분석, 애플리케이션 모니터링 등의 용도로 사용됩니다.
본 글에서는 Elasticsearch 아카이브 (.tar.gz) 설치 및 클러스터 구성방법에 대해서 소개합니다.
Elasticsearch 설치
설치환경 및 Elasticsearch 버전
- OS: Ubuntu 24.04 LTS
- Elasticsearch: 8.17.2
클러스터 구성을 위해 다음과 같이 3대의 VM을 준비합니다.
No. | host name | IP |
---|---|---|
#1 | es-node1 | 192.168.234.128 |
#2 | es-node2 | 192.168.234.129 |
#3 | es-node3 | 192.168.234.130 |
아카이브 다운로드 및 설치
먼저 Elasticsearch 아카이브를 다운로드한 후, 압축을 해제하여 설치 디렉토리로 이동합니다.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.2-linux-x86_64.tar.gz
tar -xzf elasticsearch-8.17.2-linux-x86_64.tar.gz
sudo mv elasticsearch-8.17.2 /opt/elasticsearch
cd /opt/elasticsearch
사용자 생성 및 권한 설정
ES 서비스 계정을 생성하고 Elasticsearch 디렉토리의 소유권을 해당 사용자로 변경합니다.
sudo adduser elastic
sudo passwd elastic
sudo chown -R elastic:elastic /opt/elasticsearch
Systemd 서비스 설정
/etc/systemd/system/elasticsearch.service
파일을 생성하여 Elasticsearch를 서비스로 등록합니다.
sudo vim /etc/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch
After=network.target
[Service]
User=elastic
Group=elastic
ExecStart=/opt/elasticsearch/bin/elasticsearch
Restart=always
LimitMEMLOCK=infinity
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
방화벽 설정
Elasticsearch 및 Kibana에서 사용하는 포트를 방화벽에서 허 용합니다.
sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --permanent --add-port=9300/tcp
sudo firewall-cmd --permanent --add-port=5601/tcp # Kibana 연동 시
sudo firewall-cmd --reload
Elasticsearch 클러스터 구성
인증서 생성 및 배포
클러스터 간 보안 통신을 위해 SSL/TLS 인증서를 생성하고 각 노드에 배포합니다.
임의의 노드에서 CA 인증서를 생성:
sudo -u elastic ./bin/elasticsearch-certutil ca
sudo -u elastic ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
생성된 elastic-certificates.p12
파일을 각 노드의 /opt/elasticsearch/config
디렉토리에 복사합니다.
sudo -u elastic scp elastic-certificates.p12 elastic@192.168.234.129:/opt/elasticsearch/config
sudo -u elastic scp elastic-certificates.p12 elastic@192.168.234.130:/opt/elasticsearch/config
sudo mv elastic-certificates.p12 config/elastic-certificates.p12
elasticsearch.yml 편집
각 노드별로 고유의 node.name
을 지정하고, 클러스터 관련 설정을 추가합니다.
sudo vim /opt/elasticsearch/config/elasticsearch.yml
- es-node1
- es-node2
- es-node3
cluster.name: es-cluster
node.name: node-1
network.host: 0.0.0.0
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs
# 클러스터 노드 IP 목록
discovery.seed_hosts: ["192.168.234.128", "192.168.234.129","192.168.234.130"]
# 클러스터 내구성을 위한 마스터 자격 노드 지정 (최초 구성 후 주석 처리 필수)
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# SSL/TLS 설정
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
cluster.name: es-cluster
node.name: node-2
network.host: 0.0.0.0
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs
# 클러스터 노드 IP 목록
discovery.seed_hosts: ["192.168.234.128", "192.168.234.129","192.168.234.130"]
# 클러스터 내구성을 위한 마스터 자격 노드 지정 (최초 구성 후 주석 처리 필수)
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# SSL/TLS 설정
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
cluster.name: es-cluster
node.name: node-3
network.host: 0.0.0.0
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs
# 클러스터 노드 IP 목록
discovery.seed_hosts: ["192.168.234.128", "192.168.234.129","192.168.234.130"]
# 클러스터 내구성을 위한 마스터 자격 노드 지정 (최초 구성 후 주석 처리 필수)
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# SSL/TLS 설정
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
주의:
cluster.initial_master_nodes
설정은 최초 클러스터 구성 시에만 필요하며, 이후에는 주석 처리해야 합니다. (Bootstrapping a cluster 참고)
클러스터 구동 및 상태 확인
각 노드에서 Elasticsearch 서비스를 시작한 후, 클러스터 상태를 확인합니다.
서비스 시작:
sudo systemctl start elasticsearch
elastic
계정의 비밀번호를 재설정합니다.
sudo bin/elasticsearch-reset-password -u elastic -i
노드 상태 확인:
curl -u elastic:your_pass http://192.168.234.128:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.234.130 19 89 88 1.30 0.80 0.37 cdfhilmrstw - node-3
192.168.234.129 24 89 9 0.29 0.17 0.13 cdfhilmrstw - node-2
192.168.234.128 10 90 17 0.00 0.00 0.00 cdfhilmrstw * node-1
클러스터 상태 확인:
curl -u elastic:your_pass http://192.168.234.128:9200/_cluster/health?pretty
{
"cluster_name" : "es-cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 3,
"active_shards" : 6,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"unassigned_primary_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
Kibana 연동
디폴트로 elastic
슈퍼유저 계정은 Kibana에서 사용할수 없으며, kibana전용 built-in 계정 kibana_system
을 사용합니다.
비밀번호 설정:
cd /opt/elasticsearch
sudo bin/elasticsearch-reset-password -u kibana_system -i
Kibana 설치
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.17.2-linux-x86_64.tar.gz
tar -xzf kibana-8.17.2-linux-x86_64.tar.gz
sudo mv kibana-8.17.2 /opt/kibana
kibana.yml 편접
sudo vim /opt/kibana/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.234.128:9200","http://192.168.234.129:9200","http://192.168.234.130:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "your_pass"
Kibana 구동
cd /opt/kibana
nohup bin/kibana &
이제 웹 브라우저에서 http://192.168.234.128:5601 (또는 Kibana를 설치한 노드의 IP 주소)에 접속하여 elastic
계정으로 로그인합니다.

오늘은 Elasticsearch와 Kibana를 간단히 설치하고 클러스터를 구성하는 방법을 살펴보았습니다.
아카이브 설치 방식은 설치와 관리가 쉬워 다양한 환경에서 유용하게 사용할 수 있습니다. 도움이 되길 바랍니다.