Create static configuration for the load balancer in OpenShift 3.11.

All operations are performed on the management node.

Define load balancer configuration in hosts file.

# LB
    openshift_loadbalancer_additional_frontends:
      - name: "apps-http"
        mode: "tcp"
        options:
          - "tcplog"
        binds:
          - "*:80"
        default_backend: "apps-http"
      - name: "apps-https"
        mode: "tcp"
        options:
          - "tcplog"
        binds:
          - "*:443"
        default_backend: "apps-https"
    openshift_loadbalancer_additional_backends:
      - name: "apps-http"
        balance: "source"
        mode: "tcp"
        servers:
          - name: "infra0"
            address: "192.0.2.11:80"
            opts: "check"
      - name: "apps-https"
        balance: "source"
        mode: "tcp"
        servers:
          - name: "infra0"
            address: "192.0.2.11:443"
            opts: "check"

Define load balancer in hosts file.

lb:
  hosts:
    openshift-example-lb-1.example.org:
masters:
  hosts:
    openshift-example-master-1.example.org:
etcd:
  hosts:
    openshift-example-master-1.example.org:
nodes:
  hosts:
    openshift-example-master-1.example.org:
      openshift_node_group_name: node-config-master
    openshift-example-infra-1.example.org:
      openshift_node_group_name: node-config-infra
    openshift-example-node-[1:2].example.org:
      openshift_node_group_name: node-config-compute

Run playbook to update balancer configuration.

$ ansible-playbook -i hosts playbooks/openshift-loadbalancer/config.yml
[...]
PLAY RECAP *************************************************************************************************************************************************************************************************************************************************************************
localhost                              : ok=12   changed=0    unreachable=0    failed=0    skipped=4    rescued=0    ignored=0
openshift-example-infra-1.example.org  : ok=0    changed=0    unreachable=0    failed=0    skipped=6    rescued=0    ignored=0
openshift-example-lb-1.example.org     : ok=29   changed=4    unreachable=0    failed=0    skipped=30   rescued=0    ignored=0
openshift-example-master-1.example.org : ok=40   changed=0    unreachable=0    failed=0    skipped=36   rescued=0    ignored=0
openshift-example-node-1.example.org   : ok=0    changed=0    unreachable=0    failed=0    skipped=6    rescued=0    ignored=0
openshift-example-node-2.example.org   : ok=0    changed=0    unreachable=0    failed=0    skipped=6    rescued=0    ignored=0
INSTALLER STATUS *******************************************************************************************************************************************************************************************************************************************************************
Initialization         : Complete (0:00:11)
Load Balancer Install  : Complete (0:00:09)
Wednesday 15 April 2020  20:45:37 +0200 (0:00:00.035)       0:00:20.437 *******
===============================================================================
Gathering Facts ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1.76s
tuned : Ensure files are populated from templates --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1.62s
tuned : Restart tuned service ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1.31s
openshift_loadbalancer : Configure haproxy ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.87s
openshift_loadbalancer : Install haproxy ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 0.75s
openshift_loadbalancer : Enable and start haproxy --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.75s
get openshift_current_version ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.63s
openshift_loadbalancer : Add iptables allow rules --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.60s
Gather Cluster facts -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.60s
tuned : Ensure directory structure exists ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.60s
openshift_loadbalancer : Configure systemd service directory for haproxy ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.42s
tuned : Check for tuned package --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.42s
openshift_control_plane : slurp --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.41s
Detecting Operating System from ostree_booted ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.40s
openshift_loadbalancer : Configure the nofile limits for haproxy ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 0.39s
Initialize openshift.node.sdn_mtu ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.38s
openshift_loadbalancer : restart haproxy ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 0.34s
tuned : Make tuned use the recommended tuned profile on restart ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.33s
Fetch ca.crt from cluster if exists ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.19s
openshift_control_plane : stat ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.18s

Configuration generated on the load balancer.

# Global settings
#---------------------------------------------------------------------
global
    maxconn     20000
    log         /dev/log local0 info
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
#    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          300s
    timeout server          300s
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 20000
listen stats
    bind :9000
    mode http
    stats enable
    stats uri /
frontend  atomic-openshift-api
    bind *:8443
    default_backend atomic-openshift-api
    mode tcp
    option tcplog
frontend  apps-http
    bind *:80
    default_backend apps-http
    mode tcp
    option tcplog
frontend  apps-https
    bind *:443
    default_backend apps-https
    mode tcp
    option tcplog
backend atomic-openshift-api
    balance source
    mode tcp
    server      master0 192.0.2.10:8443 check
backend apps-http
    balance source
    mode tcp
    server      infra0 192.0.2.11:80 check
backend apps-https
    balance source
    mode tcp
    server      infra0 192.0.2.11:443 check