Verwenden Sie Docker, um den Kong-Clusterbetrieb aufzubauen

Verwenden Sie Docker, um den Kong-Clusterbetrieb aufzubauen

Es ist sehr einfach, einen Kong-Cluster unter dem Docker-Container zu erstellen. Die Einführung auf der offiziellen Website ist ebenfalls sehr einfach. Anfänger wissen oft nicht, wie sie damit umgehen sollen. Nach sorgfältigem Nachdenken habe ich es endlich gebaut.

Die Grundidee: Verschiedene Kongs verbinden sich mit derselben Datenbank (nur ein Satz)

Schwierigkeit: Wie man Kong verwendet, um eine Verbindung zur gleichen Datenbank auf verschiedenen Hosts herzustellen

Erfordern:

1. Zwei Hosts 172.16.100.101 172.16.100.102

Schritt:

1. Installieren Sie die Datenbank auf 101 (verwenden Sie hier Cassandra)

docker run -d --name kong-datenbank \
       -p 9042:9042 \
       Cassandra: neueste

2. Migrieren Sie die Datenbank (Sie können die Initialisierung der Datenbank verstehen)

docker run --rm \
  --link kong-datenbank:kong-datenbank \
  -e "KONG_DATABASE=cassandra" \
  -e "KONG_PG_HOST=Kong-Datenbank" \
  -e "KONG_CASSANDRA_CONTACT_POINTS=Kong-Datenbank" \
  Kong: Neueste Kong-Migrationen

3. Kong installieren

docker run -d --name kong \
  --link kong-datenbank:kong-datenbank \
  -e "KONG_DATABASE=cassandra" \
  -e "KONG_PG_HOST=Kong-Datenbank" \
  -e "KONG_CASSANDRA_CONTACT_POINTS=Kong-Datenbank" \
  -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
  -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
  -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
  -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
  -p 8000:8000 \
  -p 8443:8443 \
  -p 8001:8001 \
  -p 8444:8444 \
  Kong: neueste

Hinweis: Die oben genannten drei Schritte werden alle auf 101 abgeschlossen, und die offizielle Website hat https://getkong.org/install/docker/?_ga=2.68209937.1607475054.1519611673-2089953626.1519354770. Der nächste vierte Schritt wird auf einem anderen Host 102 abgeschlossen. Link kann auf demselben Host verwendet werden, aber Link kann nicht für Containerzuordnungen auf verschiedenen Hosts verwendet werden. Die folgende Konfiguration ist ausreichend

4. Installieren Sie einen weiteren Kong auf 102, um einen Kong-Cluster mit mehreren Knoten zu implementieren

docker run -d --name kong\
 -e "KONG_DATABASE=cassandra" \
 -e "KONG_PG_HOST=Kong-Datenbank" \
 -e "KONG_CASSANDRA_CONTACT_POINTS=172.16.100.101" \
 -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
 -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
 -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
 -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
 -p 8000:8000 \
 -p 8443:8443 \
 -p 8001:8001 \
 -p 8444:8444 \
 Kong: neueste

5. Hier wird die Cassandra-Datenbank verwendet, daher müssen Sie einen Konfigurationsparameter db_update_propagation ändern. Der Standardwert ist 0, der auf 5 geändert werden kann. Geben Sie den Container ein

docker exec -it kong bash //Geben Sie den Kong-Container ein cd etc/kong //Geben Sie das Verzeichnis ein cp kong.conf.default kong.conf //Kopieren Sie die Datei kong.conf.default in die Datei kong.conf vi kong.conf //Ändern Sie das Konfigurationselement db_update_propagation

exit //Verlasse den leeren Container

Docker Neustart Kong //Kong neu starten

Hinweis: Kong auf 101 und 102 muss dieses Konfigurationselement ändern. Eine Einführung in das Konfigurationselement db_update_propagation finden Sie auf der offiziellen Website.

6. Überprüfen Sie den Kong-Cluster

So können Sie eine API auf 101 registrieren

curl -i -X ​​​​POST \
 --url http://172.16.100.101:8001/apis/ \
 --data 'name=beispiel-api' \
 --data 'hosts=beispiel.com' \
 --data 'upstream_url=http://mockbin.org'

Überprüfen Sie anschließend, ob die API erfolgreich registriert wurde:

curl -i http://172.16.100.101:8001/apis/beispiel-api

Die Rendite ist wie folgt:

Sie können auch über den 102-Maschinen-Host abfragen:

curl -i http://172.16.100.102:8001/apis/beispiel-api

Wenn dasselbe Ergebnis wie oben zurückgegeben wird, bedeutet dies, dass auf dieselbe API zugegriffen werden kann. Die API-Informationen werden in der Datenbank gespeichert, was bedeutet, dass auf dieselbe Datenbank zugegriffen werden kann. Auf diese Weise wird Ihr Kong-Cluster erfolgreich erstellt. Ich hoffe, es wird Ihnen hilfreich sein.

