There is a fix upstream for this issue in keepalived 2.0. I'm looking
into what would be required to backport the fix. In the meantime, there
is a workaround that I hope will be sufficient for your needs, as
discovered by https://chr4.org/blog/2019/01/21/make-keepalived-play-
nicely-with-netplan-slash-systemd-network/

You'll need to create a dummy interface, and then assign the virtual IP
to that. Here's an example using a VM, which will generate a virtual ip
of x.y.z.3. You can set your own last quad by changing the last part of
the sed command '\1.3/g' to .4 or .215 or whatever:

multipass launch daily:bionic --name tester && multipass exec tester --
sudo su

Inside the VM:

apt update && apt dist-upgrade -y && apt install -y keepalived &&
echo "vrrp_instance VI_1 {
    virtual_router_id 33
    state MASTER
    interface ens3

    virtual_ipaddress {
        $(ip addr | grep 'inet ' | grep global | head -1 | sed 's/.*inet 
\([0-9]*\.[0-9]*\.[0-9]*\)\..*/\1.3/g') dev keepalived0
    }
}" >/etc/keepalived/keepalived.conf &&
echo "[NetDev]
Name=keepalived0
Kind=dummy" >/lib/systemd/network/90-keepalived.netdev &&
service systemd-networkd restart &&
service keepalived start

# There will be a new IP address x.y.z.3/32 added to keepalived0
ip addr

# Restart networkd. The IP address doesn't get destroyed like it did in the bug 
report
systemctl restart systemd-networkd
ip addr

# Restart keepalived. The IP address gets rebuild the same as before
systemctl restart keepalived
ip addr

-- 
You received this bug notification because you are a member of Ubuntu
High Availability Team, which is subscribed to keepalived in Ubuntu.
https://bugs.launchpad.net/bugs/1810583

Title:
  Daily cron restarts network on unattended updates but keepalived
  .service is not restarted as a dependency

Status in keepalived package in Ubuntu:
  Triaged
Status in networkd-dispatcher package in Ubuntu:
  Invalid

Bug description:
  [Impact]

  If systemd-networkd is restarted, any VRRP from keepalived are not
  restored.

  [Test Case]

  multipass launch daily:bionic --name tester && multipass exec tester
  -- sudo su

  apt update && apt dist-upgrade -y && apt install -y keepalived &&
  echo "vrrp_instance VI_1 {
      virtual_router_id 33
      state MASTER
      interface ens3

      virtual_ipaddress {
          $(ip addr | grep 'inet ' | grep global | head -1 | sed 's/.*inet 
\([0-9]*\.[0-9]*\.[0-9]*\)\..*/\1.3/g')
      }
  }" >/etc/keepalived/keepalived.conf &&
  service keepalived start &&

  # There will be a new IP address x.x.x.3/32 added to ens3
  ip addr

  # Restart networkd. The IP address won't come back
  systemctl restart systemd-networkd
  ip addr

  # Restart keepalived. The IP address will come back
  systemctl restart keepalived
  ip addr

  [Regression Potential]

  TODO

  [Original Description]

  Description: Ubuntu 18.04.1 LTS
  Release: 18.04
  ii keepalived 1:1.3.9-1ubuntu0.18.04.1 amd64 Failover and monitoring daemon 
for LVS clusters

  (From unanswered
  https://answers.launchpad.net/ubuntu/+source/keepalived/+question/676267)

  Since two weeks we lost our keepalived VRRP address on on our of
  systems, closer inspection reveals that this was due to the daily
  cronjob.Apparently something triggered a udev reload (and last week
  the same seemed to happen) which obviously triggers a network restart.

  Are we right in assuming the below patch is the correct way (and
  shouldn't this be in the default install of the systemd service of
  keepalived).

  /etc/systemd/system/multi-user.target.wants/keepalived.service:
  --- keepalived.service.orig 2018-11-20 09:17:06.973924706 +0100
  +++ keepalived.service 2018-11-20 09:05:55.984773226 +0100
  @@ -4,6 +4,7 @@
   Wants=network-online.target
   # Only start if there is a configuration file
   ConditionFileNotEmpty=/etc/keepalived/keepalived.conf
  +PartOf=systemd-networkd.service

  Accompanying syslog:
  Nov 20 06:34:33 ourmachine systemd[1]: Starting Daily apt upgrade and clean 
activities...
  Nov 20 06:34:42 ourmachine systemd[1]: Reloading.
  Nov 20 06:34:44 ourmachine systemd[1]: message repeated 2 times: [ Reloading.]
  Nov 20 06:34:44 ourmachine systemd[1]: Starting Daily apt download 
activities...
  Nov 20 06:34:44 ourmachine systemd[1]: Stopping udev Kernel Device Manager...
  Nov 20 06:34:44 ourmachine systemd[1]: Stopped udev Kernel Device Manager.
  Nov 20 06:34:44 ourmachine systemd[1]: Starting udev Kernel Device Manager...
  Nov 20 06:34:44 ourmachine systemd[1]: Started udev Kernel Device Manager.
  Nov 20 06:34:45 ourmachine systemd[1]: Reloading.
  Nov 20 06:34:45 ourmachine systemd[1]: Reloading.
  Nov 20 06:35:13 ourmachine systemd[1]: Reexecuting.
  Nov 20 06:35:13 ourmachine systemd[1]: Stopped Wait for Network to be 
Configured.
  Nov 20 06:35:13 ourmachine systemd[1]: Stopping Wait for Network to be 
Configured...
  Nov 20 06:35:13 ourmachine systemd[1]: Stopping Network Service..

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/keepalived/+bug/1810583/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~ubuntu-ha
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~ubuntu-ha
More help   : https://help.launchpad.net/ListHelp

Reply via email to