[ES] 2. docker 에서 ES 시작하기

mallin·2022년 3월 1일
2

ElasticSearch

목록 보기
2/9
post-thumbnail

elasticsearch 에 대해서 간단하게 알아봤으니 한번 es 를 직접 설치해서 사용해보자.
혹시 es 에 대해서 알고 싶으신 분들은 아래글을 참고 하면 된다.
➡️ [ES] 1. Elasticsearch 와 루씬

ES를 설치하는 방법

es 를 설치하는 방법은 총 두가지가 있다.

첫 번째, 각 컴퓨터에 직접 es 설치하기
두 번째, docker 를 사용해서 es 설치하기

docker 를 사용하는 것이 컴퓨터에 직접 설치하는 것보다 환경설정, 오류 등 신경써야할 것들이 적어지며 빠르게 설치할 수 있기 때문에 해당 포스팅에서는 docker 를 사용해서 es 를 사용하자 (첫번째 방법으로 시도했다가 오류 폭탄을 받은건 안 비밀😹)

docker 에 대해서 궁금하신 분들은 해당 포스팅을 참고 !
➡️ [이론] docker 란 ?

docker 에 ES 설치하기

본격적으로 docker 에 es 를 설치해보자.

⚠ docker 를 처음 사용해보는 경우
https://www.docker.com/get-started 에서
Docker Desktop 을 다운로드 한 다음 아래 예제를 따라해주세요.

첫번째, es 이미지 다운로드

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 이 있으면 정상적으로 설치된 겁니다.

두번째, docker 실행

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 명령어를 실행해줍니다.

정상적으로 정보가 잘 보이는 걸 확인할 수 있습니다 🙂

세번째, es 기본 구조 살펴보기

elasticsearch 컨테이너 안에 들어가서 기본 구조를 살펴보도록 하겠습니다.
컨테이너로 들어가기 위한 명령어는 다음과 같습니다.

docker exec -it #{컨테이너id} /bin/bash

#{컨테이너id} 에는 docker ps 로 알아낸 컨테이너 id 를 넣어주면 됩니다.

아래처럼 앞이 elasticsearch 로 바꼈다면 정상적으로 elasticsearch 컨테이너 안에 들어온겁니다 !

ll 을 통해서 전체 파일 구조를 봐보도록 하겠습니다.

이름설명
LICENSE.txtES 라이센스 관련 설명
NOTICE.txtES 관련 설명
bin자바 실행 변수 파일과 엘라스틱서치 실행 파일, 플러그인 설치 프로그램
configES 실행 환경 설정 파일
lib자바 라이브러리 파일이 모여 있는 디렉토리
logs로그가 쌓이는 디렉토리
moduleselasticsearch 의 기능에 도움을 주는 built-in module 이 모여 있는 디렉토리
plugins커스텀 플러그인

로 구성되어 있는데요. 여기서 가장 주목해서 봐야할 폴더는 ES 실행 환경 설정 파일이 담겨져 있는 ⭐️config⭐️ 폴더 입니다.

configs 폴더는 아래와 같이 구성되어 있는데 하나하나 설명해보도록 하겠습니다.

파일명설명
jvm.optionselasticsearch 에 허용해줄 메모리 크기를 설정 (링크)
log4j2.properties로그 설정 파일 (링크)
roles.yml권한 관련 파일
elasticsearch.ymlelasticsearch 의 전반적인 실행에 대해서 설정하는 파일

로 구성되어 있습니다.

앞으로 es 를 공부하면서 가장 많이 볼 파일이 config/elasticsearch.yml 파일인데요.
전반적인 실행에 대해서 설정하는 파일입니다. 한번 elasticsearch.yml 파일을 사용해서 cluster_name 을 바꿔보겠습니다.

  1. config 폴더로 이동 (cd config/)
  2. elasticsearch 파일 열기 (vi elasticsearch.yml)
  3. i 입력 후 insert mode 로 변환
  4. cluster.name 변경 (여기선 docker-cluster-test 로 변경해주겠습니다)

  1. 변경사항 저장 (:wq!)
  2. docker 컨테이너 리로드 (docker container restart #{컨테이너명})

을 해주고 다시 elasticsearch 상태를 조회하면 cluster_name 이 docker-cluster-test 로 바뀐 걸 확인 할 수 있습니다 🤓

cluster_name 외에도 elasticsearch.yml 파일을 통해서 설정할 수 있는 내용들이 많이 있는데요. 이건 추후 공부하면서 조금씩조금씩 더 알아보도록 하겠습니다 !

0개의 댓글