es kann mit Docker bereitgestellt werden; die Bereitstellung von ES-Clustern kann direkt mit „Docker-Compose“ erfolgen. „Docker-Compose“ ist ein Docker-Tool, das zum Definieren und Ausführen komplexer Anwendungen verwendet wird, die normalerweise aus mehreren bestehen Besteht aus Containern, macht die Verwendung von „docker-compose“ die Verwendung von Shell-Skripten zum Starten der Container überflüssig.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-Version 19.03, Dell G3-Computer.
Die Bereitstellung von es-Clustern kann direkt mit Docker-Compose erfolgen.
Docker Compose ist ein Docker-Tool zum Definieren und Ausführen komplexer Anwendungen. Eine Anwendung, die Docker-Container verwendet, besteht normalerweise aus mehreren Containern. Für die Verwendung von Docker Compose sind keine Shell-Skripte mehr erforderlich, um Container zu starten.
Compose verwaltet mehrere Docker-Container über eine Konfigurationsdatei. In der Konfigurationsdatei werden alle Container nach Diensten definiert. Anschließend wird das Docker-Compose-Skript zum Starten, Stoppen und Neustarten der Anwendung, der Dienste in der Anwendung und aller abhängigen Dienste verwendet Services-Container eignen sich sehr gut für Szenarien, in denen mehrere Container für die Entwicklung kombiniert werden.
Wissen erweitern
Einführung in ES-Cluster
Warum ein Cluster benötigt wird
Die elastische Suche auf einer Maschine wird zwangsläufig mit zwei Problemen bei der Datenspeicherung konfrontiert sein: massive Datenspeicherprobleme und Single-Point-of-Failure-Probleme.
Massives Datenspeicherproblem: Teilen Sie die Indexbibliothek logisch in N Shards (Shards) auf und speichern Sie sie auf mehreren Knoten.
Single Point of Failure-Problem: Sichern Sie Shard-Daten auf verschiedenen Knoten (Replikat)
ES Clusterbezogene Konzepte
Cluster (Cluster): eine Gruppe von Knoten mit einem gemeinsamen Clusternamen.
Node: Eine Elasticsearch-Instanz im Cluster
Shard: Der Index kann zur Speicherung in verschiedene Teile, sogenannte Shards, aufgeteilt werden. In einer Clusterumgebung können verschiedene Shards eines Index in verschiedene Knoten aufgeteilt werden.
Lösen Sie das Problem: zu viele Daten und begrenzter Einzelpunktspeicher.
Hier teilen wir die Daten in 3 Shards auf: Shard0, Shard1, Shard2
Primärer Shard: relativ zur Definition von Replikat-Shards.
Replikat-Shard Jeder primäre Shard kann ein oder mehrere Replikate haben, und die Daten sind dieselben wie der primäre Shard.
Datensicherung kann eine hohe Verfügbarkeit gewährleisten, aber die Sicherung einer Kopie jedes Shards verdoppelt die Anzahl der erforderlichen Knoten und die Kosten sind zu hoch!
Um ein Gleichgewicht zwischen hoher Verfügbarkeit und Kosten zu finden, können wir Folgendes tun:
Zuerst die Daten aufteilen und in verschiedenen Knoten speichern.
Dann jeden Shard sichern und auf dem anderen Knoten ablegen. vollständig Sich gegenseitig sichern
Dadurch kann die Anzahl der erforderlichen Serviceknoten erheblich reduziert werden. Wie in der Abbildung gezeigt, nehmen wir als Beispiel 3 Shards und eine Kopie jedes Shards:
Erstellen Sie einen ES Cluster
Die Bereitstellung eines ES-Clusters kann direkt mit Docker-Compose erfolgen, aber Ihre virtuelle Linux-Maschine muss über mindestens 4 GB Speicherplatz verfügen. Schreiben Sie zunächst eine Docker-Compose-Datei mit dem folgenden Inhalt:
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
Inführung in den Dateiinhalt:
Version: complse Version
es01: Knoten
image: Mirror
Container_Name: Container Name
Environment: Umgebungsvariable
Node.Name: Knotenname
cluster.Name: Cluster name, es erstellt automatisch einen Cluster
discovery: Die Adressen der anderen beiden, die durch Containernamen miteinander verbunden werden können
cluster.initial_master_nodes: Der initialisierte Masterknoten, der an der Wahl teilnehmen kann
"ES_JAVA_OPTS=- Xms512m –
Das obige ist der detaillierte Inhalt vonKann es mit Docker bereitgestellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!