Elasticsearch clustering 구현
Elasticsearch clustering의 경우
3개의 Master-eligible nodes로 구성하는 것으로 HA를 구현하기 적절
먼저 원본 es ec2와 같은 ec2를 2개 생성하고 es를 전부 설치한다.
그리고 각 es를 실행시키면 당연하게도 클러스터링이 되지 않는다.
docker-compose.yml과 .env를 신경써서 수정해주어야 하며 그 수정사항은 대표적으로
- discovery.type
- http.port
- transport.tcp.port
- clustering.initial_master_nodes
- ports, expose
- .env의 ES_SEED_HOSTS, ES_MASTER_HOSTS
등이 있다.
추가로 kibana에도 각 ES의 주소를 입력해주어야 하는데
ES에서 여러 주소를 콤마(,)로 붙여서 입력하는 것과는 다르게
docker-compose.yml에서 같은 이름의 항목을 여럿 작성하여야 정상적으로 작동한다.
추가의 추가로 filebeat, metricbeat도 es를 endpoint로 가지고 있다.
filebeat, metricbeat의 경우 es와 같이 콤마(,)로 여러 주소를 입력할 수 있다.
*issue
-------------------------------------------------------------------------------------------------------------------------
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
-------------------------------------------------------------------------------------------------------------------------
클러스터링 진행 시 위와 같은 에러가 발생하기에
-------------------------------------------------------------------------------------------------------------------------
sudo vi /etc/sysctl.conf
vm.max_map_count=262144
sudo sysctl -p
-------------------------------------------------------------------------------------------------------------------------
위와 같은 방법으로 해결할 수 있다.