메모리
CPU
디스크
하드웨어 통일
각 노드들의 하드웨어 성능을 통일하는 것이 좋다.
하드웨어 성능이 통일하지 않다면→ 웜노드, 콜드 노드를 구분해 서로 다른 타입의 노드끼리는 동일 인덱스를 공유하지 않게 한다.
마스터 노드 - 관리해야 하는 클러스터의 규모에 따라
코디네이팅 노드 - 예상되는 API 요청량에 따라
인제스트 노드 - 예상되는 인덱싱 요청량과 파이프라인의 복잡도에 따라
적절한 하드웨어를 선택한다.
스냅샷 처리
cluster.name: 클러스터의 이름 지정. 같은 클러스터로 묶기 위해서는 반드시 클러스터 명을 통일해야 하고, 다른 클러스터와의 간섭을 방지하기 위해 고유한 명칭을 지정한다.
node.name: 노드의 이름 지정. 단일 클러스터 안에서 반드시 노드마다 다른 명칭이 부여돼야 한다.
network.host: 노드가 배포될 네트워크 호스트를 지정한다. 일반적인 IPv4, IPv6 주소 외에도 local, site, global 값을 이용해 각각 로컬, 내부, 외부 네트워크를 자동으로 지정할 수 있다.
http.port: HTTP통신에 사용할 포트를 지정한다. ES 의 REST API에 접근하기 위한 포트.
transport.port: 트랜스포트 계층 통신에 사용할 포트를 지정한다. 클러스터 내부에서 노드끼리 통신할 때 사용되는 포트이므로 별도의 외부 클라이언트가 접근할 필요가 없는 포트다.
discovery.seed_hosts: 클러스터 구성을 위해서 다른 노드를 발견해야 한다. seed_hosts는 이때 사용되는 상대 노드 주소들이다.
(단지 클러스터 구성을 위한 시드일 뿐이므로 모든 노드의 주소를 등록할 필요는 없다. 마스터 노드가 없다면 클러스터링이 이뤄지지 않으므로 마스터 후보 노드들만 등록해두면 충분하다.) 내부 통신이기 때문에 주소 뒤에 트랜스포트 포트를 적어줘야 한다.
cluster.initial_master_nodes: 클러스터 최초 구성 시에만 사용되는 설정으로, 초기 마스터 후보 노드들이 클러스터를 이루면 이후 노드가 추가/이탈 됨에 따라 내부적으로 마스터 후보 노드 정보를 관리하게 된다. 이 설정에 들어가는 내용은 호스트 주소가 아니라 node.name이어야 한다.