Skip to content

systemd-networkd prunes floating virtual IPs for high-availability environments #12050

@chr4

Description

@chr4

Is your feature request related to a problem? Please describe.

When maintaining virtual floating IPs (VIPs) on high-available systems, I'm seeing them pruned when restarting systemd-networkd (even with no config changes) which results in a downtime.

This problem is especially severe when DHCP is used, as it is also triggered when the DHCP lease gets renewed (some cloud providers use DHCP by default to configure network interfaces). But also on static IP configurations, systemd-networkd might get restarted from time to time (automatic security patches, etc.).

I'm aware that this is a feature (which I agree is useful for desktops, etc.). In high-available environments with VIPs this backfires when using Linux distributions that rely on systemd-networkd (like Ubuntu, via netplan).

Describe the solution you'd like

I'm suggesting a flag that disables this behaviour, or would allow whitelisting certain VIPs to prevent them from purging. I've tried CriticalConnection=true, but this doesn't prevent the pruning.

Describe alternatives you've considered

  1. Using a dummy interface and rely on weak host mode (ES): This doesn't work, as the gratitious ARPs/ unsolicited neighbour adverts can't be send using a dummy interface. There's another issue with this approach, which I described in systemd-networkd should call IFF_UP on dummy interfaces #12051
  2. Filing a patch to keepalived to support sending out NA/GARP via another interface (which is currently considered by them, see VIPs with keepalived with systemd-networkd and ipv6 acassen/keepalived#1170, but might not work
  3. Migrating back to ifupdown
  4. Migrating to a distribution without systemd-networkd
  5. Migrating to BSD

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions