[Elasticsearch] Elasticsearch Engineer Training -1

  • 본 포스트는 상명대학교 Elasticsearch 엔지니어 트레이닝 과정을 이수하고 작성한 글입니다.
  • 개인이 간단하게 실습을 위해 작성한 포스트이며 Enterprise 급 운용을 위한 글이 아님을 밝힙니다.

Day01_ Elasticsearch Fundamentals

Elastic Stack Overview

  • 검색은 모든 어플리케이션에 있어서 중요하다
  • 루씬은 단순한 라이브러리라면, 엘라스틱 스택은 컴포넌트로 묶어 하나의 클러스터를 만든다.
    • 분산환경이 중요하다.
  • 실습환경은 1 node cluster로 구성
  • 10, 100+ 개가 넘는 node cluster도 사용가능하다 (엔터프라이즈 급)

2. Easily used by other languages

  • 엘라스틱이 가지고 있는 프로토콜은 HTTP가 있다.
  • REST API로만 접근
    • 가장 많이 쓰는 method : PUT, POST, GET, DELETE
  • DELETE operation은 조심하여 쓰자. (RESTful 방식의 단점)

Elastic Stack

  • Ingest

    • Beats
    • Logstash
  • Store, Search & Analyze

    • Elasticsearch
      • 엘라스틱 스택의 심장 역할
  • Visualize & Manage

    • Kibana

Summary

  • The Elastic Stack is a collection of products with Elasticsearch at the heart.
  • Beats are single purpose data shippers
  • Logstash is a server side data processing pipeline
  • Kibana is an analytics and visualization

Getting Started Elasticsearch

  • 루씬 기반이기 때문에 자바 JDK 필수 설치

jvm.options 파일

  • java와 관련된 환경변수 대부분을 설정

elasticsearch.yml 파일

  • elasticsearch 실행 환경에 대한 실제 설정 파일

백그라운드 실행

1
$./bin/elasticsearch -d

노드 이름 만들기

1
$./bin/elasticsearch -E node.name=ACMEES001

노드 죽이기

1
$kill `cat elastic.pid`

클러스터 이름 만들기

1
$./bin/elasticsearch -E cluster.name=acme_logging

GCP VM 환경에 Elasticsearch, Kibana 설치와 환경 세팅

VM 인스턴스 실행

  • 만들었던 인스턴스 선택
  • SSH 연결 - 브라우저 창에서 열기 - 터미널 실행

1. Elasticsearch 파일 경로를 가져와 설치(21.02.22 최신버전)

  • wgets 명령어 사용가능 시 사용해도 무방
  • Linux 64bit
1
2
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsea
rch-7.11.1-linux-x86_64.tar.gz

2. Kibana 파일 경로를 가져와 설치(21.02.22 최신버전)

  • Linux 64bit
1
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-7.11.1-linux-x86_64.tar.gz

3. 압축 해제

1
2
3
4
5
tar -xzvf elasticsearch-7.11.1-linux-x86_64.tar.gz
//..elasticsearch 압축해제..

tar -xzvf kibana-7.11.1-linux-x86_64.tar.gz
//..Kibana 압축해제..

4. 다운로드 받았던 설치파일 관리

  • stack 폴더 만든 후 gz 파일 이동
1
2
mkdir stack
mv *.gz ./stack

5. 간단하게 디렉토리 이름 변경

1
2
mv elasticsearch-7.11.1/ es-711
mv kibana-7.11.1-linux-x86_64/ kb-711

6. elasticsearch에 데이터 저장소 (data, logs) 만들기

1
2
3
4
5
6
7
cd es-711/
sudo mkdir /mnt/data
sudo chown `owner`:`group` /mnt/data
sudo mkdir /mnt/logs
sudo chown `owner`:`group` /mnt/logs

ls -al /mnt 로 폴더 생성 확인


Elasticsearch configuration

1
2
cd config
~/es-711/config >> vi elasticsearch.yml
  • vim 에디터로 수정

    • ESC -> i 눌러 입력모드 설정
  • Cluster, Node 이름 변경

  • 데이터, 로그 수집 폴더 경로 설정

  • 네트워크 포트 -> 기본으로 지정된 http.port 값
  • discovery seed host -> GCP VM 인스턴스 이름
  • cluster initial master node -> 설정한 node name

ESC -> :wq 눌러 저장하고 나가기


Kibana configuration

  • es-711에서 상위 디렉토리로 나가 kb-711 디렉토리로 이동
  • kb-711/config 디렉토리 이동
1
~/kb-711/config$ >> vi kibana.yml
  • server.port : 기본값
  • server.host : GCP VM 인스턴스 이름
  • server.name : elasticsearch node name
  • elasticsearch.hosts : [“https://localhost: http.port 값“]

Elasticsearch, Kibana 실행

GCP 방화벽 설정

  • GCP VPC 네트워크 - 방화벽

  • 방화벽 규칙 만들기

    • 이름 정하기
    • 대상 : 지정된 대상 태그
      • 대상 태그 : http-server, https-server
    • 소스 필터 : IP 범위
      • 소스 IP 범위 : 0.0.0.0/0
    • 프로토콜 및 포트
      • tcp 체크 : 80, kibana 기본 포트번호 값
    • 규칙 저장
  • Compute Engine - VM 인스턴스

    • 수정
      • http-server, https-server 설정 되어있는지 확인 후 저장

Elasticsearch 실행

Kibana 실행 전 무조건 elasticsearch를 올린 후 실행할 것!!

1
2
cd es-711
~/es-711$ ./bin/elasticsearch
  • 새로운 터미널 창 열기
  • elasticsearch 실행 확인
    • ID와 Password를 이미 설정했다면 security_exeception 예외로 인해 정보를 열람할 수 없다.
      1
      curl localhost: `http.port 값`

Kibana 실행

1
2
cd kb-711
~/kb-711$ ./bin/kibana
  • https://VM 외부 IP : kibana 기본 포트번호 로 접속


ID/Password Setup

Elasticsearch 설정

  • elasticsearch 인스턴스 종료

  • elasticsearch.yml 열기

    • 두 줄 옵션 vim editor 맨 아랫줄에 추가
      • xpack.security.enabled : true
      • xpack.security.transport.ssl.enabled : true
  • 저장 후 종료 (:wq)

  • elasticsearch 인스턴스 실행, 추가 터미널 실행 후 경로 진입, 아래 명령어 입력

    1
    ~/es-711/bin$ ./elasticsearch-setup-passwords interactive
    • y 입력
    • elastic, apm_system, kibana_system, logstash_system, beats_system, remote_monitoring_user 에 대한 패스워드 설정
  • elasticsearch 인스턴스 재 실행

Kibana 설정

  • Kibana 인스턴스 종료
  • kibana.yml 열기
    • elasticsearch.username : elastic (고정, 건드리지 말 것)
    • elasticsearch.password : 직접 지정해야 함
  • 저장 후 종료
  • Kibana 인스턴스 재 실행

  • 외부 IP로 재 접속 시 아이디와 패스워드를 묻는 창이 뜬다면 성공
Author

MoonDoni

Posted on

2021-02-22

Updated on

2021-02-24

Licensed under

댓글