emilienm.routed_lb
ansible-rolle-weitergeleitete-lb
Dies wird einen fortgeschrittenen Load-Balancer bereitstellen, der in der Lage ist, weitergeleitete VIPs mit FRR (unter Verwendung von BGP) zu verwalten und den Datenverkehr mit HAproxy zu balancieren.
Angenommen, Sie hosten einen Webdienst, der über eine oder mehrere virtuelle IPs (VIPs) exponiert ist (Hinweis: dies ist nicht zwingend erforderlich). Sie möchten, dass diese VIPs in Ihrer Infrastruktur über das BGP-Protokoll geroutet werden.
Diese Rolle wird Folgendes tun:
- Wenn BGP-Nachbarn in der Konfiguration angegeben sind, wird FRR bereitgestellt und eine Verbindung zu Ihren BGP-Nachbarn hergestellt. Wenn die VIPs auf dem Knoten erstellt werden, werden sie in Ihrer Infrastruktur geroutet.
- HAproxy wird bereitgestellt, um Ihren Dienst zu load-balancieren und zu überwachen.
- Wenn die VIPs in der Konfiguration angegeben sind, werden sie erstellt, wenn eine Mindestanzahl von Backends für einen bestimmten Dienst als gesund erkannt wird und daher in BGP geroutet werden, wenn FRR bereitgestellt ist.
- Sie werden entfernt, wenn kein gesundes Backend für einen bestimmten Dienst gefunden wurde, und daher nicht in BGP geroutet werden, wenn FRR bereitgestellt ist.
- Wenn
strict_vips
in einer LB-Konfiguration auf true gesetzt ist, müssen alle Dienste, die diese VIP verwenden, gesund sein, oder die VIP wird nicht erstellt. Der Standardwert ist auffalse
gesetzt.
Wenn Sie also mehrere Load-Balancer hosten, wird Ihr Webverkehr:
- über BGP geroutet, wenn FRR bereitgestellt ist
- auf Ebene der VIPs load-balanced und hochverfügbar über BGP, wenn FRR bereitgestellt ist
- zwischen gesunden Backends über HAproxy load-balanced
Anforderungen
Momentan testen wir dieses Modul auf CentOS 9 Stream.
Installation
ansible-galaxy install emilienm.routed_lb
ansible-galaxy collection install ansible.posix ansible.utils
Rollenvariablen
Es muss nur configs
gesetzt werden, als Wörterbuch:
configs:
lb1:
haproxy_stats: true # HAproxy-Statistiken unter der URL http://lb-ip:8404/stats aktivieren
bgp_asn: <BGP ASN>
bgp_neighbors: # optional, wenn nicht gesetzt, wird FRR nicht bereitgestellt
- ip: <IP eines BGP-Routers>
password: <BGP-Passwort>
strict_vips: true
services:
- name: <Dienstname (z.B. api)>
vips:
- <VIPs, die verwendet werden, um auf diesen Dienst im Frontend zuzugreifen>
min_backends: <Mindestanzahl an gesunden Backends, die aktiv sein müssen, damit die VIPs für diesen Dienst erstellt werden>
healthcheck: <HAproxy-Backend-Befehl>
balance: <LB-Algorithmus>
frontend_port: <HAproxy-Frontend-Port für den Dienst>
haproxy_monitor_port: <HAproxy-Überwachungsport für den Dienst>
backend_opts: <HAproxy-Optionen für jedes Backend>
backend_port: <HAproxy-Backend-Port>
backend_hosts:
- name: <Hostname des Backends>
ip: <IP des Backends>
Schauen Sie sich tests/vars.yml
für ein vollständiges Beispiel an.
Abhängigkeiten
ansible.posix
Beispiel-Playbook
Erstellen Sie eine Datei mit dem Namen playbook.yml
:
---
- hosts: lb1
vars:
config: lb1
tasks:
- name: Variablen für Tests einfügen
ansible.builtin.include_vars: vars.yml
- name: Rolle ausführen
include_role:
name: emilienm.routed_lb
Und erstellen Sie dann eine Datei mit dem Namen inventory
für das Ansible-Inventar:
all:
hosts:
lb1:
ansible_host: 192.168.10.2 # IP-Adresse Ihres Load-Balancers
ansible_user: cloud-user
ansible_become: true
Führen Sie dann aus:
ansible-playbook playbook.yml -i inventory
Ihre Load-Balancer sollten jetzt betriebsbereit sein!
Lizenz
Apache-2.0
Ansible role to deploy a Load-Balancer capable of managing VIPs routed with BGP
ansible-galaxy install emilienm.routed_lb