💻Develop/🗂️ETC

Elastic Search와 Kibana 설치

2023. 4. 7. 10:25
목차!!
  1. Elastic Search?
  2. 1. 분산 시스템
  3. 2. 멀티 테넌시 (Multy tenancy)
  4. 3. 시스템 구조
  5. 설치
  6. 준비 환경
  7. Elastic Search 설치
  8. Kibana 설치

Elastic Search?

오픈소스 분산 검색 엔진으로, 대용량 데이터를 빠르게 검색하고 분석할 수 있는 기능을 제공한다.
Apache Lucene 기반으로 만들어졌으며, REST API를 통해 다양한 언어로 쉽게 접근할 수 있다.
다양한 데이터 형식을 지원한다.
데이터 저장 시 인덱스를 생성하여 검색 속도를 높일 수 있으며, 분산 아키텍처를 지원하여 대용량 데이터 처리에 용이하다.
데이터 분석을 위한 다양한 기능들도 제공하고 있으며, Logstash와 Kibana와 같은 무료 오픈소스 도구들과 연동하여 데이터 수집, 분석, 시각화를 쉽게 할 수 있다.

1. 분산 시스템

데이터를 각 노드[^ft-node]에 분산하여 저장한다.
복사본을 유지하여 각종 충돌로부터 노드 데이터를 보호하며, DISCOVERY를 내정하여 별도의 분산 시스템 관리자가 불필요하다.

여러 개의 노드에 데이터를 색인 Indexing[^ft-indexing]하고 검색, 저장한다.
항상 일정한 데이터 복사본의 개수를 유지하여 높은 가용성과 안정성을 보장한다.

2. 멀티 테넌시 (Multy tenancy)

여러 개로 분리된 인덱스[^ft-index]들을 그룹으로 저장한다.
각 테넌트가 Elasticsearch를 기반으로 하는 동일한 애플리케이션 인스턴스를 가지고 있다면, 테넌트 간에는 실행되는 쿼리 및 데이터 구조가 공통적이다.
멀티 테넌트 솔루션의 중요한 기준 중 하나는 각 테넌트가 다른 테넌트에 속한 데이터를 볼 수 없도록하는 것입니다. 이를 데이터 분리 제약이라고 한다.

3. 시스템 구조

  1. Cluster 클러스터
    • 가장 큰 시스템 단위
    • 하나의 클러스터는 여러 개의 노드로 구성되어있다.
    • 여러 대의 서버가 하나의 클러스터를 구성할 수 있으며, 반대의 경우도 가능하다.
    • 같은 클러스터의 이름으로 노드를 실행하는 것 만으로도 확장이 된다고 한다.
  2. Node 노드
    • 마스터 노드
      • 전체 클러스터 상태의 메타 데이터를 관리
      • 기존의 마스터 노드가 종료되는 경우 새로운 마스터 노드가 선출된다.
    • 데이터 노드
      • 실제 데이터가 저장되는 노드
      • 외부 접근이 차단되어있다.
    • 노드 바인딩
      • 같은 클러스터 이름을 가지고 실행된 노드는 자동으로 바인딩된다.
      • 9200 PORT : REST API를 위한 HTTP 통신 포트
      • 9300 PORT : 노드간 바인딩을 위해 할당된 포트
  3. 네트워크 바인딩
    • 네트워크에 있는 다른 서버의 노드와도 바인딩 할 수 있다.
    • 네트워크 바인딩을 위한 Zen Discovery 기능 내장
    • 멀티캐스트와 유니캐스트 모두 지원 하지만, 유니캐스트 사용을 권장한다.
  4. 샤드
    • 데이터 검색을 위해 구분되는 최소 단위
    • 색인된 데이터는 여러 개의 샤드로 분할돼 저장한다.
  5. Replica
    • Primary Shard의 복제본
      • 노드 하나가 죽으면, 다른 노드에 있는 복제본에서 데이터를 제공하여 장애복구에 용이하다.
      • 노드가 죽어도 Primary Shard와 Replica 덕분에 데이터를 잃어버리지 않고 데이터 가용성 및 무결성이 보장된다.
    • 같은 노드와 복제본은 동일한 데이터를 담고 있으며 반드시 서로 다른 노드에 저장된다.
    • 작은 클러스터라도 데이터 가용성과 무결성을 위해 최소 3개의 노드로 구성하는것을 권장한다.
    • 성능에 영향을 주는 주요 요소이다.

