diff --git a/ansible/roles/haproxy/templates/keepalived.conf.j2 b/ansible/roles/haproxy/templates/keepalived.conf.j2
index e0467fa788ced1806c7662cbda1b569906eb2304..b6abb82e237582a82058ebfce280737ccfda5271 100644
--- a/ansible/roles/haproxy/templates/keepalived.conf.j2
+++ b/ansible/roles/haproxy/templates/keepalived.conf.j2
@@ -13,28 +13,16 @@ vrrp_instance kolla_internal_vip {
     priority {{ groups['haproxy'].index(inventory_hostname) + 1 }}
     advert_int 1
     virtual_ipaddress {
-        {{ kolla_internal_vip_address }}
-    }
-    authentication {
-        auth_type PASS
-        auth_pass {{ keepalived_password }}
-    }
-    track_script {
-        check_alive
-    }
-}
-
+        {{ kolla_internal_vip_address }} dev {{  api_interface }}
 {% if haproxy_enable_external_vip | bool %}
-vrrp_instance kolla_external_vip {
-    state BACKUP
-    nopreempt
-    interface {{ kolla_external_vip_interface }}
-    virtual_router_id 52
-    priority {{ groups['haproxy'].index(inventory_hostname) + 1 }}
-    advert_int 1
-    virtual_ipaddress {
-        {{ kolla_external_vip_address }}
+        {{ kolla_external_vip_address }} dev {{ kolla_external_vip_interface }}
+{% endif %}
+    }
+{% if haproxy_enable_external_vip | bool and api_interface != kolla_external_vip_interface %}
+    track_interface {
+        {{ kolla_external_vip_interface }}
     }
+{% endif %}
     authentication {
         auth_type PASS
         auth_pass {{ keepalived_password }}
@@ -43,4 +31,3 @@ vrrp_instance kolla_external_vip {
         check_alive
     }
 }
-{% endif %}