엘라스틱서치:: Installing Elasticsearch
🙉

엘라스틱서치:: Installing Elasticsearch

Created
Jun 24, 2024 02:15 AM
Last edited time
Last updated August 22, 2024
Tags
ElasticSearch
Language
URL

Intro::

Installing Elasticsearch 정리본입니다.
 

Installing Elasticsearch with Docker

Elastic Docker registry에 있는 엘라스틱서치 도커 이미지를 사용할 수 있습니다.
 

Starting a single-node cluster

  1. 도커 설치
  1. 도커 네트워크 생성
    1. docker network create elastic
  1. 엘라스틱서치 이미지 pull
    1. docker pull docker.elastic.co/elasticsearch/elasticsearch:8.14.1
  1. (옵션) Cosign 설치. Cosign은 컨테이너 이미지의 서명 및 검증을 위해 사용하는 오픈 소스 도구입니다. 이는 이미지의 무결성과 신뢰성을 보장하기 위해 사용됩니다.
    1. wget https://artifacts.elastic.co/cosign.pub cosign verify --key cosign.pub docker.elastic.co/elasticsearch/elasticsearch:8.14.1
  1. 컨테이너 실행
    1. docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.14.1
  1. elastic password와 등록 토큰 복사. 이러한 자격 증명은 Elasticsearch를 처음 시작할 때만 표시됩니다. 다음 명령을 사용하여 자격 증명을 다시 생성할 수 있습니다.
    1. docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
      shell 환경변수로 비밀번호를 저장하는것을 권장합니다.
      export ELASTIC_PASSWORD="your_password"
  1. http_ca.srt SSL 자격증명을 로컬머신으로 복사
    1. docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
  1. 엘라스틱서치 컨테이너 동작을 확인합니다.
    1. curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
 

Start a multi-node cluster with Docker Compose

  1. docker compose 설치
  1. 프로젝트 디렉토리에 다음 파일들을 저장
    1. .env
    2. docker-compose.yml
  1. .env
    1. ELASTIC_PASSWORD
    2. KIBANA_PASSWORD
    3. STATCK_VERSION : 엘라스틱서치 버전 명시
    4. ES_PORT : 특정 호스트에 포트 노출
    5. 파일에는  와  를 명시합니다.
    6. 비밀번호는 알파벳 + 숫자 조합이어야 하며, 특수문자가 들어가서는 안됩니다.
  1. 기본적으로 docker compose configuration은 모든 네트워크 인터페이스에 9200 포트를 노출합니다.
  1. 클러스터 실행
    1. docker-compose up -d
 

Using the Docker images in production

다음 docker를 사용한 Elasticsearch에서의 권장사항입니다.
  • vm.max_map_count
    • 최소 262144
    • 플랫폼에 따라 설정방법이 다르다. 자세한 내용은 원본 링크 참고.
  • Configuration 파일들은 엘라스틱 유저들이 읽기 가능해야합니다.
    • 만약 로컬 디렉토리나 파일을 bind-mounting한다면, 엘라스틱서치 유저가 읽기 권한을 가지고 있어야 합니다. 추가로, 해당 유저는 config, data, log dirs에 대한 쓰기권한을 가지고 있어야합니다.
  • nofile 과 nporc를 위한 ulimits 증가
    • docker run --rm docker.elastic.co/elasticsearch/elasticsearch:8.14.1 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su'
  • swapping 해제
    • -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1
  • heap size 지정
    • docker run -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e ENROLLMENT_TOKEN="<token>" --name es01 -p 9200:9200 --net elastic -it docker.elastic.co/elasticsearch/elasticsearch:8.14.1
  • 특정 이미지 버전 명시
    • docker.elastic.co/elasticsearch/elasticsearch:8.14.1.
  • 항상 데이터 볼륨 바인드
    • /usr/share/elasticsearch/data 에서의 볼륨 바인드를 사용하는 것을 권장합니다.
    • 컨테이너가 killed 되어도 데이터를 잃어버리지 않습니다.
    • 엘라스틱서치는 I/O sensitive 하지만 docker storage driver는 fast I/O에 이상적이지 않습니다.
    • 추가적인 도커 볼륨 플러그인을 허용합니다.
  • devicemapper storage driver를 사용 중이라면 loop-lvm 모드 지양
  • 다른 로깅 드라이버를 사용하여 로그를 중앙 집중화하는 것을 고려해봅시다.

Configuring Elasticsearch with Docker

도커를 실행할때 Elasticsearch configuration 파일들은 /usr/share/elasticsearch/config/ 에서 로드됩니다.
커스텀 설정파일들을 사용하려면 바인드 마운트를 해야합니다. 도커 환경변수를 사용해서 개별적인 엘라스틱서치 설정을 할 수 있습니다.
 
 

References::

Loading Comments...