elasticsearch 에 대해서 간단하게 알아봤으니 한번 es 를 직접 설치해서 사용해보자.
혹시 es 에 대해서 알고 싶으신 분들은 아래글을 참고 하면 된다.
➡️ [ES] 1. Elasticsearch 와 루씬
es 를 설치하는 방법은 총 두가지가 있다.
첫 번째, 각 컴퓨터에 직접 es 설치하기
두 번째, docker 를 사용해서 es 설치하기
docker 를 사용하는 것이 컴퓨터에 직접 설치하는 것보다 환경설정, 오류 등 신경써야할 것들이 적어지며 빠르게 설치할 수 있기 때문에 해당 포스팅에서는 docker 를 사용해서 es 를 사용하자 (첫번째 방법으로 시도했다가 오류 폭탄을 받은건 안 비밀😹)
docker 에 대해서 궁금하신 분들은 해당 포스팅을 참고 !
➡️ [이론] docker 란 ?
본격적으로 docker 에 es 를 설치해보자.
⚠ docker 를 처음 사용해보는 경우
https://www.docker.com/get-started 에서
Docker Desktop 을 다운로드 한 다음 아래 예제를 따라해주세요.
docker 는 이미지에 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있기 때문에 es 를 docker 에서 실행하기 위해서 es 이미지를 다운받아 줍니다.
es 이미지를 다운로드 받기 위해서 docker hub 에 elasticsearch 를 검색해주도록 하겠습니다
맨 위에 있는 elasticsearch 를 선택해줍니다. (바로 아래 있는 kibana 를 통해서 kibana 도 이미지가 있구나 를 확인할 수 있습니다)
오른쪽에 docker pull elasticsearch
명령어를 입력해서 es 이미지를 다운로드 받을 수 있습니다 해당의 경우에는 가장 최신의 버전을 다운로드 받아주지만, es 에서 latest 태그가 존재하지 않아 정상적으로 받아지지 않기 때문에 Tags 를 선택해 원하는 버전을 명시해줘야 합니다.
근데 이상하게 8.0.0 이미지 상 오류 인건지 (2022년 3월 1일 기준) 8.0.0 이미지를 실행했을 때에는 정상적으로 실행이 안되더라고요. 그렇기 때문에 두번째로 최근 버전인 7.9.3 버전을 다운로드 받아주도록 하겠습니다.
docker pull elasticsearch:7.9.3
터미널에서 실행 후 해당 명령어로 docker 이미지가 정상적으로 받아졌는지 확인해줍니다.
docker images
위 사진 처럼 elasticsearch 이 있으면 정상적으로 설치된 겁니다.
es 이미지가 정상적으로 받아졌으면, docker 명령어를 통해 컨테이너를 실행해주도록 하겠습니다.
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearchTest elasticsearch:7.9.3
🏃♀️ docker run 명령어
기본 포맷 :docker run (<옵션>) <이미지 식별자> (<명령어>) (<인자>)
-d : 백그라운드 실행
-p : 포트 바인딩
-e : 환경변수 설정
--name : 컨테이너 이름 지정
위 명령어를 실행시켜주고 docker container 상태를 확인할 수 있는 docker ps
명령어로 정상적으로 실행되고 있는지를 확인할 수 있습니다.
위에서 지정해준 컨테이너 이름인 elasticsearchTest 로 정상적으로 작동하고 있는 걸 확인할 수 있습니다. docker 는 정상적으로 띄워져 있는 걸 확인했으니 elasticsearch 가 정상적으로 실행중인지 확인해봅시다.
elasticsearch 에 기본적으로 9200 포트는 http 통신, 9300 포트는 tcp 통신을 하도록 설정되어 있는데요. http 통신이 정상적으로 되는지를 확인하기 위해서 curl localhost:9200
명령어를 실행해줍니다.
정상적으로 정보가 잘 보이는 걸 확인할 수 있습니다 🙂
elasticsearch 컨테이너 안에 들어가서 기본 구조를 살펴보도록 하겠습니다.
컨테이너로 들어가기 위한 명령어는 다음과 같습니다.
docker exec -it #{컨테이너id} /bin/bash
#{컨테이너id} 에는 docker ps 로 알아낸 컨테이너 id 를 넣어주면 됩니다.
아래처럼 앞이 elasticsearch 로 바꼈다면 정상적으로 elasticsearch 컨테이너 안에 들어온겁니다 !
ll
을 통해서 전체 파일 구조를 봐보도록 하겠습니다.
이름 | 설명 |
---|---|
LICENSE.txt | ES 라이센스 관련 설명 |
NOTICE.txt | ES 관련 설명 |
bin | 자바 실행 변수 파일과 엘라스틱서치 실행 파일, 플러그인 설치 프로그램 |
config | ES 실행 환경 설정 파일 |
lib | 자바 라이브러리 파일이 모여 있는 디렉토리 |
logs | 로그가 쌓이는 디렉토리 |
modules | elasticsearch 의 기능에 도움을 주는 built-in module 이 모여 있는 디렉토리 |
plugins | 커스텀 플러그인 |
로 구성되어 있는데요. 여기서 가장 주목해서 봐야할 폴더는 ES 실행 환경 설정 파일이 담겨져 있는 ⭐️config⭐️ 폴더 입니다.
configs 폴더는 아래와 같이 구성되어 있는데 하나하나 설명해보도록 하겠습니다.
파일명 | 설명 |
---|---|
jvm.options | elasticsearch 에 허용해줄 메모리 크기를 설정 (링크) |
log4j2.properties | 로그 설정 파일 (링크) |
roles.yml | 권한 관련 파일 |
elasticsearch.yml | elasticsearch 의 전반적인 실행에 대해서 설정하는 파일 |
로 구성되어 있습니다.
앞으로 es 를 공부하면서 가장 많이 볼 파일이 config/elasticsearch.yml 파일인데요.
전반적인 실행에 대해서 설정하는 파일입니다. 한번 elasticsearch.yml 파일을 사용해서 cluster_name 을 바꿔보겠습니다.
cd config/
)vi elasticsearch.yml
)i
입력 후 insert mode 로 변환 :wq!
)docker container restart #{컨테이너명}
)을 해주고 다시 elasticsearch 상태를 조회하면 cluster_name 이 docker-cluster-test 로 바뀐 걸 확인 할 수 있습니다 🤓
cluster_name 외에도 elasticsearch.yml 파일을 통해서 설정할 수 있는 내용들이 많이 있는데요. 이건 추후 공부하면서 조금씩조금씩 더 알아보도록 하겠습니다 !