ElasticSearch 2(11) - 노드 튜닝(ElasticSearch 성능)

2883 단어

ElasticSearch 2(11) - 노드 튜닝(ElasticSearch 성능)


요약


하나의 ElasticSearch 집단에 몇 개의 노드가 필요한지 명확한 방식으로 대답하기 어렵지만, 우리는 문제를 몇 개로 세분화하여 우리가 ElasticSearch 노드의 수를 어떻게 설계하는지 더 잘 이해하도록 도와줄 수 있다.
  • 데이터를 얼마나 처리할 계획입니까?
  • 검색 요청을 얼마나 처리할 계획입니까?
  • 요청의 복잡도는 어떻습니까?
  • 노드당 자원 수는 얼마나 됩니까?
  • 색인을 얼마나 만들고 응용을 지원할 계획입니까?

  • 버전


    elasticsearch 버전:elasticsearch-2.x

    컨텐트


    하나의 집단으로 모든 문제를 해결합니까?


    대답해야 할 문제는 이상에 그치지 않지만, 다섯 번째 문제는 흔히 우리에게 무시되기 쉽다. 왜냐하면 하나의 Elastic Search 집단은 다중 인덱스를 지원할 수 있고 여러 개의 다른 응용 프로그램의 사용을 지원할 수 있기 때문이다.우리는 회사의 모든 로그를 Elastic Search 집단에 놓고 처리할 수 있다. 사이트의 간단한 조회든 매우 복잡한 분석이든.하나의 집단이 얼마나 많은 응용 프로그램의 로그 수요를 지원할 수 있는지 이해하면 우리가 적당한 노드 수를 분석하는 데 도움을 줄 수 있다

    노드 수와 메모리 관련


    ElasticSearch의 노드 수는 RAM의 제한을 받는다. 어떤 서버나 가상 컴퓨터에 대해 우리가 분배하는 물리적, 가상 메모리는 유한하다. 이렇게 하면 우리가 분배하는 노드의 수량을 자연히 제한한다.

    만능 노드 수--3


    만약 우리가 Elastic Search 집단을 세우려고 한다면, 비교적 적합한 숫자는 3이다.왜어느 정도에 하나의 집단 3개 노드는'split-brain'의 출현을 방지할 수 있다. 비록 분포식 집단에 대해 모든 노드가 대등하지만, 우리는 여전히 하나의 주 노드master가 필요하다.이 노드는 자신과 기타 모든 노드 간의 통신을 조율하는 임무를 맡는다.ES에서 마스터 노드는 상기 작업을 담당하는 것 외에 슬라이스와 복사본의 저장소를 최적화하는 동시에 인덱스, 쓰기 데이터와 루트 인덱스 최적화 등 문제를 처리한다.

    세 중이 투표하다


    주 노드 마스터에 문제가 생기면 노드 슬레이브에서 주 노드와 통신할 수 없을 때 노드에서 새로운 주 노드를 임명하는 선거를 실시하고 새 마스터는 구 마스터의 모든 작업을 인수한다. 만약에 구 마스터가 다시 복구되어 집단에 가입한다면 새 마스터는 원래 낡은 마스터를 슬레이브로 강등시켜 충돌이 발생하지 않을 것이다.모든 이 과정은 ElasticSearch가 스스로 처리하고 사용자는 아무런 참여도 하지 않아도 된다.

    두 중이 투표하다


    그러나 두 개의 노드만 있을 때 한 주(master)가 한 종(slave)을 따르고 주종이 직접적인 통신에 문제가 생기면 노드slave에서 스스로 마스터로 올라가지만 통신을 회복할 때 우리는 두 개의 마스터가 동시에 있다.이때 원래의 주 노드(master)의 측면에서 고려하면 원래의 노드(slave)에서 문제가 발생한 것으로 여겨졌기 때문에 현재도 slave로 다시 가입해야 한다.이렇게 해서 두 노드를 할 때 우리는 집단이 어느 노드를 주요 노드로 선출할지 모르는 상황이 생겼다. 즉, 우리가 통상적으로 말하는'분뇌'이다.
    이런 상황의 발생을 방지하기 위해 세 번째 노드의 출현은 균형을 깨뜨리고 충돌 문제를 해결할 것이다.

    세 스님은 여전히 문제가 존재한다


    뇌를 나누는 문제 역시 세 개 또는 세 개 이상의 노드를 가진 집단에 나타난다. 발생 확률을 낮추기 위해 ElasticSearch는 디스커버리를 설정했다.zen.minimum_master_nodes는 새로운 마스터를 선출할 때 집단에서 가장 적게 필요한 노드 수를 규정합니다.예를 들어 하나의 3개 노드 집단, 이 숫자는 2, 2개 노드가 집단에서 벗어날 때 자신을 마스터로 선출하는 것을 방지할 수 있으며, 반대로 집단에 다시 가입할 때까지 기다릴 수 있다.이 수치는 하나의 공식을 통해 확정할 수 있다.
    N/2 + 1

    N의 값은 클러스터의 모든 노드 수입니다.

    가용성 저하


    두 노드가 집단적으로'분뇌'상황이 발생하는 것을 방지하는 방법은 그 중의 한 노드를 node로 하는 것이다.데이터의 설정은false로 설정됩니다. 그러면 이 노드는 영원히 마스터가 되지 않습니다. 물론 이것은 집단의 가용성을 떨어뜨릴 수 있습니다.

    작은 매듭


    ElasticSearch 집단의 노드 수에 대해 정설이 없다. ElasticSearch의 엔지니어는 Quora에서도 그의 비슷한 의견을 제시하여 참고할 수 있다

    참고


    참조 소스:
    How many nodes should an Elasticsearch cluster have?
    What's the maximum number of nodes Elasticsearch can have? How many, max, have you used in practice?
    Elasticsearch Internals: Networking Introduction

    끝내다

    좋은 웹페이지 즐겨찾기