Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So implementieren Sie die hohe Verfügbarkeit von Nginx in einer Produktionsumgebung

So implementieren Sie die hohe Verfügbarkeit von Nginx in einer Produktionsumgebung

WBOY
WBOYnach vorne
2023-05-23 09:25:121352Durchsuche

Vorbereitung:

192.168.16.128

192.168.16.129

Zwei virtuelle Maschinen. Installieren Sie Nginx.

Nginx installieren.

Hohe Verfügbarkeit (Hochverfügbarkeit) ist einer der Faktoren, die beim Entwurf einer verteilten Systemarchitektur berücksichtigt werden müssen. Dies bezieht sich normalerweise auf die Reduzierung der Zeit, in der das System keine Dienste bereitstellen kann. Wenn ein System immer Dienste bereitstellen kann, dann liegt die Verfügbarkeit bei 100 %, es treten jedoch unvorhergesehene Umstände auf. Wir können also nur versuchen, Serviceausfälle so weit wie möglich zu reduzieren.

Problem gelöst?

In Produktionsumgebungen wird Nginx häufig als Reverse-Proxy zur Bereitstellung externer Dienste verwendet. Eines Tages wird es jedoch unweigerlich zu Ausfällen kommen, beispielsweise zu Serverausfällen. Wenn Nginx ausfällt, sind alle extern bereitgestellten Schnittstellen nicht mehr zugänglich.

Obwohl wir nicht garantieren können, dass der Server zu 100 % verfügbar ist, müssen wir Wege finden, diese Tragödie zu vermeiden. Heute verwenden wir Keepalived, um eine hohe Verfügbarkeit von Nginx zu erreichen.

Dual-Server-Hot-Standby-Lösung

Diese Lösung ist die bei inländischen Unternehmen am häufigsten verwendete Hochverfügbarkeitslösung. Dual-Server-Hot-Standby bedeutet eigentlich, dass ein Server Dienste bereitstellt und der andere ein Backup für einen bestimmten Dienst ist . Status: Wenn ein Server nicht verfügbar ist, wird ein anderer an seine Stelle treten.

Was ist Keepalived?

keepalived-Software wurde ursprünglich für LVS-Lastausgleichssoftware entwickelt, um den Status jedes Serviceknotens im LVS-Clustersystem zu verwalten und zu überwachen. Später wurde vrrp (Virtual Router Redundancy Protocol, Virtual Router Redundancy Protocol) hinzugefügt, um eine hohe Verfügbarkeit zu erreichen. (verbleibendes Protokoll) Funktion. Daher kann Keepalived nicht nur LVS-Software verwalten, sondern auch als hochverfügbare Lösungssoftware für andere Dienste (z. B. Nginx, Haproxy, MySQL usw.) verwendet werden zwischen Keepalived-Hochverfügbarkeitsdiensten wird durch VRRP erreicht.

Wenn der Keepalived-Dienst normal funktioniert, sendet der Haupt-Masterknoten kontinuierlich (Multicast-)Heartbeat-Nachrichten an den Backup-Knoten, um dem Backup-Knoten mitzuteilen, dass er noch aktiv ist. Wenn der Haupt-Masterknoten ausfällt, kann er keine Heartbeat-Nachrichten senden .Nachricht kann der Standby-Knoten den Heartbeat vom Master-Knoten nicht mehr erkennen und ruft daher sein eigenes Übernahmeprogramm auf, um die IP-Ressourcen und Dienste des Master-Knotens zu übernehmen. Wenn der primäre Masterknoten wiederhergestellt ist, gibt der Backup-Knoten die IP-Ressourcen und Dienste frei, die er übernommen hat, als der primäre Knoten ausgefallen ist, und kehrt zu seiner ursprünglichen Backup-Rolle zurück.

Implementierungsprozess

Installieren Sie die Keepalived-Methode

yum-Methode zur direkten Installation. Diese Methode installiert automatisch Abhängigkeiten:

rpm -ivh http://nginx.org/packages/centos/7/noarch/rpms/nginx-release-centos-7-0.el7.ngx.noarch.rpm
wget -o /etc/yum.repos.d/centos-base.repo http://mirrors.aliyun.com/repo/centos-7.repo

Ändern Sie die Keepalived-Konfigurationsdatei des Hosts (192.168.16.128).yum-Methode erstellt die Konfigurationsdatei unter /etc/keepalived:

yum -y install nginx

keepalived.conf:

systemctl start nginx; #启动nginx
systemctl stop nginx; #停止nginx

virtual_ipaddress Sie können VIP darin konfigurieren und über VIP online auf Dienste zugreifen.

Die Schnittstelle muss entsprechend der Server-Netzwerkkarte eingestellt werden. Die Authentifizierungskonfiguration für die IP-Adresse erfordert ebenfalls die gleiche Konfiguration. Die Keepalived-Konfiguration des Backup-Computers muss geändert werden Dateikeepalived.conf:

yum -y install keepalived

Erkennungsskript:

vi keepalived.conf

Skriptautorisierung: chmod 775 check_nginx_pid.sh

Hinweis: Das Skript muss autorisiert sein, sonst hat es keine Zugriffsberechtigung. Hier müssen wir zwei Server ausführen , vip(virtual_ipaddress:192.168.16.130),In der Produktionsumgebung greifen wir direkt über VIP auf Dienste zu.

Nginx-Fehler simulieren:

Ändern Sie die Nginx-HTML-Seite, auf die die beiden Server standardmäßig zugreifen, als Unterschied.

Besuchen Sie zuerst 192.168.16.130 und greifen Sie über VIP darauf zu. Auf der Seite wird 192.168.16.128 angezeigt. Dies zeigt an, dass es sich derzeit um einen vom Hauptserver bereitgestellten Dienst handelt.


Zu diesem Zeitpunkt 192.168.16.128 führt der Hauptserver den Befehl aus:

#检测脚本
vrrp_script chk_http_port {
 script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动
 interval 2       #(检测脚本执行的间隔,单位是秒)
 weight 2       #权重
}
#vrrp 实例定义部分
vrrp_instance vi_1 {
 state master   # 指定keepalived的角色,master为主,backup为备
 interface ens33   # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
 virtual_router_id 66 # 虚拟路由编号,主从要一直
 priority 100   # 优先级,数值越大,获取处理请求的优先级越高
 advert_int 1   # 检查间隔,默认为1s(vrrp组播周期秒数)
 #授权访问
 authentication {
  auth_type pass #设置验证类型和密码,master和backup必须使用相同的密码才能正常通信
  auth_pass 1111
 }
 track_script {
  chk_http_port   #(调用检测脚本)
 }
 virtual_ipaddress {
  192.168.16.130   # 定义虚拟ip(vip),可多设,每行一个
 }
}

Besuchen Sie VIP erneut (192.168.16.130) und stellen Sie fest, dass auf der Seite immer noch Folgendes angezeigt wird: 192.168.16.128, dies ist ein automatischer Neustart im Skript.

Schließen Sie nun direkt den 192.168.16.128-Server, besuchen Sie vip hier (192.168.16.130) und stellen Sie nun fest, dass auf der Seite 192.168.16.129 angezeigt wird Zu diesem Zeitpunkt führt keepalived automatisch einen Failover durch und eine Hochverfügbarkeitslösung für eine Produktionsumgebung auf Unternehmensebene wird eingerichtet.

Es gibt viele Funktionen in keepalived, wie z. B. E-Mail-Erinnerungen usw., aber Sie können die Dokumentation auf der offiziellen Website lesen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die hohe Verfügbarkeit von Nginx in einer Produktionsumgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen