Solusi 1:
Paket tidak melewati antar mesin pada antarmuka em1 (menyebabkan skenario otak terbelah seperti yang dinyatakan Mike).
- periksa firewall Anda untuk memastikan paket tidak tertangkap
- periksa jaringan Anda untuk memastikan em1 adalah jaringan yang sama di kedua mesin
Berikut ini contoh tampilan salah satu 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)
Solusi 2:
Untuk kasus saya, saya harus mengizinkan lalu lintas multicast melalui firewall ke 224.0.0.18
, untuk ufw:
ufw allow from 224.0.0.18
ufw allow to 224.0.0.18
Ini membantu saya.
Solusi 3:
Dalam kasus saya, untuk CentOS/RHEL 8 saya hanya perlu mengizinkan aturan kaya firewall untuk protokol vrrp untuk menyelesaikan masalah otak terpisah Keepalived ini di mana kedua server menyimpan alamat IP VIP. Saya harus menambahkan flag kernel sysctl untuk mengizinkan HAProxy mengikat ke IP VIP nonlokal.
Untuk sysctl, tambahkan net.ipv4.ip_nonlocal_bind = 1
di /etc/sysctl.conf
file lalu lakukan sysctl -p
untuk memuat ulang konfigurasi sysctl. Saya memerlukan ini BUKAN untuk skenario otak terbelah Keepalived tetapi untuk memiliki HAProxy mengikat ke alamat IP-nya sendiri untuk statistik (mis:ikat 192.168.0.10:1492/stats) dan ikat ke alamat VIP (IP virtual) untuk web penyeimbang beban lalu lintas (mengikat 192.168.0.34:80 dan mengikat 192.168.0.34:443). Jika tidak, layanan HAProxy gagal memulai dengan menyatakan tidak dapat mengikat ke port 80 dan 443 hanya dengan alamat IP VIP. Saya melakukan ini untuk menghindari pengikatan *:80 dan pengikatan *:443. Juga, terasa seperti no-brainer tetapi mudah diabaikan, periksa untuk melihat apakah Anda telah mengizinkan port yang Anda gunakan untuk statistik melalui firewall jika Anda tidak dapat membuka halaman statistik.
Untuk firewall, jalankan perintah berikut:
# firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
# firewall-cmd --reload
Saya menemukan flag ini dan informasi lainnya langsung dari dokumentasi RedHat untuk HAProxy dan Keepalived:
Referensi firewall:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/s1-lvs-connect-vsa
Referensi flag pengikat nonlokal (ini digunakan untuk HAProxy karena saya tidak menggunakan Keepalived untuk penyeimbangan muatan):https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/s1-initial -setup-forwarding-vsa
Just HAProxy FYI:Jika HAProxy masih gagal mengikat ke port, Anda mungkin ingin melihat SELinux yang baik memblokirnya. Bagi saya, pada CentOS 8 saya harus melakukan semanage port -a -t http_port_t -p tcp 1492
untuk halaman statistik HAProxy saya.