1. Übersicht über Docker ConsulAktualisierung und Erkennung des Containerdienstes: Erst erkennen und dann aktualisieren. Was erkannt wird, ist die Änderung des Containers auf dem Backend-Knoten (Registrator), und was aktualisiert wird, ist die Nginx-Konfigurationsdatei (Agent). Registrator: Dies ist der von Consul im Docker-Container installierte Spion. Er wird verwendet, um die Änderungen von Containern auf dem Überwachungsknoten zu überwachen (Erhöhung oder Verringerung oder Ausfallzeit). Sobald eine Änderung vorliegt, wird diese Information mitgeteilt und auf dem Consul-Server registriert (unter Verwendung von Callbacks und Coroutinen, sodass Verzögerung und Ressourcenverbrauch sehr gering sind). Sobald sich die Registrierungsliste ändert, teilt der Consul-Server dem Agenten die Registrierungsinformationen mit Agent: Wird zum Steuern der Konsul-Vorlage verwendet. Verwenden Sie die Vorlagenkomponente zum Herstellen einer Verbindung mit nginx.conf. Die Vorlage ist voller Variablen. Verwenden Sie Variablen zum Laden des Back-Ends. Nach der Registrierung beim Konsul-Server teilt der Server dem Agenten die Informationen mit. Der Agent und die Vorlage sind verbunden. Schreiben Sie in die Vorlage. Die Vorlage verfügt über einen Spiegel. Nach der Aktualisierung wird sie vom Front-End-nginx als Unterkonfigurationsdatei von nginx.conf erkannt. Der Konsul-Agent steuert das Neuladen und identifiziert die Änderungen in der Konfigurationsdatei nginx.conf, was dem Identifizieren des Back-End-Knotens entspricht, und kann seine eigenen Back-End-Ressourcen im Adresspool dynamisch anpassen. Funktionen von Consul
2. Erstellen Sie eine automatische Erkennung und eine hochverfügbare Docker-Servicearchitektur basierend auf Nginx und Consul1. Projektanforderungen
2. Umweltvorbereitung
3. Bereitstellungsschritte #Installieren Sie Docker-ce auf beiden Knoten. Denken Sie daran, die Firewall auszuschalten systemctl stop firewalld && systemctl disable firewalld setenforce 0 && sed -i "s/SELINUX=*/SELINUX=disabled/g" /etc/selinux/config ① Stellen Sie Consul auf dem Masterknoten bereit [root@xjj ~]# mkdir /consul [root@xjj ~]# cd /consul/ [root@xjj Konsul]# rz [root@xjj Konsul]# ls consul_0.9.2_linux_amd64.zip [root@xjj consul]# unzip consul_0.9.2_linux_amd64.zip -d /usr/bin/ Archiv: consul_0.9.2_linux_amd64.zip aufblasen: /usr/bin/consul [root@xjj Konsul]# Konsul-Agent \ > -server \ > -bootstrap \ > -ui \ > -data-dir=/var/lib/consul-data \ > -bind=192.168.126.11 \ > -client=0.0.0.0 \ > -node=consul-server01 &> /var/log/consul.log & [1] 100683 [root@xjj Konsul]# jobs -l [1]+ 100683 Konsul-Agent wird ausgeführt -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.126.11 -client=0.0.0.0 -node=consul-server01 &>/var/log/consul.log & [root@xjj consul]# Konsulmitglieder Knoten Adresse Status Typ Build Protokoll DC consul-server01 192.168.126.11:8301 aktiver Server 0.9.2 2 dc1 [root@xjj consul]# Konsulinfo|Grep-Leader Führer = wahr leader_addr = 192.168.126.11:8300 [root@xjj Konsul]# netstat -natp|grep 8500 tcp 0 0 127.0.0.1:34120 127.0.0.1:8500 ZEIT_WAIT - tcp 0 0 127.0.0.1:34118 127.0.0.1:8500 ZEIT_WAIT - tcp6 0 0 :::8500 :::* LISTEN 100683/Konsul Parameter [root@xjj consul]# Consul-Agent \ #Agent einrichten> -server \ #Servicefunktion> -bootstrap \ #An der Wahl des Leiters teilnehmen> -ui \ #Webzugriffsschnittstelle bereitstellen> -data-dir=/var/lib/consul-data \ #Proxy-Speicherdatenverzeichnis bereitstellen> -bind=192.168.126.16 \ #Lokale Adresse binden> -client=0.0.0.0 \ #Clientadresse (alle) > -node=consul-server01 &> /var/log/consul.log & #Definieren Sie den Knotennamen, geben Sie die Protokolle in das Protokoll aus und führen Sie sie in den Hintergrundjobs aus -l #Zeigen Sie die vom aktuellen Terminal in den Hintergrund geleistete Arbeit an und listen Sie die PID-Nummern der Prozess-Consul-Mitglieder auf #Clusterinformationen anzeigen consul info|grep leader #Verwaltungsinformationen anzeigen, Leader ist der Leader #Clusterinformationen können über die HTTP-API abgerufen werden: curl 127.0.0.1:8500/v1/status/peers '//Clusterservermitglieder anzeigen' curl 127.0.0.1:8500/v1/status/leader '//Cluster-Raf-Leader' curl 127.0.0.1:8500/v1/catalog/services '//Alle registrierten Dienste' curl 127.0.0.1:8500/v1/catalog/nginx '//Dienstinformationen (nginx) anzeigen' curl 127.0.0.1:8500/v1/catalog/nodes '//Clusterknotendetails' ②Der Nginx-Server stellt eine Verbindung zum Konsul her und erstellt den Nginx-Containerdienst [root@localhost ~]# docker run -d \ > --name=registrator \ > --net=Host \ > -v /var/run/docker.sock:/tmp/docker.sock \ > --restart=immer \ > gliderlabs/registrator:latest \ > -ip=192.168.126.12 \ > Konsul://192.168.126.11:8500 ----- Zusammenfassung: sha256:6e708681dd52e28f4f39d048ac75376c9a762c44b3d75b2824173f8364e52c10 Status: Neueres Image für gliderlabs/registrator:latest heruntergeladen db4cb9d6a56ce8b9a2155b1113e48e6c974889cd4cca363b410c116b75be5d59 [root@localhost ~]# docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN db4cb9d6a56c gliderlabs/registrator:latest "/bin/registrator -i…" vor 5 Sekunden Up 5 Sekunden registrator #Erstellen Sie einen Container, um zu testen, ob die Service-Erkennungsfunktion normal ist: [root@localhost ~]# docker run -itd -p 81:80 --name xjj01 -h xcf01 nginx #-h Option gibt den angegebenen Host-Hostnamen an [root@localhost ~]# docker run -itd -p 82:80 --name xjj02 -h xcf02 nginx [root@localhost ~]# docker run -itd -p 83:80 --name xjj03 -h xcf03 httpd [root@localhost ~]# docker run -itd -p 84:80 --name xjj0 -h xcf04 httpd [root@localhost ~]# docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 8940a9b03dbb httpd "httpd-foreground" vor 4 Sekunden Up 3 Sekunden 0.0.0.0:84->80/tcp, :::84->80/tcp xjj0 9ac4d089eb14 httpd "httpd-foreground" vor 39 Sekunden Aktiv seit 38 Sekunden 0.0.0.0:83->80/tcp, :::83->80/tcp xjj03 3d626fd61639 nginx "/docker-entrypoint.…" vor 25 Minuten Erstellt xjj02 263aa9deb346 nginx "/docker-entrypoint.…" vor 26 Minuten Aktiv seit 26 Minuten 0.0.0.0:81->80/tcp, :::81->80/tcp xjj01 db4cb9d6a56c gliderlabs/registrator:latest "/bin/registrator -i…" vor 29 Minuten Up 29 Minuten registrator Browser-Zugriffstest: `192.168.126.11:8500` [root@xjj consul]# curl 127.0.0.1:8500/v1/catalog/services {"Konsul":[],"httpd":[],"nginx":[]}[root@xjj Konsul]# ③Consul-Cluster fügt Consul-Template hinzu, um automatisches Container-Joining zu ermöglichen
cd Konsul/ vim nginx.ctmpl upstream http_backend { {{Bereichsdienst "nginx"}} Server {{.Adresse}}:{{.Port}}; {{Ende}} } Server { hör 100 zu; Servername localhost 192.168.126.11; Zugriffsprotokoll: /var/log/nginx/lic.com-access.log; Index Index.html Index.php; Standort / { Proxy_Set_Header HOST $Host; Proxy_Set_Header X-Real-IP $Remote_Addr; proxy_set_header Client-IP $remote_addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy-Passwort http://http_backend; } } yum -y installiere gcc pcre-devel zlib-devel rz nginx-1.12.2.tar.gz tar zxvf nginx-1.12.2.tar.gz -C /opt cd /opt/nginx-1.12.10 ./configure --prefix=/usr/local/nginx machen && machen installieren -- vim /usr/local/nginx/conf/nginx.conf Nr. 19 include vhost/*.conf; #19 Zeile hinzufügen, virtuelles Hostverzeichnis [root@xjj nginx-1.12.2]# mkdir /usr/local/nginx/conf/vhost '//Ein virtuelles Host-Verzeichnis erstellen' [root@xjj nginx-1.12.2]# mkdir /var/log/nginx '//Ein Protokolldateiverzeichnis erstellen' [root@xjj nginx-1.12.2]# /usr/local/nginx/sbin/nginx '//Starten Sie nginx' [root@xjj nginx-1.12.2]# netstat -natp|grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 104348/nginx: mast -- #Vorlage starten, Vorlagendatei und Generierungspfad angeben: [root@xjj consul]# consul-template -consul-addr 192.168.126.16:8500 -template "/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/xjj.conf:/usr/local/nginx/sbin/nginx -s neu laden" --log-level=info #Geben Sie den Vorlagenpfad /consul/nginx.ctmpl an, generieren Sie ihn zu /usr/locla/nginx/conf/vhost/xjj.conf, laden Sie dann nginx -s reload neu, definieren Sie dann die Protokollebene und geben Sie den Überwachungsstatus ein- #Der Masterknoten öffnet ein neues Terminal, um die Konfigurationsdatei anzuzeigen: [root@xjj ~]# cat /usr/local/nginx/conf/vhost/xjj.conf #Um auf die Webseite in diesem Pool zuzugreifen, müssen Sie auf 192.168.126.11:8080 zugreifen. Dies ist ein Polling-Mechanismus. Wenn Sie hier nicht darauf zugreifen können, können Sie nginx neu laden und es erneut im Upstream http_backend { versuchen. Server 192.168.126.12:81; Server 192.168.126.12:82; } Server { hören Sie 8080; Servername localhost 192.168.126.11; Zugriffsprotokoll /var/log/nginx/xjj.cn-access.log; Index Index.html Index.php; Standort / { Proxy_Set_Header HOST $Host; Proxy_Set_Header X-Real-IP $Remote_Addr; proxy_set_header Client-IP $remote_addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; Proxy-Passwort http://http_backend; } } ④Fügen Sie einen neuen Nginx-Containerknoten hinzu, um automatische Updates zu testen [root@localhost ~]# docker run -itd -p 85:80 --name xjj05 -h xcf05 nginx #Fügen Sie einen Nginx-Containerknoten hinzu, um die Funktionen zur Diensterkennung und Konfigurationsaktualisierung zu testen [root@xjj ~]# cat /usr/local/nginx/conf/vhost/xcf.conf upstream http_backend { Server 192.168.126.12:81; Server 192.168.126.12:82; Server 192.168.126.12:85; } Server { hören Sie 8080; Servername localhost 192.168.126.11; Zugriffsprotokoll /var/log/nginx/xcf.cn-access.log; Index Index.html Index.php; Standort / { Proxy_Set_Header HOST $Host; Proxy_Set_Header X-Real-IP $Remote_Addr; proxy_set_header Client-IP $remote_addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; } } ⑤ Testen Sie, ob der Zugriff auf den Proxyserver die Proxy-Zugriffsabfrage abschließen kann http://192.168.126.11:80/ Docker-Protokolle -f xjj01 Docker-Protokolle -f xjj02 Docker-Protokolle -f xjj05 ⑥Consul-Mehrknotenkonfiguration #Fügen Sie dem vorhandenen Cluster einen Server mit einer vorhandenen Docker-Umgebung hinzu: Konsulagent \ -server \ -bootstrap \ -ui \ -data-dir=/var/ib/consul-data \ -bind=192.168.126.11 \ -client=0.0.0.0 \ -node=consul-server02 \ -enable-script-checks=true \ -datacenter=dc1 \ -join 192.168.126.15 &> /var/log/consul.log & --erklären-- -enable-script-checks=true: Stellen Sie den Prüfdienst so ein, dass er verfügbar ist. -datacenter: Name des Rechenzentrums. -join: Treten Sie einem vorhandenen Cluster bei. Dies ist das Ende dieses Artikels über die Übersicht zu Docker-Consul und die Schritte zum Erstellen einer Clusterumgebung (mit Bildern und Text). Weitere Informationen zum Erstellen einer Docker-Consul-Clusterumgebung 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:
|
<<: Führen Sie die Schritte zur Installation von MySQL 5.5 auf CentOS aus
>>: Installations- und Verwendungsschritte für vue-amap
Kurzeigenschaften werden verwendet, um mehreren E...
Inhaltsverzeichnis 1. Konstruktoren und Instanzen...
Ziehen Sie das Bild Docker-Pull MySQL Sehen Sie s...
Das Textfeld mit dem ReadOnly-Attribut wird auf de...
Inhaltsverzeichnis 1. Weltkarte 1. Installieren S...
Awk ist eine Anwendung zur Verarbeitung von Textd...
Effektbild: Der Implementierungscode lautet wie f...
In diesem Artikelbeispiel wird der spezifische Co...
1. Dynamische Komponenten <!DOCTYPE html> &...
Voraussetzung: Celery wird in Django eingeführt. ...
Normalerweise wählt ein CSS-Selektor von oben nac...
Zunächst einmal: Was ist 404 und Soft 404? 404: Ei...
1. Dateistruktur des Tools-Verzeichnisses [root@w...
Lassen Sie uns zunächst darüber sprechen, warum w...
Ursache des Problems: Zunächst kann die Standard-...