HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。文章源自新逸网络-https://www.xinac.net/9223.html
文章源自新逸网络-https://www.xinac.net/9223.html
本文的使用场景和架构如下:文章源自新逸网络-https://www.xinac.net/9223.html
公司为数百的客户提供服务,使用人数数百至数万不等。使用haproxy作前端的负载服务器,提供TCP层的转发,http层的流量则全部转发到nginx作代理分发。文章源自新逸网络-https://www.xinac.net/9223.html
于是,在监听80端口后,有以下配置:文章源自新逸网络-https://www.xinac.net/9223.html
...... # 其它配置略 default_back nginx_proxy;
nginx服务器只有1台,使用了81端口。每隔一段时间(1个小时左右),haproxy就异常退出,重复多次。文章源自新逸网络-https://www.xinac.net/9223.html
然后分析原因,可能是某个后台网站异常不能访问,导致haproxy在健康检查后将nginx服务器标记为不可用,而default_back
的不可用导致了haproxy无法正常工作。文章源自新逸网络-https://www.xinac.net/9223.html
解决方案:文章源自新逸网络-https://www.xinac.net/9223.html
1、后端使用多台nginx服务器(效果更好,但配置文件可能不好管理)文章源自新逸网络-https://www.xinac.net/9223.html
2、一台nginx服务器使用多个端口号(伪负载)文章源自新逸网络-https://www.xinac.net/9223.html
3、haproxy里配置多个server,只启用一台服务器的健康监测(如果有多台服务器可以都开启,只有一台的话不要开启)文章源自新逸网络-https://www.xinac.net/9223.html
最后总结一下,haproxy作代理服务器时,转发效率非常高,比nginx要好很多,尤其是访问量大的网站。nginx适合多台服务器均衡负载和提供web服务。文章源自新逸网络-https://www.xinac.net/9223.html 文章源自新逸网络-https://www.xinac.net/9223.html
评论