Routing 如何重定向到HAProxy后面的多个服务器,这些服务器具有不同的起始路径
我有3台服务器在以下端口上侦听Routing 如何重定向到HAProxy后面的多个服务器,这些服务器具有不同的起始路径,routing,load-balancing,haproxy,Routing,Load Balancing,Haproxy,我有3台服务器在以下端口上侦听 > 10.21.5.39:80 --> api.something.com > 10.21.4.234:80 --> *.something.com > 10.21.5.73:80 --> coolapi.something.com > 10.21.5.73:3002 --> school.something.com 我正在使用HAProxy服务器将流量重定向到这些后端,我
> 10.21.5.39:80 --> api.something.com
> 10.21.4.234:80 --> *.something.com
> 10.21.5.73:80 --> coolapi.something.com
> 10.21.5.73:3002 --> school.something.com
我正在使用HAProxy服务器将流量重定向到这些后端,我正在HAProxy上使用以下配置,这似乎不起作用
frontend api
bind *:80
acl url_api path_beg /api
use_backend api-backend if url_api
frontend custui
bind *:80
acl url_custui path_beg *
use_backend custui-backend if url_custui
frontend backoffice
bind *:80
acl url_backoffice path_beg /backoffice
use_backend backoff-backend if url_backoffice
frontend partnerui
bind *:80
acl url_partnerui path_beg /partner
use_backend partner-backend if url_partnerui
backend api-backend
mode http
option httpchk
server api01 10.21.5.39:80
backend custui-backend
mode http
option httpchk
server custui01 10.21.4.234:80
backend backoff-backend
mode http
option httpchk
server backoff01 10.21.5.73:80
backend partner-backend
mode http
option httpchk
server backoff01 10.21.5.73:3002
因此,我们的想法是让HAProxy在80上侦听,然后重定向到在指定端口上侦听的后端。。请帮助解决以下几个问题:
- 您有多个
全部监听端口80;我建议使用一个前端并使用ACL将流量定向到前端
后端。发件人: 可能有许多“使用后端”规则。所有这些规则都是无效的 按照声明顺序求值,第一个匹配的将 分配后端
- 您提供了
,但不支持对选项httpchk
行进行检查;来自HAProxy文档(具体为1.5.18,但与其他版本类似) 端口和间隔在服务器配置中指定 我建议添加一个间隔(以毫秒为单位),例如服务器
- 在每个后端指定
和模式http
;可以在选项httpchk
部分中组合这些属性,然后在必要时在后端重写它们defaults
- 我喜欢使用
检查HTTP请求的URL,因此我会将hdr(主机)
重写为acl URL\u api path\u beg/api
,但这取决于个人偏好acl URL\u api hdr(主机)-m beg api.
defaults
mode http
option httpchk
frontend something.com
bind *:80
acl url_api path_beg /api
use_backend api-backend if url_api
acl url_backoffice path_beg /backoffice
use_backend backoff-backend if url_backoffice
acl url_partnerui path_beg /partner
use_backend partner-backend if url_partnerui
# Catches anything not covered by use_backend above
default_backend custui-backend
backend api-backend
server api01 10.21.5.39:80 check inter 2000
backend backoff-backend
server backoff01 10.21.5.73:80 check inter 2000
backend partner-backend
server backoff01 10.21.5.73:3002 check inter 2000
backend custui-backend
server custui01 10.21.4.234:80 check inter 2000
您是否有一个具有多个前端的haproxy示例,但每个前端都有不同的端口或正在侦听自己的端口?@ArtanisZeratul您可以使用我发布的示例代码,但复制
前端
节,并在绑定
行中更改侦听端口。如果您希望另一个前端监听(例如)HTTPS流量(使用端口443),则可以这样做。
defaults
mode http
option httpchk
frontend something.com
bind *:80
acl url_api path_beg /api
use_backend api-backend if url_api
acl url_backoffice path_beg /backoffice
use_backend backoff-backend if url_backoffice
acl url_partnerui path_beg /partner
use_backend partner-backend if url_partnerui
# Catches anything not covered by use_backend above
default_backend custui-backend
backend api-backend
server api01 10.21.5.39:80 check inter 2000
backend backoff-backend
server backoff01 10.21.5.73:80 check inter 2000
backend partner-backend
server backoff01 10.21.5.73:3002 check inter 2000
backend custui-backend
server custui01 10.21.4.234:80 check inter 2000