Implementing IPv6 on SCALE showed that after assigning a link global IPv6 address, the kernel did not autogenerate a link local address.
Without a link local address, things aren't going to work (keepalived being one of them).
I had to toggle this sysctl
net.ipv6.conf.interface_name_here.addr_gen_mode=1 and then back to 0 and the link local address was generated.
Need to make sure we're not removing the link-local addresses during interface configuration and such.