Nis*_*ngh 3 routing load-balancing haproxy
I have 3 servers which listen on following port ,
> 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
Run Code Online (Sandbox Code Playgroud)
I am using a HAProxy server to redirect the traffic to these backends, i am using the following config on haproxy which doesn't seem to workout.
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
Run Code Online (Sandbox Code Playgroud)
所以这个想法是让HAProxy监听80,然后重定向到监听指定端口的后端..请帮忙
几个问题:
frontends在端口 80 上有多个监听;我建议使用单个前端并使用 ACL 将流量定向到您的backends. 从HAProxy 文档:
可以有任意多的“use_backend”规则。所有这些规则都按照它们的声明顺序进行评估,第一个匹配的将分配后端。
您提供option httpchk,但不支持您的server线路上的支票;来自 HAProxy 文档(特别是 1.5.18,但与其他版本相当)
端口和间隔在服务器配置中指定。
我建议添加一个间隔(以毫秒为单位),例如
server custui01 10.21.4.234:80 check inter 2000
Run Code Online (Sandbox Code Playgroud)您正在每个后端指定mode http和option httpchk;这些可以在该defaults部分中组合,然后在必要时在后端覆盖。
hdr(host)用来检查 HTTP 请求的 URL,所以我会重写acl url_api path_beg /api为acl url_api hdr(host) -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
Run Code Online (Sandbox Code Playgroud)