Řešení 1:
Pakety neprocházejí mezi počítači na rozhraní em1 (způsobuje scénář rozděleného mozku, jak uvádí Mike).
- zkontrolujte bránu firewall a ujistěte se, že nedochází k zachycování paketů
- zkontrolujte svou síť a ujistěte se, že em1 je stejná síť na obou počítačích
Zde je příklad toho, jak vypadá jeden z paketů:
Frame 2: 54 bytes on wire (432 bits), 54 bytes captured (432 bits)
Arrival Time: Jun 1, 2013 03:39:50.709520000 UTC
Epoch Time: 1370057990.709520000 seconds
[Time delta from previous captured frame: 0.000970000 seconds]
[Time delta from previous displayed frame: 0.000970000 seconds]
[Time since reference or first frame: 0.000970000 seconds]
Frame Number: 2
Frame Length: 54 bytes (432 bits)
Capture Length: 54 bytes (432 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ip:vrrp]
Ethernet II, Src: 00:25:90:83:b0:07 (00:25:90:83:b0:07), Dst: 01:00:5e:00:00:12 (01:00:5e:00:00:12)
Destination: 01:00:5e:00:00:12 (01:00:5e:00:00:12)
Address: 01:00:5e:00:00:12 (01:00:5e:00:00:12)
.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: 00:25:90:83:b0:07 (00:25:90:83:b0:07)
Address: 00:25:90:83:b0:07 (00:25:90:83:b0:07)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol Version 4, Src: 10.0.10.11 (10.0.10.11), Dst: 224.0.0.18 (224.0.0.18)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 40
Identification: 0x8711 (34577)
Flags: 0x00
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
Fragment offset: 0
Time to live: 255
Protocol: VRRP (112)
Header checksum: 0x4037 [correct]
[Good: True]
[Bad: False]
Source: 10.0.10.11 (10.0.10.11)
Destination: 224.0.0.18 (224.0.0.18)
Virtual Router Redundancy Protocol
Version 2, Packet type 1 (Advertisement)
0010 .... = VRRP protocol version: 2
.... 0001 = VRRP packet type: Advertisement (1)
Virtual Rtr ID: 254
Priority: 151 (Non-default backup priority)
Addr Count: 1
Auth Type: No Authentication (0)
Adver Int: 1
Checksum: 0x3c01 [correct]
IP Address: 10.0.0.254 (10.0.0.254)
Řešení 2:
V mém případě jsem musel povolit multicastový provoz přes firewall na 224.0.0.18
, pro ufw:
ufw allow from 224.0.0.18
ufw allow to 224.0.0.18
To mi pomohlo.
Řešení 3:
V mém případě jsem pro CentOS/RHEL 8 musel pouze povolit firewall rich-rule pro protokol vrrp pro vyřešení tohoto problému s rozdělením mozku Keepalived, kde oba servery měly VIP IP adresu. Musel jsem přidat sysctl kernel flag, aby se HAProxy vázalo na nelokální VIP IP.
Pro sysctl přidejte net.ipv4.ip_nonlocal_bind = 1
v /etc/sysctl.conf
a poté proveďte sysctl -p
pro opětovné načtení konfigurace sysctl. Potřeboval jsem to NE pro scénář s rozděleným mozkem Keepalived, ale pro to, abych se HAProxy vázal na svou vlastní IP adresu pro statistiky (např.:bind 192.168.0.10:1492/stats) a vázal se na VIP (virtuální IP) adresu pro web s vyrovnáváním zatížení provoz (vázat 192.168.0.34:80 a vázat 192.168.0.34:443). V opačném případě se nepodařilo spustit službu HAProxy s tím, že se nemůže vázat na port 80 a 443 pouze s VIP IP adresou. Dělal jsem to, abych se vyhnul tomu, abych měl vazbu *:80 a vazbu *:443. Také to vypadá, že je to jednoduché, ale snadno přehlédnutelné. Pokud se nemůžete dostat na stránku statistik, zkontrolujte, zda jste povolili port, který používáte pro statistiky, přes bránu firewall.
Pro bránu firewall spusťte následující příkazy:
# firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
# firewall-cmd --reload
Tyto příznaky a další informace jsem našel přímo z dokumentace RedHat pro HAProxy a Keepalived:
Reference brány firewall:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/s1-lvs-connect-vsa
Odkaz na příznak nelokální vazby (toto bylo použito pro HAProxy, i když jsem nepoužíval Keepalived pro vyrovnávání zátěže):https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/s1-initial -setup-forwarding-vsa
Jen HAProxy FYI:Pokud se HAProxy stále nedaří navázat spojení s porty, možná se budete chtít podívat na starý dobrý SELinux, který to blokuje. Pro mě na CentOS 8 jsem musel udělat semanage port -a -t http_port_t -p tcp 1492
pro mou stránku statistik HAProxy.