Car*_*rio 8 proxy reverse-proxy load-balancing haproxy
我只在 2 个后端服务器前面设置了一个 HAProxy,有一个特定的配置:任何请求都应该转到服务器 A;但是,如果服务器 A 返回 5xx 错误代码,则所有请求都应转到备用服务器 B。当 A 返回“up”时,所有请求都应转到 A。
我正在尝试这种配置:
backend example_cluster
balance roundrobin
option httpclose
option forwardfor
option httpchk HEAD /ping.html HTTP/1.0\r\nHost:www.example.com
http-check disable-on-404
default-server error-limit 1 on-error mark-down
redirect scheme https if !{ ssl_fc }
server node1 1.2.3.4:80 check observe layer7
server node_back 5.6.7.8:443 backup ssl verify none
Run Code Online (Sandbox Code Playgroud)
但它不起作用有两个原因:
如果我删除“option httpchk”行,以及它下面的两行;我还删除了服务器 A 中的“观察层 7”;HAProxy 通过将所有请求路由到节点 A 来工作。但是,很明显,当服务器 A 返回 500 时,HAProxy 不会切换到 B。因此,我假设问题可能出在选项 httpchk 配置中。
顺便说一句,我已经找到了我的 haproxy 的 pre-nginx 配置,我认为你应该尝试一下:
frontend foo
bind 192.168.0.1:9080
option httpchk
default_backend bar-web
backend bar-web
mode http
balance roundrobin
server bar1 192.168.1.2:9080 check observe layer4 weight 50
server bar2 192.168.1.3:9080 check observe layer4 weight 50
Run Code Online (Sandbox Code Playgroud)