Ergänzendes Wissen: Verwenden Sie Docker-Compose, um einen Hadoop-Cluster zu erstellen

Laden Sie das Docker-Image herunter

Laden Sie zunächst die fünf Docker-Images herunter, die Sie verwenden müssen

Docker Pull BDE2020 / Hadoop-Namensknoten: 1.1.0-Hadoop2.7.1-Java8
Docker-Pull BDE2020 / Hadoop-Datanode: 1.1.0-Hadoop2.7.1-Java8
Docker-Pull BDE2020/Hadoop-Resourcemanager:1.1.0-Hadoop2.7.1-Java8
Docker-Pull BDE2020/Hadoop-Historyserver:1.1.0-Hadoop2.7.1-Java8
Docker-Pull BDE2020 / Hadoop-NodeManager: 1.1.0-Hadoop2.7.1-Java8

Festlegen der Hadoop-Konfigurationsparameter

Erstellen Sie eine hadoop.env-Datei mit folgendem Inhalt:

CORE_CONF_fs_defaultFS=hdfs://namenode:8020
CORE_CONF_hadoop_http_staticuser_user=root
CORE_CONF_hadoop_proxyuser_hue_hosts=*
CORE_CONF_hadoop_proxyuser_hue_groups=*

HDFS_CONF_dfs_webhdfs_enabled=true
HDFS_CONF_dfs_permissions_enabled=false

YARN_CONF_yarn_log___aggregation___enable=true
YARN_CONF_yarn_resourcemanager_recovery_enabled=true
YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore
YARN_CONF_yarn_resourcemanager_fs_state___store_uri=/rmstate
YARN_CONF_yarn_nodemanager_remote___app___log___dir=/App-Protokolle
YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/
YARN_CONF_yarn_timeline___service_enabled=true
YARN_CONF_yarn_timeline___service_generic___application___history_enabled=true
YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled=true
YARN_CONF_yarn_resourcemanager_hostname=Ressourcenmanager
YARN_CONF_yarn_timeline___service_hostname=Historyserver
YARN_CONF_yarn_resourcemanager_address=Ressourcenmanager:8032
YARN_CONF_yarn_resourcemanager_scheduler_address=Ressourcenmanager:8030
YARN_CONF_yarn_resourcemanager_resource___tracker_address=Ressourcenmanager:8031

Erstellen Sie eine Docker-Compose-Datei

Erstellen Sie eine Datei docker-compose.yml mit folgendem Inhalt:

Version: "2"

Leistungen:
 Namensknoten:
  Bild: bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8
  Containername: Namensknoten
  Bände:
   – hadoop_namenode:/hadoop/dfs/name
  Umfeld:
   - CLUSTER_NAME=Test
  Umgebungsdatei:
   - ./hadoop.env

 Ressourcenmanager:
  Bild: bde2020/hadoop-resourcemanager:1.1.0-hadoop2.7.1-java8
  Containername: Ressourcenmanager
  hängt ab von:
   - Namensknoten
   -Datenknoten1
   -Datenknoten2
   -Datenknoten3
  Umgebungsdatei:
   - ./hadoop.env

 Verlaufsserver:
  Bild: bde2020/hadoop-historyserver:1.1.0-hadoop2.7.1-java8
  Containername: Verlaufsserver
  hängt ab von:
   - Namensknoten
   -Datenknoten1
   -Datenknoten2
   -Datenknoten3
  Bände:
   - hadoop_historyserver:/hadoop/yarn/timeline
  Umgebungsdatei:
   - ./hadoop.env

 Knotenmanager1:
  Bild: bde2020/hadoop-nodemanager:1.1.0-hadoop2.7.1-java8
  Containername: nodemanager1
  hängt ab von:
   - Namensknoten
   -Datenknoten1
   -Datenknoten2
   -Datenknoten3
  Umgebungsdatei:
   - ./hadoop.env

 Datenknoten1:
  Bild: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  Containername: Datenknoten1
  hängt ab von:
   - Namensknoten
  Bände:
   – hadoop_datanode1:/hadoop/dfs/data
  Umgebungsdatei:
   - ./hadoop.env

 Datenknoten2:
  Bild: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  Containername: Datenknoten2
  hängt ab von:
   - Namensknoten
  Bände:
   – hadoop_datanode2:/hadoop/dfs/data
  Umgebungsdatei:
   - ./hadoop.env

 Datenknoten3:
  Bild: bde2020/hadoop-datanode:1.1.0-hadoop2.7.1-java8
  Containername: Datanode3
  hängt ab von:
   - Namensknoten
  Bände:
   – hadoop_datanode3:/hadoop/dfs/data
  Umgebungsdatei:
   - ./hadoop.env

Bände:
 hadoop_namenode:
 hadoop_datanode1:
 hadoop_datanode2:
 hadoop_datanode3:
 hadoop_historyserver:

