Intro::
Installing Elasticsearch 정리본입니다.
Installing Elasticsearch with Docker
Elastic Docker registry에 있는 엘라스틱서치 도커 이미지를 사용할 수 있습니다.
‣
Starting a single-node cluster
- 도커 설치
- 도커 네트워크 생성
docker network create elastic
- 엘라스틱서치 이미지 pull
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.14.1
- (옵션) Cosign 설치. Cosign은 컨테이너 이미지의 서명 및 검증을 위해 사용하는 오픈 소스 도구입니다. 이는 이미지의 무결성과 신뢰성을 보장하기 위해 사용됩니다.
wget https://artifacts.elastic.co/cosign.pub cosign verify --key cosign.pub docker.elastic.co/elasticsearch/elasticsearch:8.14.1
- 컨테이너 실행
docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.14.1
- elastic password와 등록 토큰 복사. 이러한 자격 증명은 Elasticsearch를 처음 시작할 때만 표시됩니다. 다음 명령을 사용하여 자격 증명을 다시 생성할 수 있습니다.
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"
- http_ca.srt SSL 자격증명을 로컬머신으로 복사
docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
- 엘라스틱서치 컨테이너 동작을 확인합니다.
curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
Start a multi-node cluster with Docker Compose
- docker compose 설치
- 프로젝트 디렉토리에 다음 파일들을 저장
- .env
- docker-compose.yml
- .env
ELASTIC_PASSWORD
KIBANA_PASSWORD
STATCK_VERSION
: 엘라스틱서치 버전 명시ES_PORT
: 특정 호스트에 포트 노출- 파일에는 와 를 명시합니다.
비밀번호는 알파벳 + 숫자 조합이어야 하며, 특수문자가 들어가서는 안됩니다.
- 기본적으로 docker compose configuration은 모든 네트워크 인터페이스에 9200 포트를 노출합니다.
- 클러스터 실행
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/ 에서 로드됩니다.
커스텀 설정파일들을 사용하려면 바인드 마운트를 해야합니다. 도커 환경변수를 사용해서 개별적인 엘라스틱서치 설정을 할 수 있습니다.
Loading Comments...