Skip to main content

ElasticSearch

Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진입니다.

Elasticsearch는 Apache Lucene을 기반으로 구축되었으며, 데이터 수집, 보강, 저장, 분석, 시각화를 위한 무료 개방형 도구 모음(Elastic Stack)이 있습니다. 보통 ELK Stack((Elasticsearch, Logstash, Kibana의 머리글자)라고 하는데, 최근에는 경량 수집 Agent인 Beats가 포함되어 있습니다.

ElasticSearch의 주요 사용 분야는 아래와 같습니다.

  • 애플리케이션 검색
  • 웹사이트 검색
  • 엔터프라이즈 검색
  • 로깅과 로그 분석
  • 인프라 메트릭과 컨테이너 모니터링
  • 애플리케이션 성능 모니터링
  • 위치 기반 정보 데이터 분석 및 시각화
  • 보안 분석
  • 비즈니스 분석

Elasticsearch를 활용하면 방대한 양의 데이터를 신속하게, 거의 실시간( NRT, Near Real Time )으로 저장, 검색, 분석할 수 있습니다.

Turaco에서는 ElasticSearch를 클러스터내에 신속하게 구축할 수 있도록 컴포넌트화하여 제공합니다.

본 챕터에서는 ElasticSearch 컴포넌트의 사용법에 대해 설명합니다.


컴포넌트 배치

ElasticSearch 컴포넌트는 아키텍처 설계 화면 (이하 디자이너 화면)에서 좌측에 위치한 컴포넌트 목록에서 '분석 및 수집' 카테고리에 있습니다.

  1. 설계화면 왼쪽 컴포넌트 리스트 화면에서 ElasticSearch 컴포넌트를 선택 후 디자이너 화면으로 드래그 & 드롭합니다.

컴포넌트배치

  1. 배치된 ElasticSearch 컴포넌트에 대한 이름과 설명을 입력 후 확인 버튼을 클릭합니다. 이름과 설명은 필수 입력값이며 입력하지 않으면 확인 버튼이 활성화되지 않습니다.

노드 환경 설정

ElasticSearch는 마스터 노드와 데이터 노드에 대한 환경을 각각 설정해야 합니다. 두 노드에 대한 설정이 누락되면 ElasticSearch가 제대로 동작되지 않을 수 있습니다.

마스터 노드

마스터노드 설정

  1. 버튼을 클릭하여 환경 설정 정보를 읽어옵니다.
  2. 노드 정보를 선택하기 위해 드롭다운 메뉴를 클릭합니다.
  3. 표시된 드롭다운 메뉴에서 Master를 선택합니다.선택된 마스터 노드의 환경 설정 정보가 팝업창에 표시됩니다.
  4. '적용' 버튼을 선택하여 마스터 노드에 대한 환경 정보를 적용합니다.
  5. 마스터 노드에 대한 정보가 입력된 것을 확인합니다. 입력된 내용은 쿠버네티스의 ConfigMap 형태로 주입됩니다.

데이터 노드

데이터 노드 또한 마스터 노드 환경 설정 방식과 동일합니다.

데이터 노드 설정

  1. 버튼을 클릭하여 환경 설정 정보를 읽어옵니다.
  2. 노드 정보를 선택하기 위해 드롭다운 메뉴를 클릭합니다.
  3. 표시된 드롭다운 메뉴에서 Data를 선택합니다.선택된 데이터 노드의 환경 설정 정보가 팝업창에 표시됩니다.
  4. '적용' 버튼을 선택하여 데이터 노드에 대한 환경 정보를 적용합니다.
  5. 데이터 노드에 대한 정보가 입력된 것을 확인합니다. 입력된 내용은 쿠버네티스의 ConfigMap 형태로 주입됩니다.

노드 속성 설정

13. 마스터 노드 수와 메모리 용량을 설정합니다.

14. 데이터 노드 수와 메모리 용량을 설정합니다.

  • 마스터 노드와 데이터 노드 각각에 대한 노드 수와 메모리를 설정할 수 있습니다.
  • 각 노드의 초기 기본 노드 수는 1로 설정되어 있으며 원하는 경우 변경할 수 있습니다.
  • 각 노드별 메모리 용량도 기본값으로 설정되어 있으며 원할 경우 변경할 수 있습니다.
  • 각 노드별 메모리 용량도 기본값으로 설정되어 있으며 원할 경우 변경할 수 있습니다.

메모리를 설정하는 방식은 아래와 같이 설정합니다.

-Xms2048m -Xmx2048m

  • -Xms -> jar 파일 실행 초기에 할당하는 동적 메모리
  • -Xmx -> jar 파일이 가질수 있는 최대 동적 메모리

메모리 설정 시 주의사항

노드 속성 설정 시, 메모리 용량이 작게 설정될 경우 ElasticSearch 서비스가 정상적으로 구동되지 않을 수 있습니다.

스토리지 설정

각 노드가 설정하는 스토리지를 설정합니다. 마스터 노드와 데이터 노드에 대해 각각 설정해야 합니다.

컨테이너는 로컬 스토리지를 사용할 수 있으나 컨테이너의 특성상 재시작되거나 삭제되는 경우 저장된 데이터가 같이 삭제됩니다. 이러한 특성 때문에 외부에 영구 볼륨을 설정하고 저장을 해야 데이터가 유실되지 않고 보관이 됩니다.

Turaco에서는 운영 환경에서 많이 사용하는 2가지 스토리지 클래스를 지원합니다.

  • NFS 기반의 스토리지 클래스 (tlc-nfs-sc)
  • Disk 기반의 스토리지 클래스 (tlc-block-sc)

스토리지설정


스토리지 설정에는 아래와 같이 3개의 속성이 있습니다.

  • 접근 모드 -> 스토리지 접근 모드 선택
  • 볼륨 크기 -> 볼륨 크기 입력(ex. 5Gi)
  • 스토리지 클래스 -> 스토리지 클래스 이름 입력(기본값 유지 추천)

접근 모드는 아래와 같이 3가지 속성이 있습니다.

  • ReadWriteMany -> 여러개의 컨테이너에서 읽고 쓸수 있음
  • ReadWriteOnce -> 하나의 컨테이너에서만 읽고 쓸수 있음
  • ReadOnlyMany -> 여러개의 컨테이너에서 읽을 수 있음
  1. 마스터 노드에 대한 접근 모드 및 용량 그리고 스토리지 클래스를 설정합니다.

  2. 데이터 노드에 대한 접근 모드 및 용량 그리고 스토리지 클래스를 설정합니다.

Turaco 기본 스토리지 설정값

Turaco ElasticSearch 컴포넌트에서 스토리지 클래스 및 접근모드는 아래와 같이 고정값으로 지정되어 있으며 수정할 수 없습니다.

  • 접근모드 -> ReadWriteOnce
  • 스토리지 클래스 -> tlc-block-sc

프로토콜

Turaco 내부 클러스터에 설치되는 ElasticSearch 프로토콜은 http만 지원합니다. (추후 https 지원 예정)

  • 포트 9200 -> HTTP를 통한 모든 API 호출에 사용됩니다.
    여기에는 검색 및 집계, 모니터링 및 HTTP 요청을 사용하는 모든 것이 포함됩니다.
    모든 클라이언트 라이브러리는 이 포트를 사용하여 Elasticsearch와 통신합니다.

  • 포트 9300 -> 클러스터의 노드 간 통신에 사용되는 사용자 지정 이진 프로토콜입니다.
    클러스터 업데이트, 마스터 선택, 노드 가입/탈퇴, 샤드 할당과 같은 경우에 사용됩니다.

17. 사용할 프로토콜을 설정합니다. (HTTPS 추후 지원 예정)

18. 클라이언트와 통신을 위한 HTTP 포트를 설정합니다.

19. 클러스터 노드간 사용하는 TransPort용 TCP 포트를 설정합니다.