본문 바로가기

여러가지/구축 & 설치

[ELK Stack] elasticsearch.yml

● 전체 예시

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster  # 클러스터 이름

※ 동일한 클러스터에 속한 모든 노드가 동일한 클러스터 이름을 가져야 합니다.

node.name: node-1  # 노드 이름

node.data: true  # 노드의 데이터 저장 여부

node.master: true # 마스터 노드 여부

path.data: /var/lib/elasticsearch  # Elasticsearch 데이터 저장될 디렉토리 경로

path.logs: /var/log/elasticsearch  #  Elasticsearch 로그 파일 저장될 디렉토리 경로

network.host: 0.0.0.0  # Elasticsearch가 바인딩할 네트워크 인터페이스

http.port: 9200  # Elasticsearch HTTP 서버 포트

discovery.seed_hosts: ["host1", "host2"]  # 클러스터의 다른 노드를 발견하기 위한 초기 목록

cluster.initial_master_nodes: ["node-1"]  # 클러스터 처음 시작할 때 마스터 노드로 사용할 노드의 초기 목록

※ discovery.seed_hosts, cluster.initial_master_nodes을 통해 클러스터의 다른 노드를 발견하고 클러스터를 형성합니다.

index.number_of_shards: 1  # 새로 생성되는 인덱스의 기본 샤드 수
index.number_of_replicas: 1  # 새로 생성되는 인덱스의 기본 복제본 수

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

  elasticsearch 클러스터는 여러 노드로 구성될 수 있으며, 각 노드는 서로 다른 역할을 할 수 있습니다.

 

(1) 마스터 전용 노드

: 클러스터 상태와 메타데이터 관리에만 집중하도록 설정된 노드

node.master: true
node.data: false
node.ingest: false

 

(2) 데이터 전용 노드

: 데이터를 저장하고 검색 요청을 처리하는 노드

node.master: false
node.data: true

 

(3) 혼합 노드

: 마스터 역할과 데이터 역할을 모두 수행할 수 있는 노드 

node.master: true
node.data: true

 

 elasticsearch 클러스터는 하나의 서버에서 단일 노드를 실행할 수도 있고, 여러 노드를 동시에 실행할 수도 있으며, 여러 서버에 분산하여 다수의 노드를 실행함으로써 하나의 클러스터를 구성할 수도 있습니다. 이를 통해 데이터 안정성, 부하 분산, 유연한 확장성, 고가용성을 실현합니다.

 

(예시 1) 하나의 서버에 하나의 노드만 실행

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster
node.name: node-1

