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

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

PHPz
Freigeben: 2023-07-29 19:54:29
Original
1567 Leute haben es durchsucht

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>
Nach dem Login kopieren

Wobei 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>
Nach dem Login kopieren

Darunter ist das im vorherigen Schritt erhaltene Token, 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
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

Wobei 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 die Anzahl der bereitzustellenden Containerinstanzen ist, < ;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>
Nach dem Login kopieren
  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>
Nach dem Login kopieren

wobei der Name des Dienstes und 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>
    Nach dem Login kopieren
  2. Schwarmcluster beitreten:

    $ docker swarm init --advertise-addr 192.168.0.1
    Nach dem Login kopieren
  3. Konsuldienst erstellen:

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

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

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

    $ docker service create --name my-service --replicas 3 --publish 8080:8080 my-app
    Nach dem Login kopieren

    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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage