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.
L'environnement d'exploitation de ce tutoriel : système linux7.3, docker version 19.03, ordinateur Dell G3.
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é.
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 :
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
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 DockerCe 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!