Beispiel für die Implementierung eines Master-Slave-Hot-Standby mit Docker+keepalived+nginx

Beispiel für die Implementierung eines Master-Slave-Hot-Standby mit Docker+keepalived+nginx

Vorwort

Um den Single Point of Failure zu beheben, müssen wir eine Master-Slave-Hot-Standby-Lösung konfigurieren. Die Anzahl der Server ist begrenzt, daher verwenden wir Docker, um die Installation und Konfiguration zu simulieren.

Docker wird in dieser Konfiguration standardmäßig installiert.

Konfigurationsumgebung: Centos7 64 Bit

Docker-Version: Docker-Version 17.12.1-ce, Build 7390fc6

1. Ziehen Sie das Centos7-Image

Docker-Pull Centos:7

2. Erstellen Sie einen Container

docker run -it -d --name centos1 -d centos:7

3. Geben Sie den Container centos1 ein

docker exec -it centos1 bash

4. Installieren Sie gängige Tools

yum updateyum install -y vimyum install -y wgetyum install -y gcc-c++ yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl--develyum install -y popt-develyum install -y initscripts
yum install -y net-tools

5. Packen Sie den Container in ein neues Image und erstellen Sie in Zukunft direkt aus dem Image einen Container

Docker Commit -a 'cfh' -m 'Centos mit gängigen Tools' Centos1 Centos_base

6. Löschen Sie den zuvor erstellten Centos1-Container, erstellen Sie den Container mit dem Basisimage neu und installieren Sie keepalived+nginx

docker rm -f centos1
#Der systemctl-Dienst muss im Container verwendet werden und /usr/sbin/init muss hinzugefügt werden
docker run -it --name centos_temp -d --privileged centos_base /usr/sbin/init
docker exec -it centos_temp bash

Autor: Jianghu Jiujiu Link: https://juejin.im/post/5dc517386fb9a04a9272110b
Quelle: Nuggets. Das Urheberrecht liegt beim Autor. Bei kommerzieller Vervielfältigung wenden Sie sich bitte für eine Genehmigung an den Autor. Bei nichtkommerzieller Vervielfältigung geben Sie bitte die Quelle an.

7. Installieren Sie nginx

#Verwenden Sie yum, um nginx zu installieren. Sie müssen die Nginx-Bibliothek einbinden. Installieren Sie die Nginx-Bibliothek rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# Installieren Sie nginx mit dem folgenden Befehl
yum install -y nginx
#Nginx starten
systemctl starte nginx.service
#Überprüfen Sie, ob der Start erfolgreich war. Die Begrüßungsoberfläche von nginx wird angezeigt und zeigt an, dass die Installation erfolgreich war. curl 172.17.0.2

8. Installieren Sie Keepalived

1. Laden Sie keepalived wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz

2. Entpacken und installieren: tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/

3. Laden Sie das OpenSSL-Plugin herunter: yum install -y openssl openssl-devel (Sie müssen ein Softwarepaket installieren).

4. Beginnen Sie mit der Kompilierung von keepalived cd /usr/local/keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived

5. Machen Sie es make && make install

9. Keepalived als Systemdienst installieren

mkdir /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/Kopieren Sie dann die Keepalived-Skriptdatei: cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ln -s /usr/local/sbin/keepalived /usr/sbin/Sie können es so einstellen, dass es beim Booten startet: chkconfig keepalived on, jetzt haben wir die Installation abgeschlossen!

#Wenn beim Start ein Fehler auftritt, führen Sie den folgenden Befehl aus: cd /usr/sbin/ 
rm -f keepalived 
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ 

#Allgemeine Befehle systemctl daemon-reload lädt neu systemctl enable keepalived.service legt den automatischen Start beim Booten fest systemctl disable keepalived.service bricht den automatischen Start beim Booten ab systemctl start keepalived.service startet systemctl stop keepalived.service stoppt systemctl status keepalived.service prüft den Servicestatus

