앞선 포스팅에서는 로컬 develop 환경이어서 아무런 문제없이 Elasticsearch를 구성할 수 있었는데요. 다수 서버의 프로덕션 환경에서는 많은 문제가 발생해 꽤나 고생했습니다.
이번 포스팅에서는 Elasticsearch를 프로덕션 환경에 구성하면서 겪었던 문제와 해결 과정을 소개하려고 합니다.
Elastic Stack 구성
우선 제게 허락된 서버는 2대였습니다. 그런데 Elasticsearch는 최소 3개의 노드가 필요하기 때문에 좀 더 성능이 나은 서버에 두 개의 노드를 구성했습니다.
External Network 🟩
- 외부망에서 접근 가능한 루트입니다.
- L4 스위치를 경유해 두 개의 서버에 로드 밸런싱이 되도록 했습니다.
Internal Network 🟥
- 내부망에서만 접근 가능한 루트입니다.
- 보안상의 이유로 Elasticsearch 클러스터 노드 간의 통신은 내부 네트워크를 통하도록 구성했습니다.
- 내부 네트워크이기 때문에 불필요한 Network Hop Count와 L4 스위치의 불필요한 부하를 줄일 수 있습니다.
Docker Network 🟦
- 같은 서버 내부에서의 통신(Elasticsearch - Kibana / Elasticsearch - Logstash)은 docker network를 통하도록 했습니다.
- Kibana와 Logstash의 Elasticsearch와의 통신은 해당 인덱스가 같은 서버의 Elasticsearch 노드에 저장되어있지 않더라도 Elasticsearch 간의 통신으로 접근 가능하기 때문에 Docker Network로 구성했습니다.
Elasticsearch 트러블 슈팅
vm.max_map_count 변경
[Elasticsearch] vm.max_map_count 변경
Elasticsearch를 프로덕션 환경에서 구성시 vm.max_map_count 값을 조정해주어야 합니다. 이번 포스팅에서는 vm.max_map_count 값을 조정하지 않았을 때 발생하는 오류와 처리 방법을 소개해보도록 하겠습니
logical-code.tistory.com
transport SSL 설정 및 인증서 배포
[Elasticsearch] X-Pack Security 활성화 시 오류
Elasticsearch 에서 보안 관련 기능을 사용하려면 X Pack Security를 활성화 해야합니다. docker-compose.yml 에서는 xpack.security.enabled=true 로 X Pack Security를 활성화 할 수 있는데요, 활성화 후 컨테..
logical-code.tistory.com
cluster master node 선출 실패 문제
[Elasticsearch] 마스터노드 선출 실패 오류
Elasticsearch 클러스터는 하나 이상의 노드들로 이루어집니다. 이 중 하나의 노드는 인덱스의 메타 데이터, 샤드의 위치와 같은 클러스터 상태 정보를 관리하는 마스터 노드의 역할을 수행합니다.
logical-code.tistory.com
'📦 ETC > TOY PROJECT' 카테고리의 다른 글
[찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 인증인가 처리 (0) | 2022.03.07 |
---|---|
[찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 데이터 수집해서 시각화 하기 (2) (0) | 2022.01.30 |
[찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 데이터 수집해서 시각화 하기 (1) (0) | 2022.01.30 |
[찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 반 정형 데이터 수집기 만들기 (0) | 2022.01.02 |