emilienm.routed_lb

ansible-rolle-weitergeleitete-lb

ansible-lint

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 auf false 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

Über das Projekt

Ansible role to deploy a Load-Balancer capable of managing VIPs routed with BGP

Installieren
ansible-galaxy install emilienm.routed_lb
GitHub Repository
Lizenz
Unknown
Downloads
553
Besitzer
Software Engineer working on @kubernetes and @openstack at Red Hat.