diff --git a/roles/keepalived/tasks/main.yml b/roles/keepalived/tasks/main.yml
index 87362375eeccd0cb840181fc3e6ce4a426ae0298..a7d77af91c49d0231e7e973833e77a030e6308e1 100644
--- a/roles/keepalived/tasks/main.yml
+++ b/roles/keepalived/tasks/main.yml
@@ -11,7 +11,7 @@
 - name: Use buster-backports to install keepalived
   template:
     src: apt/preferences.d/keepalived.j2
-    dest: apt/preferences.d/keepalived
+    dest: /etc/apt/preferences.d/keepalived
     owner: root
     group: root
     mode: 0644
@@ -35,8 +35,25 @@
     mode: 0644
   notify: Reload keepalived.service
 
+- name: Create keepalived service directory for systemd
+  file:
+    path: /etc/systemd/system/keepalived.service.d
+    owner: root
+    group: root
+    mode: 0755
+    state: directory
+
+- name: Override keepalived StopPost to stop some services after keepalived switch
+  template:
+    src: systemd/system/keepalived.service.d/override.conf.j2
+    dest: /etc/systemd/system/keepalived.service.d/override.conf
+    owner: root
+    group: root
+    mode: 0644
+
 - name: Start and enable keepalived
   service:
     name: keepalived
+    daemon-reload: true
     state: started
     enabled: yes
diff --git a/roles/keepalived/templates/systemd/system/keepalived.service.d/override.conf.j2 b/roles/keepalived/templates/systemd/system/keepalived.service.d/override.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..9fa1e5df6e3de1dbef2f5484c6bd691811fa4067
--- /dev/null
+++ b/roles/keepalived/templates/systemd/system/keepalived.service.d/override.conf.j2
@@ -0,0 +1,4 @@
+{{ ansible_header | comment }}
+
+[Service]
+ExecStopPost=/bin/sh -c "{% for instance in keepalived.instances %}/var/local/services/keepalived/keepalived.py INSTANCE {{ instance.name }} STOP {{ instance.priority }}; {% endfor %}"