HAProxy and keepalived setup - MK-DEV-M/docs-l GitHub Wiki

Components:

Hostname IP
lab-haprx-01 10.1.7.20/24
lab-haprx-02 10.1.7.21/24
lab-haprx-03 10.1.7.22/24

Config:

Update, install components

apt-get update
apt-get install -y haproxy keepalived
systemctl enable haproxy keepalived
sed -i 's/^ENABLED=.*/ENABLED=1/' /etc/default/haproxy #disable debians default haproxy config

Keepalived config

nano /etc/keepalived/keepalived.conf

    vrrp_instance VI_1 {
    state MASTER             # state BACKUP on other nodes
    interface eth0           
    virtual_router_id 51
    priority 100             # lower on the other nodes
    advert_int 1
    nopreempt                

    authentication {
        auth_type PASS
        auth_pass ChgMeNow    
    }

    virtual_ipaddress {
        10.1.7.10/24          
    }

    track_process {
        haproxy               # leave only if haproxy is running
    }
    }

systemctl restart keepalived

HAProxy config

nano /etc/haproxy/haproxy.cfg

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations (kept for completeness)
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # Mozilla “intermediate” TLS defaults ─ harmless for plain TCP passthrough
        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA>
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
        log     global
        mode    tcp
        timeout connect 10s
        timeout client  60s
        timeout server  60s

frontend k8s_api
        bind 10.1.7.10:6443
        default_backend k8s_masters

backend k8s_masters
        balance roundrobin
        option  tcp-check
        default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
        server cp01 10.1.5.10:6443 check
        server cp02 10.1.5.11:6443 check
        server cp03 10.1.5.12:6443 check