es는 docker를 사용하여 배포할 수 있습니다. es 클러스터 배포는 "docker-compose"를 사용하여 직접 수행할 수 있습니다. "docker-compose"는 docker 컨테이너를 사용하는 애플리케이션을 정의하고 실행하는 데 사용되는 docker 도구입니다. 컨테이너로 구성되어 "docker-compose"를 사용하면 컨테이너를 시작하기 위해 쉘 스크립트를 사용할 필요가 없습니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, docker 버전 19.03, Dell G3 컴퓨터.
es 클러스터 배포는 docker-compose를 사용하여 직접 수행할 수 있습니다.
Docker Compose는 복잡한 애플리케이션을 정의하고 실행하는 데 사용되는 Docker 도구입니다. Docker 컨테이너를 사용하는 애플리케이션은 일반적으로 여러 컨테이너로 구성됩니다. Docker Compose를 사용하면 컨테이너를 시작하기 위해 셸 스크립트를 사용할 필요가 없습니다.
Compose는 구성 파일을 통해 여러 Docker 컨테이너를 관리합니다. 구성 파일에서 모든 컨테이너는 서비스로 정의된 다음 docker-compose 스크립트를 사용하여 애플리케이션, 애플리케이션의 서비스 및 모든 종속 서비스를 시작, 중지 및 다시 시작합니다. 서비스 컨테이너는 개발을 위해 여러 컨테이너를 결합하는 시나리오에 매우 적합합니다.
지식 확장
ES 클러스터 소개
클러스터가 필요한 이유
단일 시스템 Elasticsearch는 필연적으로 데이터 저장과 관련해 두 가지 문제, 즉 대용량 데이터 저장 문제와 단일 실패 지점 문제에 직면하게 됩니다.
대량 데이터 저장 문제: 인덱스 라이브러리를 논리적으로 N개의 샤드(샤드)로 분할하여 여러 노드에 저장합니다.
단일 실패 지점 문제: 샤딩된 데이터를 서로 다른 노드(복제본)에 백업
ES 클러스터 관련 개념
클러스터(cluster): 공통 클러스터 이름을 가진 노드 그룹입니다.
노드: 클러스터의 Elasticsearch 인스턴스
샤드: 인덱스는 샤드라고 불리는 저장을 위해 여러 부분으로 분할될 수 있습니다. 클러스터 환경에서는 인덱스의 여러 샤드가 여러 노드로 분할될 수 있습니다
문제를 해결하세요. 데이터가 너무 많고 단일 지점 저장 공간이 제한되어 있습니다.
여기에서는 데이터를 shard0, shard1, shard2의 3개 샤드로 나눕니다.
기본 샤드: 복제본 샤드의 정의와 관련됩니다.
복제 샤드 각 기본 샤드는 하나 이상의 복제본을 가질 수 있으며 데이터는 기본 샤드와 동일합니다.
데이터 백업은 고가용성을 보장할 수 있지만, 각 샤드의 복사본 하나를 백업하면 필요한 노드 수가 두 배로 늘어나고 비용도 너무 높습니다!
고가용성과 비용 사이의 균형을 찾기 위해 다음과 같이 할 수 있습니다.
먼저 데이터를 샤딩하여 다른 노드에 저장합니다.
그런 다음 각 샤드를 백업하고 다른 노드에 넣습니다. 완료 서로 백업
이를 통해 필요한 서비스 노드 수를 크게 줄일 수 있습니다. 그림에 표시된 것처럼 샤드 3개와 각 샤드의 복사본 1개를 예로 들어 보겠습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!