>  기사  >  운영 및 유지보수  >  Docker를 사용하여 es를 배포할 수 있나요?

Docker를 사용하여 es를 배포할 수 있나요?

WBOY
WBOY원래의
2022-08-15 17:09:112457검색

es는 docker를 사용하여 배포할 수 있습니다. es 클러스터 배포는 "docker-compose"를 사용하여 직접 수행할 수 있습니다. "docker-compose"는 docker 컨테이너를 사용하는 애플리케이션을 정의하고 실행하는 데 사용되는 docker 도구입니다. 컨테이너로 구성되어 "docker-compose"를 사용하면 컨테이너를 시작하기 위해 쉘 스크립트를 사용할 필요가 없습니다.

Docker를 사용하여 es를 배포할 수 있나요?

이 튜토리얼의 운영 환경: linux7.3 시스템, docker 버전 19.03, Dell G3 컴퓨터.

es를 docker로 배포할 수 있나요?

es 클러스터 배포는 docker-compose를 사용하여 직접 수행할 수 있습니다.

Docker Compose는 복잡한 애플리케이션을 정의하고 실행하는 데 사용되는 Docker 도구입니다. Docker 컨테이너를 사용하는 애플리케이션은 일반적으로 여러 컨테이너로 구성됩니다. Docker Compose를 사용하면 컨테이너를 시작하기 위해 셸 스크립트를 사용할 필요가 없습니다.

Compose는 구성 파일을 통해 여러 Docker 컨테이너를 관리합니다. 구성 파일에서 모든 컨테이너는 서비스로 정의된 다음 docker-compose 스크립트를 사용하여 애플리케이션, 애플리케이션의 서비스 및 모든 종속 서비스를 시작, 중지 및 다시 시작합니다. 서비스 컨테이너는 개발을 위해 여러 컨테이너를 결합하는 시나리오에 매우 적합합니다.

지식 확장

ES 클러스터 소개

클러스터가 필요한 이유

단일 시스템 Elasticsearch는 필연적으로 데이터 저장과 관련해 두 가지 문제, 즉 대용량 데이터 저장 문제와 단일 실패 지점 문제에 직면하게 됩니다.

대량 데이터 저장 문제: 인덱스 라이브러리를 논리적으로 N개의 샤드(샤드)로 분할하여 여러 노드에 저장합니다.

단일 실패 지점 문제: 샤딩된 데이터를 서로 다른 노드(복제본)에 백업

ES 클러스터 관련 개념

  • 클러스터(cluster): 공통 클러스터 이름을 가진 노드 그룹입니다.

  • 노드: 클러스터의 Elasticsearch 인스턴스

  • 샤드: 인덱스는 샤드라고 불리는 저장을 위해 여러 부분으로 분할될 수 있습니다. 클러스터 환경에서는 인덱스의 여러 샤드가 여러 노드로 분할될 수 있습니다

문제를 해결하세요. 데이터가 너무 많고 단일 지점 저장 공간이 제한되어 있습니다.

Docker를 사용하여 es를 배포할 수 있나요?

여기에서는 데이터를 shard0, shard1, shard2의 3개 샤드로 나눕니다.

  • 기본 샤드: 복제본 샤드의 정의와 관련됩니다.

  • 복제 샤드 각 기본 샤드는 하나 이상의 복제본을 가질 수 있으며 데이터는 기본 샤드와 동일합니다.

데이터 백업은 고가용성을 보장할 수 있지만, 각 샤드의 복사본 하나를 백업하면 필요한 노드 수가 두 배로 늘어나고 비용도 너무 높습니다!

고가용성과 비용 사이의 균형을 찾기 위해 다음과 같이 할 수 있습니다.

  • 먼저 데이터를 샤딩하여 다른 노드에 저장합니다.

  • 그런 다음 각 샤드를 백업하고 다른 노드에 넣습니다. 완료 서로 백업

이를 통해 필요한 서비스 노드 수를 크게 줄일 수 있습니다. 그림에 표시된 것처럼 샤드 3개와 각 샤드의 복사본 1개를 예로 들어 보겠습니다.

Docker를 사용하여 es를 배포할 수 있나요?

ES 구축 Cluster

es 클러스터 배포는 docker-compose를 사용하여 직접 수행할 수 있지만 Linux 가상 머신에는 최소 4G의 메모리 공간이 필요합니다. 먼저 다음 내용으로 docker-compose 파일을 작성합니다.

version: '2.2'
services:
  es01:
    image: elasticsearch:7.12.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
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: elasticsearch:7.12.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
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data02:/usr/share/elasticsearch/data
    ports:
      - 9201:9200
    networks:
      - elastic
  es03:
    image: elasticsearch:7.12.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
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic
    ports:
      - 9202:9200
volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local
networks:
  elastic:
    driver: bridge

파일 내용 소개:

version : complse 버전

es01: 노드

image: 미러

container_name: 컨테이너 이름

environment: 환경 변수

node.name: 노드 이름

cluster.name: 클러스터 name, es는 자동으로 클러스터를 생성합니다.

discovery.seed_hosts: 컨테이너 이름으로 상호 연결될 수 있는 다른 두 노드의 주소

cluster.initial_master_nodes: 선거에 참여할 수 있는 초기화된 마스터 노드

"ES_JAVA_OPTS=- Xms512m -Xmx512m": 최소 및 최대 JVM 메모리

volumes: 데이터 볼륨 주소

ports: 포트 매핑

권장 학습: "

docker 비디오 튜토리얼

"

위 내용은 Docker를 사용하여 es를 배포할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.