diff --git a/ansible/roles/horizon/defaults/main.yml b/ansible/roles/horizon/defaults/main.yml
index 77f76ecd1aabe660ffa7a5d4f6c0a84d148c706a..8ee5f1fac391bf076d08e672561492f686993e3b 100644
--- a/ansible/roles/horizon/defaults/main.yml
+++ b/ansible/roles/horizon/defaults/main.yml
@@ -42,7 +42,7 @@ horizon_services:
         frontend_http_extra:
           - "use_backend acme_client_back if { path_reg ^/.well-known/acme-challenge/.+ }"
         backend_http_extra:
-          - "balance source"
+          - "balance {{ 'roundrobin' if enable_memcached | bool or horizon_backend_database | bool else 'source' }}"
         tls_backend: "{{ horizon_enable_tls_backend }}"
       horizon_redirect:
         enabled: "{{ enable_horizon | bool and kolla_enable_tls_internal | bool }}"
@@ -59,7 +59,7 @@ horizon_services:
         frontend_http_extra:
           - "use_backend acme_client_back if { path_reg ^/.well-known/acme-challenge/.+ }"
         backend_http_extra:
-          - "balance source"
+          - "balance {{ 'roundrobin' if enable_memcached | bool or horizon_backend_database | bool else 'source' }}"
         tls_backend: "{{ horizon_enable_tls_backend }}"
       horizon_external_redirect:
         enabled: "{{ enable_horizon | bool and kolla_enable_tls_external | bool }}"
diff --git a/releasenotes/notes/bug-1990523-d29021229e3102f2.yaml b/releasenotes/notes/bug-1990523-d29021229e3102f2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..efe6badb61e6cb6ff76f003bf59a5f4e32b261f2
--- /dev/null
+++ b/releasenotes/notes/bug-1990523-d29021229e3102f2.yaml
@@ -0,0 +1,6 @@
+---
+other:
+  - |
+    sets balancing algorithm to round-robin for horizon
+    if memcached is enabled
+    `LP#1990523 <https://launchpad.net/bugs/1990523>`__