Home ElasticSearch
Post
Cancel

ElasticSearch

cluster and nodes

elastic - cluster

  1. elastic search 구성방법
    • 클러스터 : 여러 대의 컴퓨터를 병렬로 연결해 하나의 시스템을 구성하는 것을 말한다 - 여러 노드의 집합
    • 노드
      • 노드의 통신모듈 2가지
        • transport(전송)모듈 : 클러스터 내부에서 노드와 노드간의 통신에 사용
        • http(외부통신)모듈 : 노드와 외부 클라이언트간의 통신에 사용
  2. 노드, 샤드, 설정
    • 노드
      • 물리서버 하나에 노드 하나를 구성하는 방식을 권장
  3. 노드
    • 마스터 노드
      • 인덱스의 설정, 매핑정보와 물리적인 위치, 클러스터의 설정정보나 인덱스 템플릿 정보등 클러스터의 모든 상태정보를 관리
      • 후보 선출과정
        • 사용자 지정 방식이 아니라, 투표에 의해서 결정되는 방식
        • 과반수가 넘는 경우 마스터노드로 선출된다.
        • 마스터노드가 나갔다 들어오면 그 사이 선출된 마스터가 그대로 마스터한다.
      • 스플릿 브레인 : 네트워크 장애로 클러스터가 분리되는 경우 각각의 클러스터에서 마스터 노드를 선출한다.
        • 투표 전용 노드 : 마스터 후보 노드들이 대량으로 장애가 발생하는 경우 시스템이 멈추지 않고 동작할 수 있다.
    • 데이터 노드
      • 인덱싱한 도큐먼트를 샤드 형태로 저장하여 데이터의 CRUD 작업과 검색, 집계작업을 한다.
      • 마스터 노드와 데이터 노드의 역할을 분리한다.
      • 항상 모니터링하면서 부하를 체크하고, 샤드를 재분배해주어야 한다.
    • 인제스트 노드
      • 도큐먼트의 가공과 정제를 위한 노드 : 복잡한 가공이 아니라면 오히려 로그스테쉬 설치 없이 가능하다는 장점이 있다.
      • 데이터 가공을 많이 하는 시스템이라면 별도의 인제스트 노드를 구성하는 것이 좋다.
      • 파이프라인과 프로세서의 사용법
        • 파이프라인 : 도큐먼트를 변형할 수 있는 모듈 프로세서의 집합
        • 프로세서 : 도큐먼트를 원하는 형태로 변경할 수 있는 작은 컴포넌트들 - date, drop, grok, set, split
    • 머신러닝 노드
      • 유료, 이상탐지기능
    • 코디네이터 노드
      • 모든 노드가 코디네이터 노드 역할을 수행할 수 있으며, REST-API요청을 처리하는 역할을 한다. 규모가 크고 복잡한 검색에서는 각 데이터 노드가 계산된 결과에 집중할 수 있도록 load-balancing 및 요청 라우팅, 캐싱에 유리한 코디네이터 노드를 두는것이 좋다.
  4. 전용 노드를 최적화하여 구성하는 방법
    • 노드 역할에 따라 전용노드를 구성하면 최적화가 가능하기 때문에, 대규모 시스템의 경우 전용노드를 활용해 시스템을 구성하는 것이 좋다.
    • 각 노드에 따른 하드웨어도 다른 방식으로 구현할 수 있다.
  5. 규모에 따른 전용노드 구성 방법
    • 소규모 클러스터(3~5대 노드)
      • 총 5개의 데이터 노드. 그중 3개는 마스터 후보노드이면서 데이터 노드 역할.
    • 대규모 클러스터
      • 정답은 없다. 하지만 노드를 효율적으로 관리하기 위해서는 전용노드를 최대한 잘 활용하는 것이 중요하다.
  6. 핫/웜 노드를 구성하는 방법
    • 핫(hot), 웜(warm), 콜드(cold)
    • 샤드 할당 필터링(shard allocation filtering)
      • 속성(테그)를 달아 저장하는 방법
      • ILM(index lifecycle management)에서 관리
    • 데이터 티어(data tier)
  7. 스냅샷
    • 안정적인 시스템 구성을 위해 데이터 백업을 지원한다 -> elasticsearch는 데이터 백업을 위해 스냅샷을 지원
    • 레포지토리는 파일시스템, 하둡, s3등 여러가지를 지원함
    • 스냅샷 운영주기는 SLM(snapshot lifecycle management) 가 관리한다.
  8. 샤드
    • 프라이머리 샤드
    • 레플리카 샤드
    • 인덱스 할당방법
    • 노드 추가와 삭제시 샤드가 어떻게 변경되는지
  9. 성능 최적화를 위한 샤드 개수와 샤드 크기 결정방법
  10. rollover API, shrink API
  11. 샤드관리
    • https://www.elastic.co/kr/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster

elastic - cluster

  1. elastic search 구성방법
  2. 노드, 샤드, 설정
  3. 노드
    • 마스터 노드
      • 후보 선출과정
    • 데이터 노드
    • 인제스트 노드
      • 파이프라인과 프로세서의 사용법
  4. 전용 노드를 최적화하여 구성하는 방법
  5. 규모에 따른 전용노드 구성 방법
  6. 핫/웜 노드를 구성하는 방법
  7. 스냅샷
  8. 샤드
    • 프라이머리 샤드
    • 레플리카 샤드
    • 인덱스 할당방법
    • 노드 추가와 삭제시 샤드가 어떻게 변경되는지
  9. 성능 최적화를 위한 샤드 개수와 샤드 크기 결정방법
  10. rollover API, shrink API
  11. 샤드관리
    • https://www.elastic.co/kr/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster
This post is licensed under CC BY 4.0 by the author.