emilienm.routed_lb
ansible-role-routed-lb
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
Ansible role to deploy a Load-Balancer capable of managing VIPs routed with BGP
ansible-galaxy install emilienm.routed_lb