Maison  >  Article  >  Opération et maintenance  >  Peut-il être déployé avec Docker ?

Peut-il être déployé avec Docker ?

WBOY
WBOYoriginal
2022-08-15 17:09:112468parcourir

es peuvent être déployées à l'aide de Docker ; le déploiement de clusters es peut être effectué directement à l'aide de "docker-compose". "docker-compose" est un outil Docker utilisé pour définir et exécuter des applications complexes. Une application utilisant des conteneurs Docker est généralement composée de plusieurs. Composé de conteneurs, l'utilisation de "docker-compose" élimine le besoin d'utiliser des scripts shell pour démarrer les conteneurs.

Peut-il être déployé avec Docker ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, docker version 19.03, ordinateur Dell G3.

Est-il possible de déployer es avec docker ?

Le déploiement du cluster es peut être effectué directement à l'aide de docker-compose

Docker Compose est un outil Docker utilisé pour définir et exécuter des applications complexes. Une application utilisant des conteneurs Docker se compose généralement de plusieurs conteneurs. L'utilisation de Docker Compose ne nécessite plus de scripts shell pour démarrer les conteneurs.

Compose gère plusieurs conteneurs Docker via un fichier de configuration. Dans le fichier de configuration, tous les conteneurs sont définis par services, puis le script docker-compose est utilisé pour démarrer, arrêter et redémarrer l'application, les services de l'application et tous ceux qui en dépendent. Les conteneurs de services conviennent parfaitement aux scénarios dans lesquels plusieurs conteneurs sont combinés pour le développement.

Développer les connaissances

Introduction aux clusters ES

Pourquoi un cluster est nécessaire

La recherche élastique sur une seule machine sera inévitablement confrontée à deux problèmes de stockage de données : des problèmes de stockage de données massifs et des problèmes de point de défaillance unique.

Problème de stockage massif de données : divisez logiquement la bibliothèque d'index en N fragments (fragments) et stockez-les sur plusieurs nœuds

Problème de point de défaillance unique : sauvegardez les données fragmentées sur différents nœuds (réplique)

Concepts liés au cluster ES

  • Cluster (cluster) : un groupe de nœuds avec un nom de cluster commun.

  • Node : Une instance Elasticearch dans le cluster

  • Shard : L'index peut être divisé en différentes parties pour le stockage, appelées fragments. Dans un environnement de cluster, différentes partitions d'un index peuvent être divisées en différents nœuds

Résolvez le problème : trop de données et stockage monopoint limité.

Peut-il être déployé avec Docker ?

Ici, nous divisons les données en 3 fragments : shard0, shard1, shard2

  • Fragment primaire : par rapport à la définition des fragments de réplique.

  • Partage de réplique Chaque fragment principal peut avoir une ou plusieurs répliques, et les données sont les mêmes que celles du fragment principal.

La sauvegarde des données peut garantir une haute disponibilité, mais sauvegarder une copie de chaque fragment doublera le nombre de nœuds requis, et le coût est trop élevé !

Afin de trouver un équilibre entre haute disponibilité et coût, nous pouvons faire ceci :

  • Partagez d'abord les données et stockez-les dans différents nœuds

  • Sauvegardez ensuite chaque fragment et placez-le sur l'autre nœud, complet Sauvegarder les uns les autres

Cela peut réduire considérablement le nombre de nœuds de service requis. Comme le montre la figure, nous prenons 3 fragments et sauvegardons une copie pour chaque fragment à titre d'exemple :

Peut-il être déployé avec Docker ?

Construisez un. Cluster ES

Le déploiement d'un cluster es peut être effectué directement à l'aide de docker-compose, mais votre machine virtuelle Linux doit disposer d'au moins 4 Go d'espace mémoire. Tout d'abord, écrivez un fichier docker-compose avec le contenu suivant :

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
.

Introduction au contenu du fichier :

version : version complète

es01 : nœud

image : miroir

container_name : nom du conteneur

environnement : variable d'environnement

node.name : nom du nœud

cluster.name : nom du cluster, es crée automatiquement un cluster

discovery. seed_hosts : Les adresses des deux autres, qui peuvent être interconnectées par des noms de conteneurs

cluster.initial_master_nodes : Le nœud maître initialisé, qui peut participer à l'élection

"ES_JAVA_OPTS= -Xms512m -Xmx512m : la mémoire JVM minimale et maximale

volumes : adresse du volume de données

ports : mappage des ports

Apprentissage recommandé : "

tutoriel vidéo Docker

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn