首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以how作为负载均衡器防止502状态码作为响应

以how作为负载均衡器防止502状态码作为响应
EN

Stack Overflow用户
提问于 2018-05-29 17:51:30
回答 1查看 3.1K关注 0票数 1

我有三个服务器:

代码语言:javascript
复制
server (A)= a nginx(port 80) as reverse proxy to kestler (5000 port)
server (B)= a nginx(port 80) as reverse proxy to kestler (5000 port)
server (C)= a HAProxy as load balancer for port 80 of server (A) and (B)
and server A & B are quite similar.

每件事情都运行得很好,haproxy将请求转发给服务器(A)和(B),但是如果其中一个服务器(例如A)中的kestrel被杀死,nginx会响应502个错误的网关错误,haproxy没有检测到这个问题,并且仍然将请求重定向到它,这是错误的!此时它必须将请求重定向到服务器(B)。

代码语言:javascript
复制
global
    log 127.0.0.1 local2 info
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode http
    option httplog
    option dontlognull
    option redispatch
    retries 3
    timeout connect 5s
    timeout client 50s
    timeout server 50s
    stats enable
    stats hide-version
    stats auth admin:admin
    stats refresh 10s
    stats uri /stat?stats

frontend http_front
    bind *:80
    mode http
    option httpclose
    option forwardfor
    reqadd X-Forwarded-Proto:\ http
    default_backend http_back

backend http_back
    balance roundrobin
    mode http
    cookie SERVERID insert indirect nocache
    server ServerA 192.168.1.2:80 check cookie ServerA
    server ServerB 192.168.1.3:80 check cookie ServerB

我怎样才能解决这个问题?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-31 08:00:19

您只检查nginx是否正在运行,而不是应用程序是否健康到可以使用。

backend中,添加option httpchk

代码语言:javascript
复制
option httpchk GET /some/path HTTP/1.1\r\nHost:\ example.com

some path替换为一个路径,该路径将证明如果应用程序返回200 OK (或任何2xx或3xx响应)应用程序在该服务器上是否可用,并将example.com替换为应用程序所期望的HTTP Host报头。

option httpchk 默认情况下,服务器健康检查只包含试图建立TCP连接。当指定option httpchk时,一旦建立了TCP连接,就会发送一个完整的HTTP请求,响应2xx和3xx被认为是有效的,而所有其他响应都表示服务器故障,包括没有任何响应。

如果应用程序不健康,这会将服务器标记为不健康,因此HAProxy将停止向其发送流量。您将希望在每个服务器entey上使用interdowninterfastinter选项为每个服务器配置一个检查间隔,以指定HAProxy应该多久执行一次检查。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50590174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档