Detailliertes Tutorial zur Installation des ElasticSearch:7.8.0-Clusters mit Docker

Detailliertes Tutorial zur Installation des ElasticSearch:7.8.0-Clusters mit Docker

Der ElasticSearch-Cluster unterstützt動態請求的方式und靜態配置文件zum Erstellen des Clusters

Offizielle Dokumentation zu dynamischen Cluster-Verbindungsmethoden: https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html

Vorarbeit

Beschreibung der Parameter auf der offiziellen Website:
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-settings.html

下載elsticsearch 7.8.0

Docker-Pull Elasticsearch:7.8.0

Erstellen Sie ein Netzwerk es_net, um den Elasticsearch-Cluster zu platzieren

Docker-Netzwerk erstellen --subnet=172.18.0.0/24 es_net

Gemäß den Informationen WORKDIR /usr/share/elasticsearch in der DockerFile-Datei auf der offiziellen Website können wir erkennen, dass sich der Installationsort von Elasticsearch im Verzeichnis /usr/share/elasticsearch befindet. Um nachfolgende Vorgänge zu erleichtern, erstellen Sie ein Datenvolumen, um die von Elasticsearch generierten Daten dem Host zuzuordnen, um zu verhindern, dass ES abstürzt und Daten nicht wiederhergestellt werden können.

Erstellen eines Datenvolumens

Docker-Volume erstellen es_data01
Docker-Volume erstellen es_data02
Docker-Volume erstellen es_data03
#Öffentliche Konfigurationsdateien und Plugin-Speicherort Docker-Volume erstellen es_conf
Docker-Volume erstellt es_plugins

Erstellen Sie drei YML-Konfigurationsdateien zum Speichern von Daten, Konfigurationen und Plug-Ins

Dynamischer Aufbau eines ElasticSearch-Clusters (empfohlen)

Dies bedeutet, dass Sie den Clusteraufbau abschließen können, indem Sie einfach ElasticSearch starten und dann die in ES integrierten Operationen im RestFul-Stil verwenden.
Die offizielle Startmethode in Dockerhub besteht darin, einen einzelnen Knoten und drei ElasticSearch-Knoten separat zu starten.

Starten Sie es01

docker run -it -d --restart immer -p 9201:9200 -p 9301:9300 \
--name es01 --network=es_net --ip=172.18.0.101 \
-v es_data01:/usr/share/elasticsearch/data \
-v es_conf:/usr/share/elasticsearch/conf \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e "Entdeckung.Typ=Einzelknoten" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0

Starten Sie es02

docker run -it -d --restart immer -p 9202:9200 -p 9302:9300 \
--name es02 --network=es_net --ip=172.18.0.102 \
-v es_data02:/usr/share/elasticsearch/data \
-v es_conf:/usr/share/elasticsearch/conf \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e "Entdeckung.Typ=Einzelknoten" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0

Starten Sie es03

docker run -it -d --restart immer -p 9203:9200 -p 9303:9300 \
--name es03 --network=es_net --ip=172.18.0.103 \
-v es_data03:/usr/share/elasticsearch/data \
-v es_conf:/usr/share/elasticsearch/conf \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e "Entdeckung.Typ=Einzelknoten" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0

Über die PUT-Methode können Sie den Linux-Curl-Befehl verwenden, um auf es02 und es03 zu arbeiten

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Inhaltstyp: application/json' -d'
{
 "hartnäckig" : {
 "Cluster": {
 "Fernbedienung" : {
 "Führer" : {
  "Samen" : [
  „127.0.0.1:9300“ 
  ]
 }
 }
 }
 }
}
'

Persistentes Update

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Inhaltstyp: application/json' -d'
{
 "hartnäckig" : {
 "indices.recovery.max_bytes_per_sec" : "50 MB"
 }
}
'

Transiente aktualisieren

curl -X PUT "localhost:9200/_cluster/settings?flat_settings=true&pretty" -H 'Inhaltstyp: application/json' -d'
{
 "vorübergehend" : {
 "indices.recovery.max_bytes_per_sec": "20 MB"
 }
}
'

