Pertanyaan Keepalived tidak mengirim iklan mutlicast


Saya punya dua sistem, keduanya VMs. Itu dikonfigurasi untuk menggunakan jaringan yang dijembatani. Saya mencoba untuk tetap terjaga untuk mengelola kepemilikan VIP - 10.190.1.230. Saya telah mencoba dua versi keepalived-1.2.2 dan keepalived-1.2.1, dibangun dari sumber.

ServerA - RHEL5.2 x64 - 10.190.1.228 - PRIORITY 50
ServerB - RHEL6 x64 - 10.190.1.229 - PRIORITY 101
VIP - 10.190.1.230

Masalah saya tampaknya disimpan pada ServerB tidak mengirim iklan multicast. Ini melihat iklan multicast. dari ServerA:

[root@ServerB~]# tcpdump -vv -c 3 -i eth0 vrrp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:18:10.760577 IP (tos 0x0, ttl 255, id 856, offset 0, flags [none], proto VRRP (112), length 40)
10.190.1.228 > 224.0.0.18: VRRPv2, Advertisement, vrid 151, prio 50, authtype none, intvl 1s, length 20, addrs: 10.190.1.230
10:18:11.762039 IP (tos 0x0, ttl 255, id 857, offset 0, flags [none], proto VRRP (112), length 40)
10.190.1.228 > 224.0.0.18: VRRPv2, Advertisement, vrid 151, prio 50, authtype none, intvl 1s, length 20, addrs: 10.190.1.230
10:18:12.762883 IP (tos 0x0, ttl 255, id 858, offset 0, flags [none], proto VRRP (112), length 40)
10.190.1.228 > 224.0.0.18: VRRPv2, Advertisement, vrid 151, prio 50, authtype none, intvl 1s, length 20, addrs: 10.190.1.230
3 packets captured
3 packets received by filter
0 packets dropped by kernel
[root@ServerB~]# 

Jika saya membunuh keepalived pada ServerA, dan menjaga tcpdump berjalan, saya tidak melihat paket. Saya menggunakan konfigurasi keepalived sederhana berikut:

Server A - 10.190.1.228

 vrrp_instance VI_1 {
    interface eth0
    state BACKUP 
    virtual_router_id 151
    priority 50 
    virtual_ipaddress {
            10.190.1.230
    }
}

Server B - 10.190.1.229

vrrp_instance VI_1 {
    interface eth0
    state MASTER
    virtual_router_id 151
    priority 100 
    virtual_ipaddress {
        10.190.1.230
    }
}

ServerA, benar saya rasa, melihat karena tidak dapat melihat iklan VRRPv2 dari prioritas yang lebih tinggi disimpan di ServerB, memegang VIP:

[root@ServerA~]# ip add sh eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 08:00:27:59:58:c0 brd ff:ff:ff:ff:ff:ff
inet 10.190.1.228/24 brd 10.190.1.255 scope global eth0
inet 10.190.1.230/32 scope global eth0
inet6 fe80::a00:27ff:fe59:58c0/64 scope link 
   valid_lft forever preferred_lft forever
[root@ServerA~]# 

Konfigurasi jaringan

Firewall dinonaktifkan pada kedua mesin. Kedua antarmuka memiliki set bendera MULTICAST.

Saya telah menggunakan iperf untuk mempublikasikan ke grup VRRP:

[root@ServerB~]# iperf -u -c 224.0.0.18
------------------------------------------------------------
Client connecting to 224.0.0.18, UDP port 5001
Sending 1470 byte datagrams
Setting multicast TTL to 1
UDP buffer size:  122 KByte (default)
------------------------------------------------------------
[  3] local 10.190.1.229 port 32929 connected with 224.0.0.18 port 5001
^C[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 0.6 sec  73.2 KBytes  1.05 Mbits/sec
[  3] Sent 51 datagrams
[root@ServerB~]# 

ServerA dapat melihat traffic ini:

[root@ServerA~]# tcpdump -c 3 -i eth0 host 224.0.0.18
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:37:30.460427 IP 10.190.1.229.33088 > vrrp.mcast.net.commplex-link: UDP, length 1470
10:37:30.472247 IP 10.190.1.229.33088 > vrrp.mcast.net.commplex-link: UDP, length 1470
10:37:30.482908 IP 10.190.1.229.33088 > vrrp.mcast.net.commplex-link: UDP, length 1470
3 packets captured
10 packets received by filter
0 packets dropped by kernel
[root@ServerA~]# 

Di atas akan membuat saya berpikir bahwa ini bukan masalah jaringan. Saya tidak memiliki rute mutlicast di tabel routing, tetapi di atas menunjukkan bahwa saya tidak memerlukannya. Lalu lintas multicast menggunakan eth0.

Akhirnya, ini log out dari keepalived di ServerB:

May 18 10:40:46 ServerB Keepalived: Starting Keepalived v1.2.1 (05/17,2011)
May 18 10:40:46 ServerB Keepalived: Remove a zombie pid file /var/run/keepalived.pid
May 18 10:40:46 ServerB Keepalived: Registering Kernel netlink reflector
May 18 10:40:46 ServerB Keepalived: Registering Kernel netlink command channel
May 18 10:40:46 ServerB Keepalived: Registering gratutious ARP shared channel
May 18 10:40:46 ServerB Keepalived: Configuration is using : 55219 Bytes
May 18 10:40:46 ServerB Keepalived: Using LinkWatch kernel netlink reflector...

Saya belum menjalankannya dengan tombol -D, ini sepertinya adalah debugging memori dan sangat kecil artinya bagi saya. Saya telah mengunggah keluaran string ke sini.

Ketika saya strut keepalived dengan -n bendera (jangan garpu) saya mendapatkan output berikut, setelah output terkait di atas:

sendto(3, "<30>May 18 10:58:50 Keepalived: "..., 68, MSG_NOSIGNAL, NULL, 0) = 68
sendto(3, "<30>May 18 10:58:50 Keepalived: "..., 75, MSG_NOSIGNAL, NULL, 0) = 75
rt_sigaction(SIGCHLD, {0x411b60, [], SA_RESTORER|SA_RESTART, 0x3db5a32a20}, {SIG_DFL, [], 0}, 8) = 0
select(1024, [4 6], [], [], {1, 0})     = 0 (Timeout)
select(1024, [4 6], [], [], {1, 0})     = 0 (Timeout)
select(1024, [4 6], [], [], {1, 0})     = 0 (Timeout)
select(1024, [4 6], [], [], {1, 0})     = 0 (Timeout)
[ etc ..]

Hal ini berbeda dengan output strace untuk working keepalived pada ServerA, di mana saya dapat melihat sendto (), sendmdg () dan recmsg () panggilan yang dibuat.


6
2018-05-18 09:49






Jawaban:


Anak laki-laki aku merasa bodoh. Saya menyimpan file keepalived.conf saya disimpan sebagai keepalived.cfg di / etc / keepalived / (kira saya mengambil ini dari haproxy.cfg). Keepalived mencari /etc/keepalived/keepalive.conf. Saya mulai keepalived tanpa -f flag jadi itu dimulai tanpa konfigurasi.

Jika saya menggunakan opsi -d (dump conf to syslog) saya akan melihat itu menggunakan konfigurasi default dan tidak mengambil pengaturan saya.


4
2018-05-19 10:03