본문 바로가기

ELK스택

[Elasticsearch] 클러스터 구성

이번 글에서는 3가지를 정리해 보려고 합니다.

  • 클러스터 아키텍처 구성도(현재(단일) -> 학습(여러개))
  • 추가 노드를 위한 VM인스턴스 생성 및 방화벽 설정
  • 3개의 노드로 클러스터 구성

참고로 클러스터 아키텍처를 구성하는데 아래 영상을 참고하였습니다.

https://www.youtube.com/watch?v=LM5IqDTWN60&list=PLhFRZgJc2afp0gaUnQf68kJHPXLG16YCf&index=8 

 

클러스터 아키텍처 구성도(현재(단일) -> 학습(여러개))

아래 그림은 클라이언트가 elastic이라는 태그로 9200번 포트를 열고 filter IP를 0.0.0.0/0으로 설정하여 외부 어느곳에서 접근 가능하도록 설정을 한 방화벽을 통해 elastic-1호스트에 접근할 수 있는 클러스터 구성도 입니다.

 

오늘 공부하려고 하는 클러스터 구성도는 2개의 elastic을 더 띄어서 그 안에 각각의 노드를 만들고, 노드들이 바인딩이 될 수 있도록 9300포트를 열고, 각 노드들이 통신을 할 수 있도록 elastic-internal 방화벽을 하나 더 생성하려고 합니다.

 

추가 노드를 위한 VM 인스턴스 생성 및 방화벽 설정

인스턴스 생성 및 방화벽 설정은 위에 youtube링크에 잘 설명되어 있으니 그걸 보고 따라하시면 될 것 같습니다.

 

3개의 노드로 클러스터 구성

인스턴스 생성 및 방화벽 설정까지 완료가 되었으면 아래 이미지처럼 3개의 인스턴스가 보일 겁니다.

이제 생성된 각각의 host를 볼 수 있도록 설정을 해줘야 합니다.

그러기 위해서는 "sudo vi /etc/hosts" 명령어를 통해 hosts파일을 수정해줘야 합니다.

elastic-1,2,3호스트의 hosts파일을 모두 수정해 주셔야 합니다.

 

그리고 "vi config/elasticsearch.yml"명령어를 통해 discovery.seed_hosts값을 각각의 호스트명으로 채워줍니다.

이 값의 의미는 elastic-1,2,3를 각각 찾는다는 의미입니다.

그리고 cluster.initial_master_nodes값 역시 각각의 노드명으로 입력합니다.

이렇게 입력하게 되면 클러스터가 최초 실행 될 때 명시된 노드들을 대상으로 마스터 노드를 알아서 선출하게됩니다.

이렇게 설정을 마쳤으면, 3개의 노드를 실행하고 외부에서 "host IP주소:9200/_cat/nodes"명령어를 입력하게되면 노드3개가 바인딩 되어 1개의 클러스터로 묶인것을 확인 할 수 있습니다.

node-2왼쪽에 *표시는 마스터노드로 node-2이 선출되었다고 볼 수 있습니다.