L3 HA router ports 'host' field do not point to the active router replica
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
We are using kilo. In our setup, we have 3 neutron controllers, l3 agents are running on all the 3 neutron controllers. We make l3_ha = true in all the 3 neutron.conf.
We notice that when we attach a network to a router, the gateway namespace is allocated to a controller node which doesn't match the record in neutron db. Following is one example.
Create a router, a network, attach the network to the router.
1. neutron tells that the gateway ip 1.1.1.1 is at controller-1
[stack@c5220-01 ~]$ neutron port-show 3306c360-
+------
| Field | Value |
+------
| admin_state_up | True |
| allowed_
| binding:host_id | overcloud-
| binding:profile | {} |
| binding:vif_details | {"port_filter": true, "ovs_hybrid_plug": true} |
| binding:vif_type | ovs |
| binding:vnic_type | normal |
| device_id | 934f0b90-
| device_owner | network:
| extra_dhcp_opts | |
| fixed_ips | {"subnet_id": "463c2f0c-
| id | 3306c360-
| mac_address | fa:16:3e:72:34:4c |
| name | |
| network_id | 98f125b6-
| security_groups | |
| status | ACTIVE |
| tenant_id | 4ef11838925940e
+------
2. However, the gateway ip is at controller-2
[heat-admin@
ha-6d47f13a-b7: flags=4163<
inet 169.254.192.6 netmask 255.255.192.0 broadcast 169.254.255.255
inet6 fe80::f816:
ether fa:16:3e:43:9b:80 txqueuelen 1000 (Ethernet)
RX packets 20 bytes 1638 (1.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 309 bytes 16926 (16.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
qg-22431202-eb: flags=4163<
inet 10.8.87.25 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::f816:
ether fa:16:3e:bd:56:ad txqueuelen 1000 (Ethernet)
RX packets 36 bytes 2746 (2.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43 bytes 2890 (2.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
qr-3306c360-5a: flags=4163<
inet 1.1.1.1 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::f816:
ether fa:16:3e:72:34:4c txqueuelen 1000 (Ethernet)
RX packets 95 bytes 5856 (5.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 90 bytes 4200 (4.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3. On controller-1, there is no such ip
[heat-admin@
ha-7ff9abd2-bd: flags=4163<
inet 169.254.192.5 netmask 255.255.192.0 broadcast 169.254.255.255
inet6 fe80::f816:
ether fa:16:3e:9d:27:5c txqueuelen 1000 (Ethernet)
RX packets 321 bytes 19678 (19.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12 bytes 1008 (1008.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
qg-22431202-eb: flags=4163<
ether fa:16:3e:bd:56:ad txqueuelen 1000 (Ethernet)
RX packets 42 bytes 3360 (3.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 110 (110.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
qr-3306c360-5a: flags=4163<
ether fa:16:3e:72:34:4c txqueuelen 1000 (Ethernet)
RX packets 105 bytes 6456 (6.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 110 (110.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
4. On controller-0, there is no such ip
[heat-admin@
ha-8dccf24a-2e: flags=4163<
inet 169.254.192.4 netmask 255.255.192.0 broadcast 169.254.255.255
inet6 fe80::f816:
ether fa:16:3e:98:83:dd txqueuelen 1000 (Ethernet)
RX packets 1140 bytes 68618 (67.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12 bytes 1008 (1008.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
qg-22431202-eb: flags=4163<
ether fa:16:3e:bd:56:ad txqueuelen 1000 (Ethernet)
RX packets 42 bytes 3244 (3.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 110 (110.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
qr-3306c360-5a: flags=4163<
ether fa:16:3e:72:34:4c txqueuelen 1000 (Ethernet)
RX packets 1753 bytes 105336 (102.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 110 (110.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tags: | added: l3-ha |
summary: |
- router allocation doesn't match the record in neutron db when l3_ha is - true + l3_ha router ports 'host' field do not point to the active router + replica |
summary: |
- l3_ha router ports 'host' field do not point to the active router + L3 HA router ports 'host' field do not point to the active router replica |
If I'm not mistaken, VRRP mechanisms are determining which router has the qg and qr addresses configured at any given time. I don't believe the port is updated on a failover event or even after the initial election.