MarkLogic HAProxy Load Balancer configuration
- Last Updated: April 14, 2026
- 2 minute read
- MarkLogic Server
- Documentation
This section describes how to configure the HAProxy Load Balancer.
Configure the ODBC App Server
First, configure the ODBC App Server by providing these values in the values.yaml file for Helm Chart and sample.yaml for Operator:
## Ports and load balancer type configuration for HAproxy
## There are three types of backends supported:
## 1. HTTP: HTTP(Layer 7) proxy mode. This works for most of the App Servers that handle HTTP connections.
## 2. TCP: TCP(Layer 4) proxy mode. This works for the MarkLogic App Servers that handle TCP connections like ODBC.
ports:
- name: app-service
type: HTTP
port: 8000
targetPort: 8000
- name: admin
type: HTTP
port: 8001
targetPort: 8001
- name: manage
type: HTTP
port: 8002
targetPort: 8002
- name: odbc
type: TCP
port: 5432
Auto-generated HAProxy configuration file
After adding the values to the values.yaml file for Helm Chart and sample.yaml for Operator, this appears in the auto-generated HAProxy configuration file:
## ODBC
frontend ml-cluster-odbc
description "ml-cluster-odbc"
mode tcp
option tcplog
bind :5432
use_backend ml-cluster-odbc
backend ml-cluster-odbc
description "ml-cluster-manage"
mode tcp
balance leastconn
server ml-enode-mlenode-0 ml-enode-mlenode-0.ml-enode-mlenode-headless.ml.svc.cluster.local:5432 check resolvers dns init-addr none
server ml-enode-mlenode-1 ml-enode-mlenode-1.ml-enode-mlenode-headless.ml.svc.cluster.local:5432 check resolvers dns init-addr none
Code explanation
In the Auto-generated HAProxy configuration file:
-
mode tcp- This mode is used because Layer4 LB is only required for ODBC connections. -
option tcplog- This allows the log output to be enriched with data from the connection timers, the session status, the connection numbers, the frontend, backend, and server name. The source address and ports can also be included. -
balance leastconn- With this configuration, HAProxy selects the servers with the fewest active sessions.
Service
After the HAProxy configuration file is generated, this service is deployed for the HAProxy Load Balancer:
apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: ml-enode
meta.helm.sh/release-namespace: ml
labels:
app.kubernetes.io/instance: ml-enode
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ml-lb
app.kubernetes.io/version: "2.7"
helm.sh/chart: ml-lb-2.7
name: ml-enode-ml-lb
namespace: ml-lb
spec:
clusterIP: 10.100.14.59
clusterIPs:
- 10.100.14.59
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: https
port: 443
protocol: TCP
targetPort: https
- name: ml-admin
port: 8001
protocol: TCP
targetPort: ml-admin
- name: ml-manage
port: 8002
protocol: TCP
targetPort: ml-manage
- name: ml-odbc
port: 5432
protocol: TCP
targetPort: ml-odbc
- name: ml-query
port: 8000
protocol: TCP
targetPort: ml-query
- name: stat
port: 1024
protocol: TCP
targetPort: stat
selector:
app.kubernetes.io/instance: ml-enode
app.kubernetes.io/name: ml-lb
sessionAffinity: None
type: ClusterIP
Code explanation
In the Service code, this section is dedicated to ODBC:
- name: ml-odbc
port: 5432
protocol: TCP
targetPort: ml-odbc
Note:
The service is a standard ClusterIP service.