반응형

싱글 노드 클러스터 

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 [공식 문서]

 

반응형

+ Recent posts