在HAProxy配置中动态创建后端部分

时间:2019-02-15 09:57:01

标签: proxy reverse-proxy haproxy

我有一个用例,我需要使用HAProxy作为代理而不是负载平衡器。因此,就我而言,我需要启动代理时需要在配置中更新许多后端部分。

但是有一种方法可以动态创建新的后端部分吗?

global

log stdout format raw daemon
stats socket ipv4@127.0.0.1:9999 level admin
stats socket /var/run/hapee-lb.sock mode 666 level admin
stats timeout 2m

defaults

log global
timeout client 50s
timeout client-fin 50s
timeout connect 5s
timeout server 10s
timeout tunnel 50s

frontend tcp-0_0_0_0-443

bind 135.27.110.163:443
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }    
use_backend %[req.ssl_sni,regsub(.com,.com443,g),lower,map_dom(/usr/local/etc/sample.map,bk_default)]
default_backend example_com_be

frontend tcp-0_0_0_0-5061

bind 135.27.110.163:5061
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
use_backend %[req.ssl_sni,regsub(.com,.com5061,g),lower,map_dom(/usr/local/etc/sample.map,bk_default)]   
default_backend absanity_5061

backend example_com_be

mode tcp
server name1 x.x.x.x:443

backend absanity_5061

mode tcp
server name1 y.y.y.y:5061

AM使用运行时API(使用Socat来更新地图)。但是,假设我要在config中插入一个新的后端部分,其中包含新的服务器详细信息。我们如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我认为您无法在运行时使用套接字API创建新的后端。本文概述了您可以在运行时修改的内容:https://www.haproxy.com/blog/dynamic-configuration-haproxy-runtime-api/

但是,您可以通过使用新的后端创建新的配置并重新加载HAProxy,而无需使用套接字API来添加新的后端。本文很好地概述了如何在不丢失连接的情况下重新加载HAProxy: https://www.haproxy.com/blog/truly-seamless-reloads-with-haproxy-no-more-hacks/