Heim >Betrieb und Instandhaltung >Nginx >So erreichen Sie eine hohe Verfügbarkeit durch die Kombination von Keepalived mit Nginx
1. Einführung
keepalived ist eine hochverfügbare Lösung für LVS-Dienste auf Basis des VRRP-Protokolls, mit der Single Points of Failure vermieden werden können. Ein LVS-Dienst verfügt über zwei Server, auf denen Keepalived ausgeführt wird, einer als Hauptserver (Master) und einer als Backup-Server (Backup). Nach außen hin erscheint er jedoch als virtuelle IP. Der Hauptserver sendet bestimmte Nachrichten an den LVS-Dienst Wenn der Backup-Server diese Nachricht nicht empfangen kann, d. h. wenn der Hauptserver ausfällt, übernimmt der Backup-Server die virtuelle IP und stellt weiterhin Dienste bereit, wodurch eine hohe Verfügbarkeit gewährleistet wird. Keepalived ist die perfekte Implementierung von vrrp. Bevor wir Keepalived einführen, stellen wir zunächst das Prinzip von vrrp vor.
1.vrrp-Protokolleinführung
In einer realen Netzwerkumgebung haben zwei Hosts, die kommunizieren müssen, in den meisten Fällen keine direkte physische Verbindung. Wie wählt man in einer solchen Situation die Route zwischen ihnen? Wie wählt der Host die nächste Hop-Route zum Zielhost aus? Es gibt zwei gängige Lösungen für dieses Problem:
Verwenden Sie dynamische Routing-Protokolle (RIP, OSPF usw.) auf dem Host.
Konfigurieren Sie statisches Routing der Host
Offensichtlich ist die Konfiguration von dynamischem Routing auf dem Host aufgrund vieler Probleme wie Verwaltungs- und Wartungskosten und der Frage, ob es unterstützt wird, sehr unpraktisch. Das Konfigurieren statischer Routen erfreut sich großer Beliebtheit, doch der Router (oder das Standard-Gateway) wird oft zu einem Single Point of Failure. Der Zweck von vrrp besteht darin, das Single-Point-of-Failure-Problem des statischen Routings zu lösen. vrrp verwendet ein Wahlprotokoll, um Routing-Aufgaben dynamisch einem bestimmten vrrp-Router unter den virtuellen Routern im LAN zuzuweisen.
2.vrrp-Arbeitsmechanismus
In einem virtuellen vrrp-Router gibt es mehrere physische vrrp-Router, aber diese mehreren physischen Maschinen können nicht gleichzeitig arbeiten, aber eine sogenannte Master-Maschine ist für die Routing-Arbeit verantwortlich, alles andere ist es Backup, der Master ist nicht statisch, vrrp ermöglicht es jedem vrrp-Router, an der Wahl teilzunehmen, und der Master ist der endgültige Gewinner. Der Master verfügt beispielsweise über die IP-Adresse des virtuellen Routers. Unser Host verwendet diese IP-Adresse als statische Route. Der privilegierte Master ist für die Weiterleitung der an die Gateway-Adresse gesendeten Pakete und die Beantwortung von ARP-Anfragen verantwortlich.
vrrp implementiert die Funktion eines virtuellen Routers durch das Wahlprotokoll. Alle Protokollnachrichten werden in Form von IP-Multicast-Paketen (Multicast-Adresse 224.0.0.18) gesendet. Ein virtueller Router besteht aus einer VRID (Bereich 0-255) und einer Reihe von IP-Adressen, die nach außen als bekannte Mac-Adresse erscheinen. Daher sind in einem virtuellen Router der externe Mac und die IP gleich (VIP genannt), unabhängig davon, wer der Master ist. Der Client-Host muss seine Routing-Konfiguration aufgrund von Änderungen im Master nicht ändern. Für den Client ist diese Master-Slave-Umschaltung transparent.
In einem virtuellen Router sendet nur der vrrp-Router als Master immer vrrp-Benachrichtigungsnachrichten (vrrpadvertisement-Nachrichten), und das Backup wird dem Master nicht zuvorkommen, es sei denn, seine Priorität ist höher. Wenn der Master nicht verfügbar ist (das Backup kann keine Benachrichtigungsinformationen empfangen), wird dasjenige mit der höchsten Priorität unter mehreren Backups zum Master ernannt. Diese Vorabentscheidung erfolgt sehr schnell (
3.vrrp-Workflow
(1).Initialisierung:
Wenn der Router startet und die Priorität des Routers 255 ist (die höchste Priorität, der Router hat die Router-Adresse), sollten VRRP-Benachrichtigungsinformationen vorhanden sein Senden Sie ARP-Informationen, um die MAC-Adresse zu benachrichtigen, die der IP-Adresse des Routers als virtueller Routing-MAC entspricht. Stellen Sie den Benachrichtigungsinformations-Timer so ein, dass er sich auf das regelmäßige Senden von VRRP-Benachrichtigungsinformationen vorbereitet, und wechseln Sie andernfalls in den Sicherungsstatus Stellen Sie den Timer so ein, dass regelmäßig überprüft wird, ob die Benachrichtigung des Masters eingegangen ist.
(2).master
Stellen Sie den Timer für geplante Benachrichtigungen ein.
Verwenden Sie die virtuelle VRRP-Mac-Adresse, um auf die ARP-Anfrage der Router-IP-Adresse zu antworten Der virtuelle vrrp-Mac; empfangen, der geplante Benachrichtigungs-Timer wird gelöscht und die Sendepriorität beträgt 0 Benachrichtigungspaket, Übergang in den Initialisierungsstatus; empfangen, wenn die Priorität 0 ist, senden Sie VRRP-Benachrichtigungsinformationen; andernfalls beurteilen Sie die Daten. Ob die Priorität höher als die lokale oder gleich ist und die tatsächliche IP-Adresse größer als die tatsächliche lokale IP ist, stellen Sie den geplanten Benachrichtigungs-Timer ein und setzen Sie ihn zurück den Host-Timeout-Timer und den Transfer in den Backup-Status; andernfalls verwerfen Sie das Benachrichtigungspaket.
Setzen Sie den Host-Timeout-Timer
Alle Pakete verwerfen, deren Ziel-Mac-Adresse die virtuelle Router-IP ist;
Beim Empfang eines Shutdown-Ereignisses löschen der Host-Timeout-Timer und der Übergang in den Initialisierungszustand
Wenn der Host-Timeout-Timer abläuft, sendet er VRRP-Benachrichtigungsinformationen, sendet ARP-Adressinformationen und wechselt in den Master-Status.
Wenn die Priorität beim Empfang der VRRP-Benachrichtigungsinformationen 0 ist, bedeutet dies, dass sie eingegeben werden Andernfalls wird beurteilt, ob die Priorität höher ist als die des lokalen Computers. Wenn sie hoch ist, wird der Master als gültig erkannt und der Host-Timeout-Timer wird zurückgesetzt
4.arp-AbfrageverarbeitungWenn der interne Host die virtuelle Maschine über arp abfragt. Wenn die IP-Adresse des Routers der Mac-Adresse entspricht, ist die vom Master-Router zurückgegebene Mac-Adresse die Mac-Adresse des virtuellen VRRP, nicht die Mac-Adresse Adresse der tatsächlichen Netzwerkkarte, sodass der interne Netzwerkcomputer sie beim Umschalten des Routers nicht erkennen kann und beim Neustart des Routers die tatsächliche MAC-Adresse der lokalen Netzwerkkarte nicht aktiv senden kann. Wenn die ARP-Proxy-Funktion (proxy_arp) auf dem virtuellen Router aktiviert ist, reagiert die ARP-Antwort des Proxys auch auf die virtuelle VRRP-Mac-Adresse.
2. Erstellen Sie die Umgebung1. Server 1: 10.63.0.154 Installieren Sie keeplived und stellen Sie den Prioritätswert auf 100 ein. Einstellung Die den beiden Servern entsprechenden virtuellen IPs sind: 10.63.0.158
Diese Installation von Keepalived übernimmt den Yum-Modus und wird auf Server 1 installiert. Die Hauptschritte sind wie folgt:
1. Installation von ipvsadm, Befehl: yum install ipvsadm. Nach Abschluss der Installation können Sie die Versionsnummer mit dem Befehl ipvsadm –v überprüfen. 2. Keepalived installieren, Befehl: yum install keepalived. Nachdem die Installation abgeschlossen ist, können Sie die Versionsnummer mit dem Befehl keepalived –v überprüfen.
3. Erstellen Sie das Skript /usr/local/nginx/nginx_check.sh. Der Inhalt des Skripts lautet wie folgt:#!/bin/bash #判断nginx服务是否启动,如果不存在,调用nginx启用命令,并停止2秒,若#启动失败,杀掉keepalived a=`ps -c nginx --no-header |wc -l` if [ $a -eq 0 ];then /usr/sbin/nginx sleep 2 if [ `ps -c nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fiSetzen Sie die Berechtigungen für nginx_check.sh ein. Der Einstellungsbefehl lautet: chmod 777 /usr/local/nginx/nginx_check.sh
4. Konfigurieren Sie die Keepalived-Knoteninformationen /etc/keepalived/keepalived conf. Die Konfigurationsdatei Keepalived.conf lautet wie folgt:
! configuration file for keepalived global_defs { router_id nginx_master154 } vrrp_script chk_nginx { script "/usr/local/nginx/nginx_check.sh" interval 2 weight 20 } vrrp_instance vi_1 { state master interface eth0 virtual_router_id 154 mcast_src_ip 10.63.0.154 priority 100 nopreempt advert_int 1 authentication { auth_type pass auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 10.63.0.158 } } }Konfigurationsdatei Schlüsselparameterbeschreibung:
router_id // Knotennamen definieren
3. Installieren Sie den Keepalived-Sicherungsknoten
Die Methode zur Installation von Keepalived auf Server 2 ist genau die gleiche wie auf Server 1. Nur In der Konfigurationsdatei keepalived.conf sind drei Änderungen erforderlich:
interface eth0 // Definieren Sie den Netzwerkkartennamen, um die Netzwerkkarte von Server 2 anzuzeigen. Wenn der Netzwerkkartenname eno24 ist, ist er definiert als: Schnittstelle eno24
4. Das Linux-Dienstverwaltungstool systemctl
systemctl enable *.service # Führen Sie den Dienst beim Booten aus. Systemctl Disable *.service #Startvorgang abbrechen
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl --failed #显示启动失败的服务
注:*代表某个服务的名字,如http的服务名为httpd
例如在centos 7 上安装http
[root@centos7 ~]# yum -y install httpd
启动服务(等同于service httpd start) systemctl start httpd.service
停止服务(等同于service httpd stop) systemctl stop httpd.service
重启服务(等同于service httpd restart) systemctl restart httpd.service
查看服务是否运行(等同于service httpd status) systemctl status httpd.service 开机自启动服务(等同于chkconfig httpd on) systemctl enable httpd.service
开机时禁用服务(等同于chkconfig httpd on) systemctl disable httpd.service
ps -ef | grep nginx #查看服务进程
#非systemctl配置开机启动:chmod +x /etc/rc.d/rc.local
#打开rc.localvi /etc/rc.local
#加入启动脚本其中路径一定要用全路径如:/usr/local/nginx/sbin/nginx
Das obige ist der detaillierte Inhalt vonSo erreichen Sie eine hohe Verfügbarkeit durch die Kombination von Keepalived mit Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!