Haproxy负载多个落地节点

通过haproxy负载多个落地节点,可实现单个节点宕机后,由另外一个落地节点接替流量

一、落地节点vless + reality

(自备,所有节点使用同样的UUID,公钥私钥, SNI,shortID,基本做到一致即可)

二、入口节点(部署Haproxy进行负载)

1、haproxy.cfg配置文件

defaults
    mode                    tcp   #设置HAProxy默认的工作模式,有tcp,http,health三种
    log                     global
    option                  tcplog
    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          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000 #最大连接数

frontend    hk-out
    bind        0.0.0.0:13307
    mode        tcp
    log         global
    default_backend vless-hk

backend     vless-hk
    balance roundrobin
    server hk-vps1 46.xxx.xxx.xx:22990 check inter 5s rise 2 fall 3 weight 2
    server hk-vps2 45.xxx.xxx.xx:44984 backup check  inter 5s rise 2 fall 3 weight 1
    server hk-vps3 46.xxx.xxx.xx:19389 check  inter 5s rise 2 fall 3 weight 2

listen stats
    mode    http
    bind    0.0.0.0:1080
    stats   enable
    stats   hide-version
    stats uri /stats
    stats realm Haproxy\ Statistics
    stats auth admin:adminkfc123.
    stats admin if TRUE

2、docker部署haproxy

# 此处映射端口与配置文件保持一致
mkdir -p /opt/haproxy
docker run -d  -p 1080:1080 -p 13307:13307 -d --name haproxy-master -v /opt/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg --privileged=true haproxy:lts-bookworm

3、haproxy stats

image-20250530100950219

三、clash配置

- {name: 🇭🇰 HK-XX, server: 入口IP, port: Haproxy负载端口, reality-opts: {public-key: Fca3v8KL3IXWhoQSXXXXXXXXXXXXXXX, short-id: 2a142312312}, client-fingerprint: chrome, type: vless, uuid: dc51593c-8c51-232b-1232-2c91824fabd7, tls: true, tfo: false, servername: itunes.com, flow: xtls-rprx-vision, skip-cert-verify: true, udp: true}