diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml
index 0af01e120..380bcd365 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml
@@ -31,6 +31,13 @@
HAProxy documentation for a full description.]]>
Choose a load balancing algorithm.
+
+ backend.random_draws
+
+ text
+
+ true
+
backend.proxyProtocol
diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
index bb080b736..97ccc299f 100644
--- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
+++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
@@ -763,8 +763,16 @@
Static Round Robin
Least Connections
URI Hash (only HTTP mode)
+ Random Algorithm
+
+ Y
+ 2
+ 2
+ 1000
+ Please specify a value between 2 and 1000.
+
N
diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
index b6401e74d..e503234d0 100644
--- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
+++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
@@ -1269,7 +1269,12 @@ backend {{backend.name}}
{# # Hence we can't automatically set the mode and thus need a #}
{# # (redundant) GUI option for this. #}
mode {{backend.mode}}
+{# # balancing algorithm #}
+{% if backend.algorithm|default("") == 'random' %}
+ balance {{backend.algorithm}}({{backend.random_draws}})
+{% else %}
balance {{backend.algorithm}}
+{% endif %}
{# # call macro to evaluate stickiness config #}
{{ StickTableConfig(backend,true) }}
# tuning options