Elasticsearch의 노드들은 클라이언트와의 통신을 위한 http port(9200~9299), 노드 간의 데이터 교환을 위한 tcp port(9300~9399) 총 2개의 네트워크 통신을 열어두고 있음
일반적으로 1개의 물리 서버마다 하나의 노드를 실행하는 것을 권장
3개의 다른 물리 서버에서 각각 1개 씩의 노드를 실행하면 각 클러스터는 다음과 같이 구성됨
하나의 물리적인 서버 안에서 여러 개의 노드를 실행하는 것도 가능
이 경우에는 각 노드들은 차례대로 9200, 9201, … 순으로 포트를 사용하게 됨
클라이언트는 9200, 9201 등의 포트를 통해 원하는 노드와 통신을 할 수 있음
만약에 서버1에 두 개의 노드를 실행하고, 또 다른 서버에서 한 개의 노드를 실행시키면 클러스터는 다음과 같이 구성 됨
서버 1에는 두 개의 노드가 있기 때문에 서버 1의 두 번째 노드의 http, tcp port가 각각 9201, 9301로 실행 됨
물리적인 구성과 상관 없이 여러 노드가 하나의 클러스터로 묶이기 위해서는 클러스터명 cluster.name 설정이 묶여질 노드들 모두 동일해야 함
같은 서버나 네트워크망 내부에 있다 하더라도 cluster.name 이 동일하지 않으면 논리적으로 서로 다른 클러스터로 실행이 되고, 각각 별개의 시스템으로 인식
하나의 물리 서버에 3개의 노드를 실행시킨다고 가정
노드들의 이름은 각각 node-1, node-2, node-3 이고 node-1과 node-2의 클러스터 명은 es-cluster-1, node-3의 클러스터 명은 es-cluster-2로 실행
각 이름 설정은 config/elasticsearch.yml 파일에서 입력
# config/elasticsearch.yml
cluster.name: es-cluster-1
node.name: "node-1"
또는 다음과 같이 실행 커맨드를 이용해서 설정도 가능
$ bin/elasticsearch -E cluster.name=es-cluster-1 -E node.name=node-1