참고 문헌[^tf-document]

설치

준비 환경

  • WSL2 Ubuntu (20.04)
  • Java 1.8 이상
  • Elastic Search와 Kibana 버전은 8.0.0 으로 맞춘다
    @elastic/elasticsearch 사용을 위해서는 해당 패키지와 동일한 버전으로 설치해야 Node.js 에서 오류없이 클라이언트를 생성하고 사용할 수 있다.
  • 패키지 설치
    npm init
    npm install @elastic/elasticsearch dotenv

Elastic Search 설치

아래의 명령어를 위에서 아래로 실행한다.

curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.0.0-linux-x86_64.tar.gz
curl https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.0.0-linux-x86_64.tar.gz.sha512 | shasum -a 512 -c -
tar -xzf elasticsearch-8.0.0-linux-x86_64.tar.gz
cd elasticsearch-8.0.0/
./bin/elasticsearch #Script 실행

최초 실행시 Password, TOKEN 같은 주요 정보가 나오므로 따로 메모를 해줘야한다.

최초 실행시 나오는 정보 예시
빨간 상자로 가려둔 부분들에 있는 것 들을 복사해서 따로 저장해두면 된다.

Kibana 설치

아래의 명령어를 위에서 아래로 실행한다.

curl -O https://artifacts.elastic.co/downloads/kibana/kibana-8.0.0-linux-x86_64.tar.gz
curl https://artifacts.elastic.co/downloads/kibana/kibana-8.0.0-linux-x86_64.tar.gz.sha512 | shasum -a 512 -c -
tar -xzf kibana-8.0.0-linux-x86_64.tar.gz
cd kibana-8.5.3/
./bin/kibana

./bin/kibana 스크립트가 무사히 실행되었다면 http://localhost:5601로 접속 해준다.
최초로 접속하는 경우 enrollment-token을 기입해줘야한다.

token기입

Elastic Search 설치 에서 따로 메모해둔 TOKEN 값을 입력해준다.
가장 긴 상자에 있는 값이 입력해야하는 값 이다.

  • 로그인
    • ID : elascit
    • PW : 위에서 메모해둔 Password

Kibana Home

위 과정 중 문제 사항이 없었다면 위 사진처럼 무사히 접속 할 수 있다.


[^ft-node]: **노드** 독립적으로 실행되는 프로세스 [^ft-indexing]: **Indexing** 데이터가 검색될 수 있는 구조로 변경하기 위해 원본 문서를 검색어 토큰들로 변환하여 저장하는 일련의 과정이다. [^ft-index]: **Index** 색인 과정을 거친 결과물 또는 색인된 데이터가 저장되는 저장소이다. 도큐먼트들의 논리적인 집합을 표현하는 단위이디고 하다. [^tf-document]: [Elastic 가이드북](https://esbook.kimjmin.net/03-cluster)
  1. Elastic Search?
  2. 1. 분산 시스템
  3. 2. 멀티 테넌시 (Multy tenancy)
  4. 3. 시스템 구조
  5. 설치
  6. 준비 환경
  7. Elastic Search 설치
  8. Kibana 설치
Guraeng
Guraeng
문제 해결을 조금이라도 빠르게 하고 싶어서 기록하는 블로그!! 능력자가 되고싶다 🐳
Guraeng
구랭 기록책
Guraeng
전체
오늘
어제

블로그 메뉴

  • 🏠HOME
  • 🏷️TAG
  • 📖GUESTBOOK
  • 🚩README
  • 분류 전체보기 (18)
    • 💻Develop (13)
      • 🐧Linux (1)
      • 🐍Python (2)
      • 🛝Kubeflow (3)
      • 💡Algorithm (6)
      • 🗂️ETC (1)
    • 🛠️Framework (2)
      • 🚀Django (2)
      • 🧩Vue (0)
      • 🗂️ETC (0)
    • 💾 (0)
      • ✍️일기 (0)
      • 📝TIL (2)
      • ⌨️Keyboard (1)
    • ⭐Hobby (0)
      • 📝Writing (0)
      • 🎮Game (0)
최근 글
인기 글
최근 댓글
hELLO · Designed By 정상우.
Guraeng
Elastic Search와 Kibana 설치
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.