So verwenden Sie Docker-Compose zum Erstellen eines ELK-Clusters

So verwenden Sie Docker-Compose zum Erstellen eines ELK-Clusters

Auf alle Orchestrierungsdateien und Konfigurationsdateien kann über mein Github zugegriffen werden. Sie können schnell einen ES-Cluster mit 3 Instanzen und eine Kibana-Instanz erstellen, indem Sie einfach den Pfad in der Konfigurationsdatei ändern.

Planung

Es ist geplant, drei ES-Instanzen zu erstellen, um einen Cluster zu bilden, und eine Kibana-Instanz zu erstellen, um eine Verbindung mit dem Cluster herzustellen. Jede ES-Instanz verwendet eine lokale Konfigurationsdatei, um die Speicherung und Versionsverwaltung der Konfigurationsdatei zu erleichtern. Die Konfigurationsdatei von Kibana wird ebenfalls lokal abgelegt und per Dateizuordnung in den Container eingebunden.

Die allgemeine Verzeichnisstruktur ist wie folgt:

$Baum
.
├── docker-compose.yml
├── kibana.yml
├── Knoten1
│ └── es1.yml
├── Knoten2
│ └── es2.yml
└── Knoten3
 └── es3.yml

3 Verzeichnisse, 5 Dateien

Arrangement-Datei

Die Hauptorchestrierungsdatei ist docker-compose.yml

Version: "2.1"
Leistungen:
 es-Knoten1:
 Bild: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 Hostname: es-node1
 expose: #Den Port nicht für Anwendungen außerhalb des Containers freigeben - „9001“
 Ports: #Ports dem Host zugänglich machen – „9200:9200“
 - „9300:9300“
 Bände:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node1/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 Umfeld:
 - cluster.name=es-cluster
 - bootstrap.memory_lock=true
 – „ES_JAVA_OPTS=-Xms256m -Xmx256m“
 uGrenzwerte:
 Speichersperre:
 weich: -1
 schwer: -1
 Netzwerke:
 es-cluster-netzwerk:
 IPv4-Adresse: 172.21.0.10
 es-node2:
 Bild: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 Hostname: es-node2
 expose: #Den Port nicht für Anwendungen außerhalb des Containers freigeben - „9002“
 Ports: #Stellen Sie den Port dem Host zur Verfügung – „9201:9201“
 - „9301:9301“
 Bände:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node2/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 Umfeld:
 - cluster.name=es-cluster
 - bootstrap.memory_lock=true
 – „ES_JAVA_OPTS=-Xms256m -Xmx256m“
 uGrenzwerte:
 Speichersperre:
 weich: -1
 schwer: -1
 Netzwerke:
 es-cluster-netzwerk:
 IPv4-Adresse: 172.21.0.11
 es-node3:
 Bild: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 Hostname: es-node3
 expose: #Den Port nicht für Anwendungen außerhalb des Containers freigeben - „9003“
 Ports: #Stellen Sie den Port dem Host zur Verfügung – „9202:9202“
 - „9302:9302“
 Bände:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 Umfeld:
 - cluster.name=es-cluster
 - bootstrap.memory_lock=true
 – „ES_JAVA_OPTS=-Xms256m -Xmx256m“
 uGrenzwerte:
 Speichersperre:
 weich: -1
 schwer: -1
 Netzwerke:
 es-cluster-netzwerk:
 IPv4-Adresse: 172.21.0.12
 kibana:
 Bild: docker.elastic.co/kibana/kibana:6.7.0
 Häfen:
 - „5601:5601“
 Bände:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/kibana.yml:/usr/share/kibana/config/kibana.yml
 Umfeld:
 -ELASTICSEARCH_URL=http://es-node1:9200
 Netzwerke:
 - es-Cluster-Netzwerk
Netzwerke:
 es-cluster-netzwerk:
 Treiber: Brücke
 ipam:
 Treiber: Standard
 Konfiguration:
 - Subnetz: 172.21.0.0/16
 Gateway: 172.21.0.1

