Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Kann es mit Docker bereitgestellt werden?

Kann es mit Docker bereitgestellt werden?

WBOY
WBOYOriginal
2022-08-15 17:09:112413Durchsuche

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.

Kann es mit Docker bereitgestellt werden?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-Version 19.03, Dell G3-Computer.

Kann es mit Docker bereitgestellt werden?

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.

Kann es mit Docker bereitgestellt werden?

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:

Kann es mit Docker bereitgestellt werden?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn