,haproxy能够代替nginx吗?

用户投稿 25 0

关于“haproxy_php”的问题,小编就整理了【3】个相关介绍“haproxy_php”的解答:

haproxy能够代替nginx吗?

基本可以替代。

TCP代理:两个都有。

HTTP代理:两个都有。

这两个的差别主要在于:Haproxy会对后端服务器一直做健康检测,NG没有。

后端机器故障发生在请求还没到来的时候:

haproxy:会将这台故障机切掉,但如果后端机器故障发生在请求到达期间,那么前端访问会有异常。也就是说HAProxy会把请求转到后端的这台故障机上,并经过多次探测后才会把这台机器切掉,并把请求发给其他正常的后端机,这势必会造成一小段时间内前端访问失败。

Nginx:在请求过来的时候,分发还是会正常进行分发,只是请求不到数据的时候,它会再转向好的后端机器进行请求,直到请求正常为止。也就是说Nginx请求转到后端一台不成功的机器的话,还会再转向另外一台服务器,这对前端访问没有什么影响。

所以在高并发的情况下,Haproxy会比nginx略差。

haproxy平滑重启是什么意思?

主要是为了解决haproxy出现单点故障。打个比方说,haproxy可以代理三台服务器proxyA、proxyB、proxyC,其中任何一台或二台出现故障,服务依旧能够运行。但如果haproxy这台服务器出现故障,那就不能接续提供服务了。此是keepalived采用vip,主/备haproxy,很好的解决了这个问题。

haproxy如何自动剔除故障节点?

Haproxy可以通过以下两种方式自动剔除故障节点:

1. 健康检查(Health Checking):Haproxy可以定期发送请求到后端服务器进行健康检查,如果检查失败达到一定次数或者超过一定时间,Haproxy会将该节点标记为不可用,并将流量从故障节点转发到其他可用节点。

对于HTTP服务,可以使用`httpchk`参数来定义健康检查的路径和响应码,例如:

```

option httpchk GET /healthcheck HTTP/1.1\r\nHost:\ example.com

http-check expect status 200

```

对于TCP服务,可以使用`tcp-check`参数来定义健康检查的内容,例如:

```

option tcp-check

tcp-check send GET\ /healthcheck\r\n

tcp-check expect string 200\ OK

```

2. 超时时间(Timeout):Haproxy可以设置超时时间,如果一个节点在指定的时间内没有响应,Haproxy会将其标记为不可用,并将流量从故障节点转发到其他可用节点。可以通过`timeout server`和`timeout connect`参数来设置这些超时时间,例如:

```

timeout server 10s

timeout connect 5s

```

这些机制可以结合起来使用,确保Haproxy能够自动剔除故障节点,并将流量转发到可用节点,提高系统的可用性和可靠性。

到此,以上就是小编对于“haproxy_php”的问题就介绍到这了,希望介绍关于“haproxy_php”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!