Die ES-Konfigurationsdatei wählt nur ein Beispiel wie folgt aus:

Clustername: Elasticsearch-Cluster
Knotenname: es-node1
Netzwerk.Bind_Host: 0.0.0.0
Netzwerk.Publish_Host: 172.21.0.10
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: wahr
http.cors.allow-origin: "*"
node.master: wahr 
node.data: wahr 
discovery.zen.ping.unicast.hosts: ["172.21.0.10:9300","172.21.0.11:9301","172.21.0.12:9302"]
Entdeckung.zen.minimum_master_nodes: 2

Die Konfigurationsdatei von Kibana lautet wie folgt

Servername: Kibana
server.host: "0"
elasticsearch.hosts: [ "http://es-node1:9200", "http://es-node2:9201", "http://es-node3:9202" ]
xpack.monitoring.ui.container.elasticsearch.enabled: falsch

Startbefehl

Nachdem die Konfigurationsdatei vorbereitet ist, können Sie den Cluster starten

$ docker-compose up -d

Der Startvorgang kann langsam sein. Sie können die Clusterknoten über die Befehlszeile sehen.

$ curl http://localhost:9200/_cat/nodes
172.21.0.12 51 96 29 6,53 6,43 3,72 md - es-node3
172.21.0.11 47 96 30 6,53 6,43 3,72 mdi - es-node2
172.21.0.10 49 96 30 6,53 6,43 3,72 mdi * es-node1

Im nachfolgenden Verwendungsprozess können Sie den Dienst über den Befehl docker-compose starten und stoppen. Wenn Sie die zugehörigen Instanzen nicht behalten möchten, können Sie docker-compose down verwenden, um den Container herunterzufahren und zu löschen.

Verweise

Elasticsearch-Dokument
Docker-Compose-Benutzerdefiniertes Netzwerk, feste Container-IP-Adresse
Unterschied zwischen Docker-Compose-Ports und Expose

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Implementierung der ELK-Bereitstellungsmethode mit einem Klick in Docker Compose
  • Beispielcode zum Bereitstellen von ELK mit Docker-Compose
  • So erstellen Sie ein Elk-System mit Docker Compose
  • Verwenden Sie Docker Compose, um ELK schnell bereitzustellen (getestet und effektiv)

<<:  js implementiert Axios Limit-Anforderungswarteschlange

>>:  Grafische Einführung in den Unterschied zwischen := und = in MySQL

Artikel empfehlen

InnoDB-Typ MySql stellt Tabellenstruktur und Daten wieder her

Voraussetzung: Speichern Sie die .frm- und .ibd-D...

Der Unterschied zwischen redundanten und doppelten Indizes in MySQL

MySQL ermöglicht das Erstellen mehrerer Indizes f...

So führen Sie das Springboot-Projekt im Docker aus

1. Klicken Sie unten in IDEA auf Terminal und geb...

Beispiel zum Aktivieren des Brotli-Komprimierungsalgorithmus für Nginx

Brotli ist ein neues Datenformat, das eine um 20 ...

Mehrere Möglichkeiten zum Senden von HTML-Formularen_PowerNode Java Academy

Methode 1: Absenden über den Absenden-Button <...

Wie kann MySQL das Löschen und Weglaufen von Datenbanken wirksam verhindern?

Inhaltsverzeichnis Einstellungen für den abgesich...

80 Zeilen Code zum Schreiben eines Webpack-Plugins und Veröffentlichen auf npm

1. Einleitung Ich habe vor Kurzem die Prinzipien ...

Implementierung von Diensten im Docker für den Zugriff auf Hostdienste

Inhaltsverzeichnis 1. Szenario 2. Lösung 3. Fazit...

Beispieloperation für die Summe des Mysql-Varchar-Typs

Einige Freunde haben beim Erlernen von Datenbanke...

Zusammenfassung der Wissenspunkte zum MySQL ALTER-Befehl

Wenn wir den Tabellennamen ändern oder die Tabell...