Direkt zum Hauptinhalt

Installation und einrichtung

Beschreibung:

Hier ist ein Tutorial, um zwei Loadbalancer mit einer Floating-IP erreichbar zu machen. Damit nicht nur die Backendserver-Verbindung hochverfügbar ist, sondern auch die Verbindungs-IP (Floating-IP) mithilfe von zwei Loadbalancern anstelle von einem. Zusätzlich überprüfen die Loadbalancer die OpenVPN-Dienste und HTTPS-Dienste.
Es kann natürlich jeder anderer Dienst in betracht gezogen werden

Vorrausetzungen:


5 x Public IP Adresses, 2 x LB , 2 x  RVS and 1 x Floating ip
2 x Machines as LB01 and LB02, with Linux (eg Debian) and ssh access
2 x Machines as RVS01 and RVS02 for example
In unserer Testumgebung haben wir diese IPS
Floating IP : 49.12.154.74
LB01 : 49.12.154.77
LB02 : 49.12.154.78
RVS01 : 49.12.154.75
RVS02 : 49.12.154.76

schemalb.drawio.png

Installation:

Installiere die Software-Anforderungen durch die folgenden Pakete und Konfigurationen auf LB01 und LB02. Es ist notwendig, dass die Netzwerk-IP und SSH korrekt konfiguriert sind für die nächsten Schritte...

apt update
apt dist-upgrade
apt install curl wget
apt install keepalived
apt install python3 python-is-python3

Das Routing muss in der sysctl auch aktiviert sein.

nano /etc/sysctl.conf

Inhalt am Ende anfügen

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

nun anwenden

sysctl -p

Anforderungen an die RVS-Server für HA mit Loadbalancer und Floating-IP.
Wir müssen nur eine iptables-Regel hinzufügen, weil die RVS-Server zur Floating-IP umgeleitet werden müssen.
Befehl zur direkten Ausführung. Siehe Punkt 6, um dies automatisch beim Start des Servers durchzuführen.

iptables -t nat -A PREROUTING -d 49.12.154.74 -j REDIRECT

Keepalived-Konfiguration, der lustige Teil.
Wir beginnen mit der Erklärung der Konfiguration von Server 1, die Konfiguration von
Server 2 ist fast identisch mit der von Server 1, mit nur wenigen Änderungen.

Wir starten mit Server 1. Erstellen Sie eine neue Datei /etc/keepalived/keepalived.conf.
Die Datei hat verschiedene Abschnitte:

global_defs{}: Dies enthält Benachrichtigungen und Identifikationen der Loadbalancer.
vrrp_instance VI_1{}: Enthält die Verbindungsauthentifizierung und die Zuweisung der virtuellen IP (Floating IP). 
Hier können wir auch Skripte definieren, die bei Statusänderungen von Master zu Backup oder von Backup zu Master ausgeführt werden. 
Zum Beispiel, um eine andere Floating-IP von Hetzner über ein sh-Skript zuzuweisen.

virtual_server{}: Hier wird die virtuelle Server-IP mit Port und Protokoll (UDP, TCP) definiert. 
In diesem Abschnitt ist der letzte Abschnittstyp eingebettet. 

Die real_servers, die in Punkt d aufgelistet sind.

real_server{}: Hier werden die RVS-Server mit Service-Checks definiert.

Die Global Config

#=========Global Config==============#
 
#Email notification
global_defs {
notification_email {
root@localhost  //Accept email address
}
 
#Mailserver Settings
notification_email_from keepalived@localhost  //Mailing address
smtp_server 127.0.0.1  //Send mail server IP
smtp_connect_timeout 30  //Mail connection timeout
#Rounting settings #here master on the seconday lb02 it must called be slave
router_id master #An identity that identifies the keepalived server running (type an string)
}
 
#======= End Globals ==========#

vrrp_instance section with virtual ip

#======= HA for Floating IP ===#
vrrp_instance VI_1 {           #VRRP instance definition section  
    state MASTER               #Gibt an, dass der Knoten der Hauptknoten ist (Großbuchstaben) und der Standby-Knoten BACKUP ist
    interface ens18            #Netzwerkschnittstelle, an die die virtuelle IP gebunden ist
    virtual_router_id 51       #VRRP Gruppenname, zwei Knoten müssen gleich eingestellt werden, um anzuzeigen, dass jeder Knoten derselben VRRP-Gruppe angehört. Muss eine ganze Zahl sein
    priority 100               #Priorität des Hauptknotens (1-254), Standard 100, beachten Sie, dass die Priorität des sekundären Knotens niedriger sein muss als die des Hauptknotens
    advert_int 1               #Legt das Zeitintervall zwischen Synchronisationsprüfungen zwischen zwei Knoten fest, die beiden Knoten müssen konsistent sein. Wert in Sekunden
    authentication {           #Validierungsinformationen einstellen, zwei Knoten müssen konsistent sein
        auth_type PASS         #Authentifizierungstypen einrichten, hauptsächlich PASS und AH
        auth_pass 8nzlTBSoSrpJP0i77TgL!        #Das Authentifizierungspasswort einstellen, zwei Knoten müssen unter einem vrrp_instance dasselbe Passwort verwenden        
                                
    }
    virtual_ipaddress {        #Virtuelle IP (Floating IPs) angeben, beide Knoten müssen gleich eingestellt sein, es kann mehr als eine geben, eine pro Zeile. Als Parameter dev das Netzwerkgerät, dem die IP zusätzlich zugewiesen wurde      
        49.12.154.74 dev ens18
    }
 
    #Notify section, when wiched to run a script ins stated (eg script to assign floating ip per script, at Hetzner or other)
    #only notify will called at any state. But the following parameters are overgiven
    #notify /path_to_script/script_allstates.sh
    #In the script allstates there are 3 parameters that can checked
    #Type contains value "GROUP" or "INSTANCE"
    #TYPE = $1
    #Name contains teh name of group or intance
    #NAME = $2
    #State contains, the state. These are "MASTER" "BACKUP" "FAULT" with * you can catch an unknown state
    #STATE = $3
    #example script_allstate.sh below in next code box
  
    #These calls the scripts in the given state, so no check in sh script is necessary
    #notify_master /path_to_script/script_master.sh
    #    (or notify_master “ /path_to_script/script_master.sh <arg_list>”)
    #notify_backup /path_to_script/script_backup.sh
    #    (or notify_backup “ /path_to_script/script_backup.sh <arg_list>”)
    #notify_fault /path_to_script/script_fault.sh
    #    (or notify_fault “ /path_to_script/script_fault.sh <arg_list>”)
 
 
}
#=== End Ha for Floating IP =========================#