Erstellen und Starten eines Hadoop-Clusters

sudo docker-compose up

Nach dem Starten des Hadoop-Clusters können Sie den folgenden Befehl verwenden, um die Containerinformationen des Hadoop-Clusters anzuzeigen:

# Zeigen Sie die im Cluster enthaltenen Container und die exportierte Portnummer an sudo docker-compose ps
   Name Befehl Status Ports
------------------------------------------------------------------------
datanode1 /entrypoint.sh /run.sh Up 50075/tcp
datanode2 /entrypoint.sh /run.sh Up 50075/tcp
datanode3 /entrypoint.sh /run.sh Up 50075/tcp
historyserver /entrypoint.sh /run.sh Up 8188/tcp
Namenode /entrypoint.sh /run.sh Up 50070/tcp
nodemanager1 /entrypoint.sh /run.sh Hoch 8042/tcp
Ressourcenmanager /entrypoint.sh /run.sh Up 8088/tc

# Zeigen Sie die IP-Adresse des Namenodes an sudo docker inspect namenode | grep IPAddress

Sie können den Clusterstatus auch über http://:50070 anzeigen.

Einreichen von Aufgaben

Um einen Job einzureichen, müssen wir uns zuerst bei einem Knoten im Cluster anmelden, hier melden wir uns beim Namenode-Knoten an.

sudo docker exec -it namenode /bin/bash

Daten vorbereiten und Auftrag übermitteln

cd /opt/hadoop-2.7.1

# Benutzerverzeichnis erstellen hdfs dfs -mkdir /user
hdfs dfs -mkdir /Benutzer/Root

# Daten vorbereiten hdfs dfs -mkdir input
hdfs dfs -put etc/hadoop/*.xml Eingabe

# Übermitteln Sie den Auftrag hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[az.]+'

# Zeigen Sie die Ergebnisse der Jobausführung an hdfs dfs -cat output/*

Daten löschen

hdfs dfs -rm Eingabe/*
hdfs dfs -rmdir Eingabe/
hdfs dfs -rm Ausgabe/*
hdfs dfs -rmdir Ausgabe/

Stoppen des Clusters

Sie können den Cluster durch Drücken von STRG+C oder mit „sudo docker-compose stop“ beenden.

Nach dem Stoppen des Clusters wird der erstellte Container nicht gelöscht. Sie können „sudo docker-compose rm“ verwenden, um den gestoppten Container zu löschen. Sie können auch „sudo docker-compose down“ verwenden, um den Container zu stoppen und zu entfernen.

Verwenden Sie nach dem Löschen des Containers „sudo docker volume ls“, um die vom obigen Cluster verwendeten Volume-Informationen anzuzeigen. Wir können „sudo docker rm“ verwenden, um es zu löschen.

Der obige Artikel über die Verwendung von Docker zum Erstellen eines Kong-Cluster-Vorgangs ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen, und ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Docker-Service-Befehls (Zusammenfassung)
  • docker.service konnte nicht gestartet werden: Ursachen und Lösungen für „Unit nicht gefunden“
  • Detaillierte Erklärung des Overlay-Netzwerks in Docker
  • Online- und Offlineinstallation von Docker und allgemeine Befehlsvorgänge
  • So ändern Sie die inländische Imagequelle für Docker
  • Detaillierte Fehlerbehebung bei Docker.service-Startfehlern

<<:  Verwenden einer Cursorschleife zum Lesen temporärer Tabellen in gespeicherten MySQL-Prozeduren

>>:  XHTML: Rahmenstruktur-Tag

Artikel empfehlen

Der Unterschied und die Verwendung von LocalStorage und SessionStorage in Vue

Inhaltsverzeichnis Was ist LocalStorage Was ist S...

Eine kurze Erläuterung der vier häufig verwendeten Speicher-Engines in MySQL

Einführung in vier häufig verwendete MySQL-Engine...

XHTML-Tutorial, eine kurze Einführung in die Grundlagen von XHTML

<br />Dieser Artikel gibt Ihnen eine kurze E...

Detaillierte Einführung in TABLE-Tags (TAGS)

Grundlegende Syntax der Tabelle <table>...&l...

So lernen Sie algorithmische Komplexität mit JavaScript

Inhaltsverzeichnis Überblick Was ist die O-Notati...

2 Methoden und Vorsichtsmaßnahmen zum Hinzufügen von Skripten in HTML

So fügen Sie ein <script>-Skript in HTML ein...

Ein kurzer Vortrag über die Variablenförderung in JavaScript

Inhaltsverzeichnis Vorwort 1. Welche Variablen we...

Detaillierte Erklärung von BOM und DOM in JavaScript

Inhaltsverzeichnis BOM (Browserobjektmodell) 1. F...

So konvertieren Sie MySQL-Bin-Log-Protokolldateien in SQL-Dateien

mysqlbinlog-Version anzeigen mysqlbinlog -V [--ve...