Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Linux und Docker: Wie implementiert man einen hochverfügbaren Container-Cluster?

Linux und Docker: Wie implementiert man einen hochverfügbaren Container-Cluster?

PHPz
PHPzOriginal
2023-07-29 19:54:291534Durchsuche

Linux und Docker: Wie implementiert man einen hochverfügbaren Container-Cluster?

Zusammenfassung: Mit der Entwicklung der Containertechnologie stellen immer mehr Unternehmen nach und nach Anwendungen in Containern bereit. In einer Produktionsumgebung ist das Erreichen einer hohen Verfügbarkeit für einen Containercluster von entscheidender Bedeutung. In diesem Artikel wird die Verwendung von Linux und Docker zum Aufbau eines hochverfügbaren Containerclusters vorgestellt und die spezifische Implementierungsmethode anhand von Codebeispielen demonstriert.

  1. Erstellen Sie einen Docker Swarm-Cluster
    Docker Swarm ist ein natives Container-Cluster-Verwaltungstool von Docker. Es ermöglicht uns, mehrere Docker-Hosts zu einem Cluster zusammenzufassen und die Bereitstellung und den Betrieb von Containern einheitlich zu verwalten.

Installieren Sie zunächst Docker auf jedem Docker-Host, dem Sie dem Cluster beitreten möchten. Wählen Sie dann einen Host als Verwaltungsknoten des Swarm-Clusters aus und führen Sie den folgenden Befehl aus, um den Cluster zu initialisieren:

$ docker swarm init --advertise-addr <MANAGER-IP>

Wobei 50c92af3965d072a01ca8b69c30c4169 die IP-Adresse des Verwaltungsknotens ist. Mit dem obigen Befehl erhalten wir ein Token für den Beitritt anderer Hosts zum Cluster. Führen Sie als Nächstes den folgenden Befehl auf anderen Hosts aus, die dem Cluster beitreten möchten:

$ docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>

Darunter ist fe44cc81ab4c20272595cc1edf562112 das im vorherigen Schritt erhaltene Token, 50c92af3965d072a01ca8b69c30c4169 der Verwaltungsknoten bzw. der Portnummer.

  1. Diensterkennung konfigurieren
    Jeder Knoten im Containercluster muss in der Lage sein, andere Knoten zu erkennen und darauf zuzugreifen. Um die Serviceerkennung zu implementieren, können wir Tools wie Consul oder Etcd verwenden. Hier nehmen wir Consul als Beispiel.

Zunächst installieren und starten Sie Consul auf allen Docker-Hosts. Führen Sie dann den folgenden Befehl aus, um einen Consul-Dienst zu erstellen:

$ docker service create --name consul --publish 8500:8500 --constraint 'node.role == manager' gliderlabs/consul-server -bootstrap

Dieser Befehl erstellt einen Dienst namens „consul“ auf dem Verwaltungsknoten des Swarm-Clusters und ordnet den 8500-Port des Containers dem 8500-Port des Hosts zu.

Führen Sie als Nächstes den folgenden Befehl auf anderen Knoten aus, um dem Consul-Dienst beizutreten:

$ docker service create --name consul --network <NETWORK> gliderlabs/consul-agent -join consul

Wobei 1d4d001a3682e7356cdcdf6423e29e0f der Netzwerkname des Swarm-Clusters ist.

  1. Containerdienst erstellen
    In einem hochverfügbaren Containercluster müssen wir Anwendungen auf mehreren Containerinstanzen bereitstellen und Anforderungen durch Lastausgleich verteilen. Docker Swarm bietet ein Konzept namens Service zur Verwaltung von Containerdiensten.

Bereiten Sie zunächst ein Docker-Image vor, das die Anwendung enthält, die wir bereitstellen möchten. Führen Sie dann den folgenden Befehl aus, um einen Dienst zu erstellen:

rrree

wobei 1f69d38ff7f38c32e75a871d13a954c2 die Anzahl der bereitzustellenden Containerinstanzen ist, a3b0c87895079be75e30be94102cc20b < ;IMAGE> ist das Docker-Image, in dem sich die Anwendung befindet.

  1. Containerdienst ausführen
    Der im vorherigen Schritt erstellte Dienst stellt Containerinstanzen automatisch auf mehreren Knoten im Cluster bereit.

Mit dem folgenden Befehl können Sie den Betriebsstatus des Dienstes und die Verteilung der Containerinstanzen anzeigen:

$ docker service create --name <SERVICE-NAME> --replicas <REPLICAS> --publish <PORT> <IMAGE>
  1. Lastausgleich erreichen
    Um einen Lastausgleich zu erreichen, können wir die integrierte Lastausgleichsfunktion von verwenden Docker-Schwarm. Über den Namen und die Portnummer des Dienstes können Sie auf mehrere Containerinstanzen hinter dem Dienst zugreifen.
  2. Automatische Erweiterung erreichen
    Wenn die Last im Containercluster größer wird, können wir eine automatische Erweiterung erreichen, indem wir die Anzahl der Containerinstanzen erhöhen.

Mit dem folgenden Befehl können Sie die Anzahl der Instanzen eines Dienstes erweitern:

$ docker service ls
$ docker service ps <SERVICE-NAME>

wobei 1f69d38ff7f38c32e75a871d13a954c2 der Name des Dienstes und f9137ba0285552c9339eaf6686d35256 ist.

Zusammenfassung: Die Verwendung von Linux und Docker zum Aufbau eines hochverfügbaren Containerclusters verbessert nicht nur die Verfügbarkeit von Anwendungen, sondern bietet auch elastische Skalierungs- und Lastausgleichsfunktionen. Durch eine angemessene Konfiguration und Verwaltung können wir effiziente und stabile Containerdienste erreichen.

Codebeispiel:

  1. Schwarmcluster initialisieren:

    $ docker service scale <SERVICE-NAME>=<REPLICAS>
  2. Schwarmcluster beitreten:

    $ docker swarm init --advertise-addr 192.168.0.1
  3. Konsuldienst erstellen:

    $ docker swarm join --token <TOKEN> 192.168.0.1:2377
  4. Konsuldienst beitreten:

    $ docker service create --name consul --publish 8500:8500 --constraint 'node.role == manager' gliderlabs/consul-server -bootstrap
  5. Bewerbungsdienst erstellen:

    $ docker service create --name consul --network my-network gliderlabs/consul-agent -join consul
  6. Erweitern Sie die Anzahl der Serviceinstanzen:

    $ docker service create --name my-service --replicas 3 --publish 8080:8080 my-app

Das obige ist der detaillierte Inhalt vonLinux und Docker: Wie implementiert man einen hochverfügbaren Container-Cluster?. 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