강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

haechang.jung님의 프로필 이미지
haechang.jung

작성한 질문수

ElasticSearch Essential

노드에서의 가용영역 이슈

작성

·

52

0

안녕하세요

지난번 노드당 샤드수에 대한 답변 감사합니다.

추가로 궁금한 사항이 있습니다.

비용에 관한 이슈인데요. 현재 가용영역이 a~d로 총 4개이고 클러스터 방식의 노드는 5개입니다. c영역에만 두대이고 나머지 영역에는 각 1대의 노드가 배치되어 있습니다. logstash 역시 노드마다 하나씩 총 5대이고 파티션 100개에서 컨슘하고 있습니다.

이 상황에서 datatransfer 비용이 생각보다 많이 나오고 있어서 비용 효율화를 진행하려고 합니다. 현재 생각중인 방안은 노드 5대를 가용영역 3개에 할당하는 방안입니다.

추가로 logstash에서 같은 노드에 있는 es 샤드에 데이터를 적재하도록 하는 방안은 안되는지 궁금합니다(kafka의 가장 가까운 복제본에서 컨슘하는 개념으로 접근했습니다 https://cwiki.apache.org/confluence/display/KAFKA/KIP-392%3A+Allow+consumers+to+fetch+from+closest+replica)

혹시 es를 운영하면서 비용효율화를 진행해 본 경험을 공유해주시면 큰 도움이 될 것 같습니다.

감사합니다!

 

답변 3

0

haechang.jung님의 프로필 이미지
haechang.jung
질문자

답변 감사합니다.

트래킹 로그는 레플리카가 없지만(S3에 이중 적재 중) APM 로그의 경우 장애 상황에 대한 대처때문에 레플리카를 없애기 힘들다고 생각됩니다.

레플리카에 대한 data transfer 비용은 어쩔수 없는 부분이라고 인정하고 그 외 혹시 다른 방안이 없을까요?

강진우님의 프로필 이미지
강진우
지식공유자

결국 비용과 안정성은 트레이드오프의 관계에 있다고 생각합니다. 안정성을 높이려면 비용이 증가할 수밖에 없고, 특히 Data Transfer 비용이 그 대표적인 예인 것 같습니다.

 

물론 트레이드오프의 수준이 어디까지 가능한지는 더 고민이 필요하지만, 예를 들어 노드를 한쪽 AZ에 모아두는 것도 Data Transfer 비용을 줄일 수 있는 방법 중 하나라고 생각합니다. 물론 이 경우 안정성은 다소 낮아질 수 있겠지만, AZ 하나가 완전히 마비되는 장애는 흔하지 않다는 점을 감안하면 일정 수준의 타협이 가능하지 않을까 싶습니다.

 

결국 확률과 기회비용 관점에서 판단해 보면, 낮은 확률의 장애에 대비해 높은 비용을 지불하는 것보다, 어느 정도의 안정성 손실을 감수하고 비용 효율을 가져가는 쪽이 더 나은 선택일 수도 있다는 생각입니다.

0

강진우님의 프로필 이미지
강진우
지식공유자

Logstash가 자신과 같은 리전에 있는 데이터노드에 데이터를 적재 한다고 해도, ES 데이터노드 간 레플리카 설정으로 인해 리전 간 데이터 전송이 발생할 수 밖에 없는 구조 입니다. 또한 결국 ES 인덱스의 샤드가 원하는 데이터노드에 배치되어야 하는 조건도 있어서 굉장히 복잡한 구조가 될 수 있습니다. ES는 클러스터이고 어떤 노드에 어떤 데이터를 넣어도 색인이 된다는 게 유연하면서도 지금같은 경우에는 많은 양의 리전간 트래픽을 발생 시킬 수 밖에 없죠.

그래서 AWS 상에 구축할 때는 OpenSearch를 많이 사용 합니다. OpenSearch는 데이터노드 간 주고 받는 리전 간 트래픽은 과금이 되지 않거든요.

그럼에도 불구하고 꼭 ES를 구축해서 사용해야 한다면 레플리카 설정을 줄이는 게 하나의 방법이 될 수 있습니다. 로그의 원본을 S3에 저장하고, 원활한 조회를 위해 ES에 쌓는다면 ES에 쌓을 때는 레플리카를 0 으로 만들어서 최소한 샤드 간 복제를 위한 데이터 만이라도 줄일 수 있겠죠. 대신 이럴 경우 데이터 노드에 이슈가 발생할 경우 클러스터가 바로 RED 상태가 될 수 있고, ES에 색인되는 로그들이 유실될 수 있는 가능성이 있지만 로그 원본이 S3에도 저장되고 있기 때문에 필요하다면 S3에 저장된 로그를 다시 ES에 색인하는 식으로 해결도 가능 합니다. 결국 비용을 줄이고 운영 부담을 늘리느냐를 결정해야 하는 문제가 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다.
김수민님께서 노드와 관련된 가용영역 설정 및 비용 효율화에 대해 질문해주셨네요. ElasticSearch에서 다중 가용영역(AZs) 환경에서 데이터 전송 비용을 줄이는 것은 중요한 고려 사항입니다. 질문하신 내용과 관련하여, 참고할 만한 기존 답변을 몇 가지 소개해 드리겠습니다.

  1. 데이터 전송 비용 절감 방안에서는 클러스터 설정을 통해 노드를 최적화하고 데이터 전송 비용을 줄이는 방법에 대해 다루고 있습니다. 특히 로그를 수집해 저장하고 분석하는 데 있어 어떤 클러스터 구성이 효율적인지에 대한 논의가 있습니다.

  2. ElasticSearch에서 효율적인 노드 배치 전략에서는 다양한 노드 배치 및 샤드 구성을 통해 ElasticSearch의 성능 및 비용을 최적화하는 방법에 대한 팁을 공유하고 있습니다.

  3. 샤드 배치 및 성능 최적화에서는 ElasticSearch의 샤드 배치와 관련된 다양한 전략을 토론하고, 각각의 장단점 및 비용 측면에서의 고려 사항을 논의합니다.

질문하신 Logstash와 ES 샤드 간의 데이터 적재 최적화는 직접적으로 ‘가장 가까운 복제본에서의 컨슘’ 개념과는 다르지만, 이를 구현하기 위해 클러스터 내에서 데이터로컬리티(data locality)를 고려한 설계를 시도해 볼 수 있습니다. Logstash와 Elasticsearch 노드를 같은 가용영역에 두고, 그 사이의 데이터 통신을 최적화함으로써 데이터 전송 비용을 줄이는 방법도 시도할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

haechang.jung님의 프로필 이미지
haechang.jung

작성한 질문수

질문하기