10. Ändern Sie die Datei /etc/keepalived/keepalived.conf

#Backup-Konfigurationsdatei cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.backup

rm -f keepalived.conf
vim keepalived.conf
#Die Konfigurationsdatei lautet wie folgt vrrp_script chk_nginx {
  Skript "/etc/keepalived/nginx_check.sh"
  Intervall 2
  Gewicht -20
}

vrrp_instance VI_1 {
  Zustand MEISTER
  Schnittstelle eth0
  virtuelle_Router_ID 121
  mcast_src_ip 172.17.0.6
  Priorität 100
  keinPreempt
  Anzeige_int 1
  Authentifizierung
    Authentizitätstyp PASS
    Auth_Passwort 1111
  }

  Titel_Skript {
    chk_nginx
  }

  virtuelle_IP-Adresse {
    172.17.0.100
  }
}

11. Fügen Sie eine Heartbeat-Erkennungsdatei hinzu

vim nginx_check.sh
#Das Folgende ist der Skriptinhalt#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
wenn [ $A -eq 0 ];dann
  /usr/local/nginx/sbin/nginx
  Schlaf 2
  wenn [ `ps -C nginx --no-header |wc -l` -eq 0 ];dann
    alles töten, am Leben bleiben
  fi
fi

12. Erteilen Sie dem Skript Ausführungsberechtigungen

chmod +x nginx_check.sh

13. Start einrichten

systemctl aktiviere keepalived.service

#Öffnen Sie Keepalived
systemctl starte keepalived.service

14. Überprüfen Sie, ob die virtuelle IP erfolgreich ist. Führen Sie den folgenden Befehl auf dem Hostcomputer aus. Wenn die nginx-Begrüßungsoberfläche angezeigt wird, zeigt dies Erfolg an.

Locken 172.17.0.100

15. Verpacken Sie den Container centos_temp neu in ein Image und erstellen Sie mit diesem neuen Image zwei weitere Container, um einen Hot-Standby-Effekt zu erzielen

Docker-Commit -a 'cfh' -m 'Centos mit Keepalived Nginx' Centos_temp Centos_kn

16. Alle Container löschen

docker rm -f `docker ps -a -q`

17. Erstellen Sie den Hauptservercontainer mit dem centos_kn-Image

docker run --privileged -tid --name centos_master --restart=always centos_kn /usr/sbin/init

docker exec -it centos_master bash

18. Ändern Sie die Nginx-Willkommensseite in centos_master.

vim /usr/share/nginx/html/index.html 

19. Erstellen Sie einen Slave-Server-Container

docker run --privileged -tid --name centos_slave --restart=immer centos_kn /usr/sbin/init
docker exec -it centos_slave bash

#Ändern Sie die Konfigurationsdatei keepalived.conf, vor allem die Anpassung der Status- und Prioritätsparameter. Der Prioritätswert des Masterknotens muss größer sein als der des Slaveknotens. vrrp_script chk_nginx {
  Skript "/etc/keepalived/nginx_check.sh"
  Intervall 2
  Gewicht -20
}

vrrp_instance VI_1 {
  Zustand SLAVE
  Schnittstelle eth0
  virtuelle_Router_ID 121
  mcast_src_ip 172.17.0.6
  Priorität 80
  keinPreempt
  Anzeige_int 1
  Authentifizierung
    Authentizitätstyp PASS
    Auth_Passwort 1111
  }

  Titel_Skript {
    chk_nginx
  }

  virtuelle_IP-Adresse {
    172.17.0.100
  }
}

20. Nach Änderung neu laden

systemctl daemon-reload
systemctl Neustart keepalived.service

21. Ändern Sie die Willkommensseite von nginx (wenn nginx nicht gestartet ist, führen Sie „systemctl start nginx.service“ aus).

vim /usr/share/nginx/html/index.html 

22. Prüfung

