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

64-Bit-CentOs7-Quellcodeinstallation MySQL-5.6.35 Prozessfreigabe

Installieren Sie zuerst die abhängigen Pakete, um...

Aktivieren Sie den SSHD-Vorgang im Docker

Installieren Sie zunächst den OpenSSH-Server im D...

Docker-Tutorial: Container verwenden (einfaches Beispiel)

Wenn Sie mit Docker noch nicht vertraut sind, seh...

Faint: „Nutzen Sie Web 2.0, um standardkonforme Seiten zu erstellen“

Heute sprach jemand mit mir über ein Website-Entw...

Implementierung der Kommunikation zwischen Vue und Flask

axios installieren und Kommunikation implementier...

Grafisches Tutorial zur Installation der komprimierten Version von MySQL 8.0.15

In diesem Artikel wird die Installationsmethode d...

Analyse und Anwendung des Wasserfallflussprinzips unregelmäßiger Bilder

Das im Projekt aufgetretene Layoutproblem unregel...

Tutorial zur Remote-Verbindung mit einer MySQL-Datenbank unter Linux

Vorwort Ich bin kürzlich bei der Arbeit auf diese...

Beispielcode zum Setzen von Hotlinks und Koordinatenwerten für Webbilder

Manchmal müssen Sie mehrere Bereiche auf einem Bi...

Web-Kenntnisse: Lösung für die Koexistenz mehrerer IE-Versionen IETester

Meine Empfehlung Lösung für die Koexistenz mehrer...