Puncte:0

Keeplivered merge creierul divizat când Firewalld rulează

drapel pl

Folosesc keepalived pentru a oferi disponibilitate între două servere Alma 8 Nginx (găzduite pe VMWare, dacă asta are vreo relevanță). Când firewalld este activat, în ciuda setării unei reguli bogate pentru VRRP, când aduc firewalld, ambele gazde încep să răspundă pe IP-ul virtual:

root@dca-nfs01:~# arping 172.31.5.233
60 de octeți de la 00:50:56:84:ac:d0 (172.31.5.233): index=39 time=1.960 usec
60 de octeți de la 00:50:56:84:ac:d0 (172.31.5.233): index=40 time=20.660 usec
60 de octeți de la 00:50:56:84:52:ed (172.31.5.233): index=41 time=24.930 usec
60 de octeți de la 00:50:56:84:ac:d0 (172.31.5.233): index=42 time=534.616 msec
60 de octeți de la 00:50:56:84:52:ed (172.31.5.233): index=43 time=534.646 msec

Configurația mea keepalived este preluată dintr-un șablon de tutorial standard și arată după cum urmează:

[root@dca-ngx01-al ~]# cat /etc/keepalived/keepalived.conf
global_defs {
  # Identificatorul procesului Keeplivered
  router_id nginx
}

# Script pentru a verifica dacă Nginx rulează sau nu
vrrp_script check_nginx {
  scriptul „/sbin/pidof nginx”
  intervalul 2
  greutate 50
}

# Interfață virtuală - Prioritatea specifică ordinea în care interfața alocată va prelua în cazul unui failover
vrrp_instance VI_01 {
  stat MAESTRU
  interfata ens192
  virtual_router_id 151
  prioritate 110

  # Adresa IP virtuală partajată între cele două servere web NGINX care va pluti
  adresa_virtuală {
    172.31.5.233
  }
  track_script {
    check_nginx
  }
  autentificare {
    auth_type AH
    auth_pass secret
  }
}

Ambele casete au un firewall simplu cu o singură zonă și am adăugat o regulă bogată pentru a permite comunicarea VRRP între cele două gazde:

[root@dca-ngx01-al ~]# firewall-cmd --list-all
public (activ)
  target: implicit
  icmp-block-inversion: nu
  interfețe: ens192
  surse:
  servicii: dhcpv6-client http https ssh
  porturi: 10050/tcp
  protocoale:
  înainte: nu
  mascarada: nu
  porturi înainte:
  porturi sursă:
  icmp-blocks:
  reguli bogate:
        rule protocol value="vrrp" accept

am setat si eu net.ipv4.ip_forward = 1 în /etc/sysctl.conf.

Când firewalld este oprit pe ambele casete, keepalived se comportă corect, dar când este activat, să pară că ambele părți își pierd legătura una cu cealaltă și doar trimit pachete ARP gratuite repetate:

â keepalived.service - Monitor de înaltă disponibilitate LVS și VRRP
   Încărcat: încărcat (/usr/lib/systemd/system/keepalived.service; activat; prestabilit furnizor: dezactivat)
   Activ: activ (în rulare) din Vineri 2022-03-25 12:48:25 GMT; acum 2h 35min
  Proces: 7140 ExecReload=/bin/kill -HUP $MAINPID (cod=ieșit, stare=0/SUCCESS)
  Proces: 12966 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (cod=ieșit, stare=0/SUCCESS)
 PID principal: 12967 (păstrat)
    Sarcini: 2 (limită: 11406)
   Memorie: 1,8 M
   CGroup: /system.slice/keepalived.service
           ââ12967 /usr/sbin/keepalived -D
           ââ12968 /usr/sbin/keepalived -D

Mar 25 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233
Mar 25 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233
Mar 25 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233
Mar 25 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233
Mar 25 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: (VI_01) Trimiterea/punerea în coadă ARP-uri gratuite pe ens192 pentru 1>
Mar 25 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233
Mar 25 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233
Mar 25 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233
Mar 25 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233
Mar 25 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Se trimite ARP gratuit pe ens192 pentru 172.31.5.233

Cu toate acestea, pot vedea din utilizarea TCPDump că pachetele obișnuite VRRP de la cealaltă gazdă ajung cel puțin în interfața de rețea atunci când firewalld este activ:

tcpdump: ieșirea verbosă a fost suprimată, utilizați -v sau -vv pentru decodarea completă a protocolului
ascultare pe ens192, tip link EN10MB (Ethernet), dimensiunea capturii 262144 octeți
15:25:21.532300 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3160): VRRPv2, Advertisement, vrid 151, prior 150, int length ah, authtype ah 20
15:25:22.532419 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3161): VRRPv2, Advertisement, vrid 151, prior 150, int authtype ah1s 20
15:25:23.532476 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3162): VRRPv2, Advertisement, vrid 151, prio 150, int length ahs, authtype a1s 20
15:25:24.532544 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3163): VRRPv2, Advertisement, vrid 151, prior 150, int authtype ah1s 20

Are cineva vreo idee despre cum pot remedia această problemă în continuare?

Mulțumesc anticipat.

Puncte:0
drapel pl

Mi-am dat seama în această dimineață care a fost cauza problemei, în cazul în care acest lucru ajută pe cineva la o dată viitoare. am activat LogDenied=toate în /etc/firewalld/firewalld.conf, și apoi a reușit să identifice ce pachete erau încă eliminate de firewalld folosind --get-log-denied intrerupator:

[root@dca-ngx02-al keepalived]# firewall-cmd --get-log-denied
28 mar 08:40:04 dca-ngx01-al.REDACTED.kernel local: FINAL_REJECT: IN=ens192 OUT= MAC=01:00:5e:00:00:12:00:50:56:84:ac:d0 :08:00 SRC=172.31.5.229 DST=224.0.0.18 LEN=64 TOS=0x00 PREC=0xC0 TTL=255 ID=79 PROTO=AH SPI=0xac1f05e5
28 mar 08:40:05 dca-ngx01-al.REDACTED.kernel local: FINAL_REJECT: IN=ens192 OUT= MAC=01:00:5e:00:00:12:00:50:56:84:ac:d0 :08:00 SRC=172.31.5.229 DST=224.0.0.18 LEN=64 TOS=0x00 PREC=0xC0 TTL=255 ID=80 PROTO=AH SPI=0xac1f05e5

Am rezolvat problema adăugând o regulă de firewall ulterioară pentru pachetele multicast AH.

firewall-cmd --add-rich-rule='rule protocol value="ah" accept' --permanent

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.