Löschen vorübergehender Konfigurationsinhalte

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Inhaltstyp: application/json' -d'
{
 "vorübergehend" : {
 "indices.recovery.max_bytes_per_sec" : null
 }
}
'

Alle vorübergehenden Einstellungen entfernen

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Inhaltstyp: application/json' -d'
{
 "vorübergehend" : {
 "indices.recovery.*" : null
 }
}
'

ElasticSearch startet den Cluster über eine statische Konfigurationsdatei

Der Grund für den Fehler dürfte darin liegen, dass beim Starten des Containers zu wenig Parameter zur Verfügung stehen.
Im offiziellen Website-Dokument heißt es, dass zukünftige Versionen discovery.zen.ping.unicast.hosts nicht mehr verwenden werden und stattdessen discovery.seed_hosts verwenden werden.

Konfigurationsdateiinformationen des Knotens es-node1

vim /var/lib/docker/volumes/es_conf/_data/es01.yml

Bitte ändern Sie die Host-IP und die Portadresse der ES-Clusterkommunikation in der Kommentarzeile

Clustername: Elasticsearch-Cluster
Knotenname: es-node1
Netzwerk.Bind_Host: 0.0.0.0
network.publish_host: 192.168.117.231 #Ändern Sie die IP des Docker-Hosts
http.port: 9200 #Dies befindet sich innerhalb des Containers, also muss es nicht geändert werden transport.tcp.port: 9300 #Dies befindet sich innerhalb des Containers, also muss es nicht geändert werden http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: wahr 
node.data: wahr 
Entdeckung.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"] 
Entdeckung.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
#Verwenden Sie zum Erstellen unterschiedliche Ports eines Hosts und geben Sie beim Starten des Docker-Containers den Mapping-Port über -p an

Aus der obigen Konfigurationsdatei können wir ersehen, dass die Ports 9300, 9301 und 9302 zugeordnet werden müssen. Diese Ports werden für die Clusterkommunikation verwendet, d. h. die drei Knotenbindungsports sind -p 9300:9300, -p 9301:9300 und -p 9302:9300.
Gleichzeitig können wir die Verwendung von -p 9200:9200, -p 9201:9200, -p 9202:9200 starten.


Erstellen Sie eine Tabelle:

Knoten An Host-Port 1 binden An Host-Port 2 binden
es-node1 9200 9300
es-node2 9201 9301
es-node3 9202 9301
Wirkung Häfen, die externe Dienste anbieten Der Port für die Kommunikation zwischen es1- und es3-Clustern
Das heißt, die Ports 9200-9202 und 9300-9302 des Hosts (192.168.117.231) werden vom es-Cluster verwendet.


Konfigurationsdateiinformationen des Knotens es-node2

vim /var/lib/docker/volumes/es_conf/_data/es02.yml

Der Unterschied zu es-node1 besteht darin, dass der Knotenname geändert wird

Clustername: Elasticsearch-Cluster
Knotenname: es-node2
Netzwerk.Bind_Host: 0.0.0.0
network.publish_host: 192.168.117.231 #Ändern Sie die IP des Docker-Hosts
http.port: 9200 #Dies befindet sich innerhalb des Containers, also muss es nicht geändert werden transport.tcp.port: 9300 #Dies befindet sich innerhalb des Containers, also muss es nicht geändert werden http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: wahr 
node.data: wahr 
Entdeckung.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"]
Entdeckung.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
#Verwenden Sie zum Erstellen unterschiedliche Ports eines Hosts und geben Sie beim Starten des Docker-Containers den Mapping-Port über -p an

Konfigurationsdateiinformationen des Knotens es-node3

vim /var/lib/docker/volumes/es_conf/_data/es02.yml

Der Unterschied zu es-node1 besteht darin, dass der Knotenname geändert wird

