In parent task I am setting up a new service, dumps-nfs fronted by lvs and backed by clouddumps hosts, the same way dumps-http and dumps-rsync work already. Minus the fact that it won't be world-readable.
In https://gerrit.wikimedia.org/r/c/operations/puppet/+/1305403 I added the required firewall rules to allow load balancer health checks:
firewall::service { 'dumps_nfs_lb_health':
proto => 'tcp',
port => [2049],
src_sets => ['LOAD_BALANCER_HEALTH_CHECKS'],
}i.e. allow traffic from internal lvs addresses towards 208.80.154.71 clouddumps1002 and 208.80.154.142 clouddumps1001.
At deployment time the health checks work as expected from lvs1018 and they don't (with the default address selection) on lvs1020:
lvs1018:~$ telnet -4 clouddumps1002.wikimedia.org 2049 Trying 208.80.154.71... Connected to clouddumps1002.wikimedia.org. Escape character is '^]'.
lvs1020:~$ telnet -4 clouddumps1002.wikimedia.org 2049 Trying 208.80.154.71...
The difference between the two load balancers is AFAICT the fact that lvs1018 has only its internal route and address, whereas lvs1020 is facing the public vlans too and thus the healthchecks come from one of its 208.80. public addresses. At least in the default network namespace that is !
lvs1018:~$ ip r default via 10.64.16.1 dev eno1np0 onlink 10.64.16.0/22 dev eno1np0 proto kernel scope link src 10.64.16.60
lvs1020:~$ ip r default via 10.64.48.1 dev eno1np0 onlink 10.64.0.0/22 dev vlan1017 proto kernel scope link src 10.64.1.17 10.64.16.0/22 dev vlan1018 proto kernel scope link src 10.64.17.17 ... 10.64.189.0/24 dev vlan1087 proto kernel scope link src 10.64.189.20 208.80.154.0/26 dev vlan1001 proto kernel scope link src 208.80.154.62 208.80.154.64/26 dev vlan1003 proto kernel scope link src 208.80.154.106 208.80.154.128/26 dev vlan1002 proto kernel scope link src 208.80.154.171 208.80.155.96/27 dev vlan1004 proto kernel scope link src 208.80.155.113
Of course allowing the public networks to reach tcp/2049 on the clouddumps fixes the healthchecks. The questions I have:
- is this expected? namely using LOAD_BALANCER_HEALTH_CHECKS set may not allow healthchecks in certain circumstances
- how to best fix this issue?