emilienm.routed_lb

ansible-role-routed-lb

ansible-lint

To będzie wdrażać zaawansowany Balancer Obciążenia, który jest w stanie zarządzać trasowanymi VIP-ami za pomocą FRR (używając BGP) oraz równoważyć ruch za pomocą HAproxy.

Załóżmy, że hostujesz usługę internetową, która jest wystawiana przez jeden lub więcej wirtualnych adresów IP, nazywanych VIP (chociaż nie jest to wymagane). Chcesz, aby ten VIP był trasowany w twojej infrastrukturze dzięki protokołowi BGP.

Ten moduł wykona następujące zadania:

  • Jeśli w konfiguracji podano sąsiadów BGP, wdroży FRR i połączy się z twoimi sąsiadami BGP. Jeśli VIP-y są tworzone na węźle, będą trasowane w twojej infrastrukturze.
  • Wdroży HAproxy do równoważenia obciążenia i monitorowania twojej usługi.
  • Jeśli VIP-y są podane w konfiguracji, zostaną utworzone, jeśli minimum liczba backendów będzie zdrowa dla danej usługi, a zatem zostaną trasowane w BGP, jeśli FRR jest wdrożone.
  • Zostaną usunięte, jeśli nie znajdzie się żadnego zdrowego backendu dla danej usługi, więc nie będą trasowane w BGP, jeśli FRR jest wdrożone.
  • Jeśli strict_vips jest ustawione na true w konfiguracji LB, wszystkie usługi korzystające z tego VIP muszą być zdrowe, w przeciwnym razie VIP nie zostanie stworzony. Domyślnie jest ustawione na false.

Jeśli hostujesz wiele Balancerów Obciążenia, twój ruch internetowy będzie:

  • trasowany dzięki BGP, jeśli FRR jest wdrożone
  • równoważony z wysoką dostępnością na poziomie VIP, dzięki BGP, jeśli FRR jest wdrożone
  • równoważony między zdrowymi backendami dzięki HAproxy

Wymagania

Na razie testujemy ten moduł na CentOS 9 Stream.

Instalacja

ansible-galaxy install emilienm.routed_lb
ansible-galaxy collection install ansible.posix ansible.utils

Zmienne roli

Tylko configs musi być ustawione jako słownik:

configs:
  lb1:
    haproxy_stats: true # włącz statystyki HAproxy na url http://lb-ip:8404/stats
    bgp_asn: <BGP ASN>
    bgp_neighbors: # opcjonalne, gdy nie jest ustawione, FRR nie będzie wdrożone
      - ip: <IP routera BGP>
        password: <hasło BGP>
    strict_vips: true
    services:
      - name: <Nazwa usługi (np. api)>
        vips:
          - <VIP-y używane do dotarcia do tej usługi w frontendzie>
        min_backends: <Minimalna liczba zdrowych backendów, które muszą działać, aby VIP-y zostały utworzone dla tej usługi>
        healthcheck: <komenda backendu HAproxy>
        balance: <algorytm LB>
        frontend_port: <port frontend HAproxy dla tej usługi>
        haproxy_monitor_port: <port monitorowania HAproxy dla tej usługi>
        backend_opts: <opcje HAproxy dla każdego backendu>
        backend_port: <port backendu HAproxy>
        backend_hosts:
          - name: <nazwa hosta backendu>
            ip: <IP backendu>

Zobacz tests/vars.yml dla pełnego przykładu.

Zależności

  • ansible.posix

Przykład Playbooka

Utwórz plik o nazwie playbook.yml:

---
- hosts: lb1
  vars:
    config: lb1
  tasks:
    - name: Dołącz zmienne do testowania
      ansible.builtin.include_vars: vars.yml
    - name: Wykonaj rolę
      include_role:
        name: emilienm.routed_lb

Następnie utwórz plik o nazwie inventory dla inwentarza Ansible:

all:
  hosts:
    lb1:
      ansible_host: 192.168.10.2 # adres IP twojego Balancera Obciążenia
      ansible_user: cloud-user
      ansible_become: true

Następnie uruchom:

ansible-playbook playbook.yml -i inventory

Twoje load-balancery powinny działać!

Licencja

Apache-2.0

O projekcie

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

Zainstaluj
ansible-galaxy install emilienm.routed_lb
Licencja
Unknown
Pobrania
553
Właściciel
Software Engineer working on @kubernetes and @openstack at Red Hat.