ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [docker] 도커 Elasticsearch 설치 및 kibana 설치
    인프라/docker 2021. 1. 13. 17:27

    싱글 노드 클러스터 

    docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.1
    

     

    멀티 노드 클러스터

    version: '3.3'
    services:
      es01:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
        container_name: es01
        environment:
          - node.name=es01
          - cluster.name=es-docker-cluster
          - discovery.seed_hosts=es02,es03
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data01:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
        networks:
          - elastic
      es02:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
        container_name: es02
        environment:
          - node.name=es02
          - cluster.name=es-docker-cluster
          - discovery.seed_hosts=es01,es03
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data02:/usr/share/elasticsearch/data
        networks:
          - elastic
      es03:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
        container_name: es03
        environment:
          - node.name=es03
          - cluster.name=es-docker-cluster
          - discovery.seed_hosts=es01,es02
          - cluster.initial_master_nodes=es01,es02,es03
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data03:/usr/share/elasticsearch/data
        networks:
          - elastic
    
    volumes:
      data01:
        driver: local
      data02:
        driver: local
      data03:
        driver: local
    
    networks:
      elastic:
        driver: bridge

    메모리가 안되면 자바 옵션을 Xms Xmx를 128 정도로 다 내려주자.

     

    Node es01 이 localhost:9200 으로 리슨 하고 있고 es02 와 es03 이 도커 네트워크로 통신하고 있다.

    포트 9200 이 모든 네트워크의 인터페이스여서 포트를 열어줘야 한다. 리눅스에서 조정하는 방법은 IPTAVLES로 직접 조정해야 한다. 엘라스틱 클러스터는 공개적으로 접속이 가능하고 잠재적으로는 FIREWall 세팅을 무시한다. 만약 9200 포트를 오픈하기를 원하지 않는다면 reverse proxy 를 사용하면 된다. docker-compose.yml 파일에서 9200:9200 이 부분을 127.0.0.1:9200:9200로 변경해주면, 오직 호스트 머신만 엘라스틱에 접근할 수 있다.

    도커 재시작 시에도 데이터를 유지하기 위해 volumes: 를 본인 pc 의 폴더로 설정해준다.

     

    실행

    docker-compose up

    잘 실행한지 확인

    curl -X GET "localhost:9200/_cat/nodes?v=true&pretty"

    실행 정지

    docker-compose down

    로컬 데이터 볼륨 까지 삭제

    docker-compose down -v

     

    실행 후 Docker 대시보드에서 본 모습입니다.

     

    엘라스틱 인덱스 추가 및 데이터 추가

    curl -X POST "localhost:9200/index_test/_doc/?pretty" -H 'Content-Type: application/json' -d'
    {
        "user" : "testuser",
        "post_date" : "2020-06-17T14:12:12",
        "message" : "trying out Elasticsearch"
    }
    '

    추가 한 데이터를 키바나에서 확인해 보자

     

     

    키바나 접속

    http://localhost:5601

     

    위에서 만든 index_test 가 있다.

     

     

    참고문헌

    https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html [공식 문서]

     

    반응형

    댓글

Designed by Tistory.