Skonfigurowałem keepalived na dwóch maszynach Debiana dla wysokiej dostępności, ale natrafiłem na maksymalną liczbę wirtualnych adresów IP, które mogę przypisać do mojego vrrp_instance
. Jak mogę skonfigurować i zrezygnować z ponad 20 wirtualnych adresów IP?
To jest bardzo prosta konfiguracja:
LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 - 10.200.85.200
Na każdym komputerze działa także wiązanie Apache (później Nginx) na wirtualnych adresach IP w celu zakończenia certyfikatu klienta SSL i proxy do serwerów WWW zaplecza. Powodem, dla którego potrzebuję tak wielu VIP-ów, jest niemożność korzystania z VirtualHost na HTTPS.
To jest mój keepalived.conf:
vrrp_script chk_apache2 {
script "killall -0 apache2"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
.
. all the way to
.
10.200.85.200
}
Identyczna konfiguracja znajduje się na maszynie BACKUP i działa dobrze, ale tylko do 20 IP.
Znalazłem HOWTO omawiające ten problem. Zasadniczo sugerują posiadanie tylko jednego VIP-a i kierowanie całego ruchu „przez” ten jeden adres IP, a „wszystko będzie dobrze”. Czy to dobre podejście? Korzystam z zapór ogniowych pfSense przed maszynami.
Cytat z powyższego linku:
ip route add $VNET/N via $VIP
or
route add $VNET netmask w.x.y.z gw $VIP
Z góry dziękuję.
EDYTOWAĆ:
@David Schwartz powiedział, że warto dodać trasę, więc próbowałem dodać statyczną trasę do zapory ogniowej pfSense, ale to nie działało tak, jak się spodziewałem.
trasa pfSense:
Interface: LAN
Destination network: 10.200.85.200/32 (virtual IP)
Gateway: 10.200.85.100 (floating virtual IP)
Description: Route to VIP .100
Upewniłem się również, że mam włączone przekazywanie pakietów na moich hostach:
$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
Czy robię to źle? Usunąłem również wszystkich VIP-ów z keepalived.conf, więc nie powiedzie się to tylko 10.200.85.100.
źródło
Odpowiedzi:
Najprostszym rozwiązaniem bez zmiany obecnej architektury jest skorzystanie z opcji virtual_ipaddress_excluded . Na przykład
virtual_ipaddress_excluded zawiera listę adresów IP, które keepalived będzie wyświetlać na serwerze, ale nie są one zawarte w samym pakiecie VRRP, więc nie wliczają się do limitu 20 adresów IP.
W moich konfiguracjach lubię przypisywać adres IP specjalnie dla virtual_ipaddress . tj. ten, który jest zawarty w pakietach VRRP i umieszcza wszystko inne w virtual_ipaddress_excluded . To dobry pomysł, ponieważ nie chcesz zmieniać głównego adresu IP tylko dlatego, że klient odszedł.
źródło