A> Führen Sie den folgenden Befehlstest auf dem Host, centos_master bzw. centos_slave aus. Wenn die Begrüßungsseite des Masters angezeigt wird, bedeutet dies, dass die Konfiguration erfolgreich ist 1/3

Locken 172.17.0.100

B> Stoppen Sie zu diesem Zeitpunkt den Container centos_master (docker stop centos_master), behalten Sie den Container centos_slave bei und führen Sie den folgenden Befehl aus. Wenn Sie zur Slave-Seite wechseln, bedeutet dies, dass die Keepalived-Konfiguration erfolgreich ist 2/3

Locken 172.17.0.100

C> Starten Sie den Container centos_master neu und führen Sie den folgenden Befehl aus, um zu prüfen, ob der Wechsel von Slave zu Master erfolgt. Wenn der Wechsel erfolgreich ist, bedeutet dies, dass unsere Konfiguration erfolgreich war.

Locken 172.17.0.100

Hinweis: Während des Tests startete nginx nach dem Neustart des Containers nicht. Sie müssen den Container aufrufen und starten. Andernfalls können Sie nicht auf die Masterseite zugreifen, aber Sie können sie anpingen.

Führen Sie den folgenden Befehl aus, um nginx so zu konfigurieren, dass es zufällig gestartet wird, sodass Sie nginx nicht bei jedem Neustart des Containers manuell starten müssen

chkconfig nginx ein

Das Obige ist der gesamte Konfigurationsprozess. Ich hoffe, es wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützt.

Das könnte Sie auch interessieren:
  • Nginx + Keepalived realisiert Hot-Standby von Dual-Maschinen
  • Konfigurationsmethode für Keepalived Dual-Machine Hot Standby Nginx
  • Nginx implementiert den Aufbau eines Clusters mit hoher Verfügbarkeit (Keepalived+Haproxy+Nginx)
  • Keepalived implementiert Nginx-Lastausgleich und Beispielcode für hohe Verfügbarkeit
  • So implementieren Sie Dual-Machine-Master und Backup mit Nginx+Keepalived
  • Detaillierte Erläuterung der hochverfügbaren Master-Slave-Konfiguration von nginx+keepalived
  • Informationen zur Verwendung von Keepalived zum Erreichen eines automatischen Neustarts von Nginx und einer hohen Verfügbarkeit von Dual Active Hot Standby

<<:  Vue implementiert einen einfachen Bildwechseleffekt

>>:  Detaillierte Erklärung zur Verwendung der Click-to-Switch-Bildkomponente im Vue-Kartenstil

Artikel empfehlen

Lösung für das Problem der MySQL-Transaktionsparallelität

Ich bin während der Entwicklung auf ein solches P...

Methoden des adaptiven Webdesigns (gutes Zugriffserlebnis auf Mobiltelefonen)

1. Fügen Sie dem HTML-Header das Viewport-Tag hin...

Analysieren Sie, wie Uniapp den Schnittstellendomänennamen dynamisch erhält

Hintergrund Der Domänenname der Schnittstelle ist...

So erhalten Sie den tatsächlichen Pfad des aktuellen Skripts in Linux

1. Holen Sie sich den tatsächlichen Pfad des aktu...

Mehrere Möglichkeiten zum Sichern einer MySql-Datenbank

mysqldump-Tool-Sicherung Sichern Sie die gesamte ...

Detailliertes Tutorial zum Erstellen eines privaten Git-Servers unter Linux

1. Server-Setup Das Remote-Repository unterscheid...

Einführung in die Verwendung von Requisiten in Vue

Vorwort: In Vue können Props verwendet werden, um...

Verwendung des offiziellen MySQL-Exporttools mysqlpump

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

Vue3 verwendet Axios Interceptor zum Drucken von Front-End-Protokollen

Inhaltsverzeichnis 1. Einleitung 2. Verwenden Sie...