node.master: true
node.data: true

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
#discovery.seed_hosts: ["localhost"]
cluster.initial_master_nodes: ["node-1"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

(예시 2) 하나의 서버에 두개의 노드 실행

(1) 파일 설정

# vi /etc/elasticsearch/elasticsearch-node1.yml

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster
node.name: node-1
path.data: /var/lib/elasticsearch/node1/data
path.logs: /var/log/elasticsearch/node1/logs
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
node.master: true
node.data: true
discovery.seed_hosts: ["localhost:9301"]

  각 노드는 동일한 서버에서 실행되기 때문에, 서로 다른 HTTP 및 Transport 포트를 사용하여 충돌을 피합니다.
cluster.initial_master_nodes: ["node-1", "node-2"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

# vi /etc/elasticsearch/elasticsearch-node2.yml

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster
node.name: node-2
path.data: /var/lib/elasticsearch/node2/data
path.logs: /var/log/elasticsearch/node2/logs
network.host: 0.0.0.0
http.port: 9201
transport.port: 9301
node.master: true
node.data: true
discovery.seed_hosts: ["localhost:9300"]
cluster.initial_master_nodes: ["node-1", "node-2"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

(2) 디렉토리 구조 설정

/var/lib/elasticsearch/node1/data
/var/lib/elasticsearch/node2/data
/var/log/elasticsearch/node1/logs
/var/log/elasticsearch/node2/logs

※ 각 노드는 서로 다른 HTTP 및 트랜스포트 포트를 사용하여 충돌을 피하고,

같은 클러스터에 속하지만 서로 다른 데이터 및 로그 디렉토리를 사용합니다. 

 

(3) 실행

./bin/elasticsearch -Epath.config=/path/to/elasticsearch-node1.yml

./bin/elasticsearch -Epath.config=/path/to/elasticsearch-node2.yml

 

(예시 3) 여러 서버에 각각 하나 이상의 노드 실행

(1) 파일 설정

(서버 1)

# vi /etc/elasticsearch/elasticsearch-node[1/2].yml

-----------------------------------------------------------------------------------------------------------------------------------------------------------------cluster.name: my-cluster
node.name: server1-node1
path.data: /var/lib/elasticsearch/node1/data
path.logs: /var/log/elasticsearch/node1/logs
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
node.master: true
node.data: true
discovery.seed_hosts: ["server1:9300", "server2:9300", "server3:9300"]
cluster.initial_master_nodes: ["server1-node1", "server2-node1", "server3-node1"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster
node.name: server1-node2
path.data: /var/lib/elasticsearch/node2/data
path.logs: /var/log/elasticsearch/node2/logs
network.host: 0.0.0.0
http.port: 9201
transport.port: 9301
node.master: false
node.data: true
discovery.seed_hosts: ["server1:9300", "server2:9300", "server3:9300"]

※ 각 서버의 노드 1만 발견합니다.

cluster.initial_master_nodes: ["server1-node1", "server2-node1", "server3-node1"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

discovery.seed_hosts: ["server1:9300", "server1:9301", "server2:9300", "server2:9301", "server3:9300", "server3:9301"]

※ 각 서버의 모든 노드 발견합니다.

 

(서버 2)

# vi /etc/elasticsearch/elasticsearch-node[1/2].yml

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster
node.name: server2-node1
path.data: /var/lib/elasticsearch/node1/data
path.logs: /var/log/elasticsearch/node1/logs
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
node.master: true
node.data: true
discovery.seed_hosts: ["server1:9300", "server2:9300", "server3:9300"]
cluster.initial_master_nodes: ["server1-node1", "server2-node1", "server3-node1"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster
node.name: server2-node2
path.data: /var/lib/elasticsearch/node2/data
path.logs: /var/log/elasticsearch/node2/logs
network.host: 0.0.0.0
http.port: 9201
transport.port: 9301
node.master: false
node.data: true
discovery.seed_hosts: ["server1:9300", "server2:9300", "server3:9300"]
cluster.initial_master_nodes: ["server1-node1", "server2-node1", "server3-node1"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

(서버 3)

# vi /etc/elasticsearch/elasticsearch-node[1/2].yml

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster
node.name: server3-node1
path.data: /var/lib/elasticsearch/node1/data
path.logs: /var/log/elasticsearch/node1/logs
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
node.master: true
node.data: true
discovery.seed_hosts: ["server1:9300", "server2:9300", "server3:9300"]
cluster.initial_master_nodes: ["server1-node1", "server2-node1", "server3-node1"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

cluster.name: my-cluster
node.name: server3-node2
path.data: /var/lib/elasticsearch/node2/data
path.logs: /var/log/elasticsearch/node2/logs
network.host: 0.0.0.0
http.port: 9201
transport.port: 9301
node.master: false
node.data: true
discovery.seed_hosts: ["server1:9300", "server2:9300", "server3:9300"]
cluster.initial_master_nodes: ["server1-node1", "server2-node1", "server3-node1"]

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

(2) 디렉토리 구조 설정

(모든 서버)

/var/lib/elasticsearch/node1/data
/var/lib/elasticsearch/node2/data
/var/log/elasticsearch/node1/logs
/var/log/elasticsearch/node2/logs

 

(3) 실행

(모든 서버)

./bin/elasticsearch -Epath.config=/path/to/elasticsearch-node1.yml

./bin/elasticsearch -Epath.config=/path/to/elasticsearch-node2.yml

'여러가지 > 구축 & 설치' 카테고리의 다른 글

[실습] LVM (Logical Volume Manager)  (0) 2024.05.29
[ELK Stack] logstash.conf, filebeat.yml  (0) 2024.05.29
[ELK Stack] .repo  (0) 2024.05.29
[실습] ELK Stack  (0) 2024.05.28
[Linux] 캐시 삭제  (0) 2024.04.25