Clustername: Elasticsearch-Cluster
Knotenname: es-node3
Netzwerk.Bind_Host: 0.0.0.0
network.publish_host: 192.168.117.231 #Ändern Sie die IP des Docker-Hosts
http.port: 9200 #Dies befindet sich innerhalb des Containers, also muss es nicht geändert werden transport.tcp.port: 9300 #Dies befindet sich innerhalb des Containers, also muss es nicht geändert werden http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: wahr 
node.data: wahr 
Entdeckung.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"]
Entdeckung.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
#Verwenden Sie zum Erstellen unterschiedliche Ports eines Hosts und geben Sie beim Starten des Docker-Containers den Mapping-Port über -p an

Starten Sie die Cluster nacheinander

Startbefehl es-node1, Docker-Prozessalias es01

Das verwendete Netzwerk ist die oben erstellte Netzwerkkarte es_net, und die interne Netzwerk-IP 172.18.0.100 des angegebenen Knotens muss sich im selben Netzwerksegment wie es_net befinden

docker run -it -d --restart immer -p 9200:9200 -p 9300:9300 \
--name es01 --network=es_net --ip=172.18.0.100 \
-v es_data01:/usr/share/elasticsearch/data \
-v /var/lib/docker/volumes/es_conf/_data/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0

ES_JAVA_OPTS gibt den von es verwendeten Speicher an, um zu verhindern, dass beim Starten von es zu viel Speicherplatz beansprucht wird.
--restart always Das Datenträgermapping wird weggelassen. Zu beachten ist lediglich, dass die Konfigurationsdatei es01.yml auf die Konfigurationsdatei gemappt wird, die beim Start des internen es verwendet wird.


Startbefehl „es-node2“

docker run -it -d --restart immer -p 9201:9200 -p 9301:9300 \
--name es02 --network=es_net --ip=172.18.0.101 \
-v es_data02:/usr/share/elasticsearch/data \
-v /var/lib/docker/volumes/es_conf/_data/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0

Startbefehl „es-node3“

docker run -it -d --restart immer -p 9202:9200 -p 9302:9300 \
--name es03 --network=es_net --ip=172.18.0.102 \
-v es_data03:/usr/share/elasticsearch/data \
-v /var/lib/docker/volumes/es_conf/_data/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v es_plugins:/usr/share/elasticsearch/plugins \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0

Dies ist das Ende dieses Artikels zur Installation des ElasticSearch:7.8.0-Clusters mit Docker. Weitere Informationen zur Installation des ElasticSearch-Clusters mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Clusterkonstruktion in ElasticSearch 6.4.0
  • ElasticSearch vernünftige Zuweisung des Indexfragmentierungsprinzips
  • So stellen Sie mit Docker schnell einen Elasticsearch-Cluster bereit
  • Detaillierte Erläuterung der Clusterkonstruktion und des Daten-Sharding-Prozesses von Elasticsearch

<<:  GET POST Unterschiede

>>:  Konfigurationslösung für die MySQL Dual-Master-Architektur (Master-Master)

Artikel empfehlen

Lassen Sie uns ausführlich über Vues Mixin und Vererbung sprechen

Inhaltsverzeichnis Vorwort Mischen Mixin-Hinweis ...

Unterschied zwischen HTML ReadOnly und Enabled

Das Textfeld mit dem ReadOnly-Attribut wird auf de...

So verbinden Sie JDBC mit MySQL 5.7

1. Bereiten Sie zunächst die MySQL- und Eclipse-U...

Beispielmethode zum Anzeigen der mit MySQL verbundenen IP-Adresse

Spezifische Methode: Öffnen Sie zuerst die Eingab...

Lösung für Verbindungsfehler beim MySQL-Server 5.5

Die Lösung für das Problem, dass MySQL keine Verb...

Lösen Sie das Problem, dass die mit nginx erhaltene IP-Adresse 127.0.0.1 ist

Holen Sie sich das IP-Tool importiere lombok.exte...

Eine ausführliche Diskussion zur Detailanalyse im Webdesign

Bei der Designarbeit höre ich oft, dass an der Übe...

Das Submit-Ereignis des Formulars reagiert nicht

1. Problembeschreibung <br />Wenn JS verwen...