Powered by Zoomin Software. For more details please contactZoomin

MarkLogic® Server on Kubernetes

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.

TitleResults for “How to create a CRG?”Also Available inAlert