Home  >  Article  >  Operation and Maintenance  >  Can es be deployed with docker?

Can es be deployed with docker?

WBOY
WBOYOriginal
2022-08-15 17:09:112412browse

es can be deployed using docker; deploying es clusters can be done directly using "docker-compose". "docker-compose" is a docker tool used to define and run complex applications, an application using docker containers , usually composed of multiple containers, using "docker-compose" eliminates the need to use shell scripts to start containers.

Can es be deployed with docker?

The operating environment of this tutorial: linux7.3 system, docker version 19.03, Dell G3 computer.

Can es be deployed with docker?

Deployment of es cluster can be done directly using docker-compose

Docker Compose is a Docker tool used to define and run complex applications. An application using Docker containers usually consists of multiple containers. Using Docker Compose no longer requires shell scripts to start containers.

Compose manages multiple Docker containers through a configuration file. In the configuration file, all containers are defined through services, and then the docker-compose script is used to start, stop and restart the application, and the services in the application. As well as all containers that rely on services, it is very suitable for scenarios where multiple containers are combined for development.

Expand knowledge

Introduction to ES cluster

Why a cluster is needed

Single-machine elasticsearch When doing data storage, you will inevitably face two problems: massive data storage problem and single point of failure problem.

Massive data storage problem: Logically split the index library into N shards and store them on multiple nodes

Single point failure problem: Split the shard data in different locations Node backup (replica)

ES cluster related concepts

  • Cluster (cluster): a group of nodes with a common cluster name.

  • Node: An Elasticearch instance in the cluster

  • Shard: The index can be split into different parts Storage is called sharding. In a cluster environment, different shards of an index can be split into different nodes

Solve the problem: the amount of data is too large and the single-point storage capacity is limited.

Can es be deployed with docker?

Here, we divide the data into 3 shards: shard0, shard1, shard2

  • Primary shard: Definition relative to replica shards.

  • Replica shard (Replica shard) Each primary shard can have one or more replicas, and the data is the same as the primary shard.

Data backup can ensure high availability, but one copy of each shard will double the number of nodes required, and the cost is too high!

In order to find a balance between high availability and cost, we can do this:

  • First shard the data and store it in different nodes

  • Then back up each shard and put it on the other node to complete mutual backup

This can greatly reduce the number of service nodes required, as shown in the figure, we use 3 shards, one copy of each shard is backed up as an example:

Can es be deployed with docker?

Build an ES cluster

Deploying an es cluster can be done directly using docker-compose, but your Linux virtual machine is required to have at least 4G of memory space

First write a docker-compose file with the following content:

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

File content introduction:

version: complse version

es01: node

image: mirror

container_name: container name

environment: environment variable

node.name: node name

cluster.name: cluster name, es automatically creates a cluster

discovery.seed_hosts: the other two Address, you can use the container name to interconnect

cluster.initial_master_nodes: initialized master node, can participate in the election

"ES_JAVA_OPTS=-Xms512m -Xmx512m": minimum and maximum JVM memory

volumes: Data volume address

ports: Port mapping

Recommended learning: "docker video tutorial"

The above is the detailed content of Can es be deployed with docker?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn