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