目录
一、LVS转发模式
二、nginx负载模式
三、haproxy
四、总结
首页 后端开发 php教程 lvs、nginx、haproxy中转模式总结

lvs、nginx、haproxy中转模式总结

Aug 08, 2016 am 09:21 AM
hash nbsp nginx server

lvs、nginx、haproxy是最常见的三种高可用性负载均衡软件。由于lvs和haproxy在目前的公司的现网环境中并未用到,虽然之前简单的了解和搭建过,现在也已经忘的差不多了,而及于nginx的负载均衡虽然公司在用,不过一配置文件都是ctrl+c、ctrl+v,对转发的理论性的东西也都忘的差不多了。隐约脑子里现在只有upstream、dr 、ip_hash这几个词了。现对三者的转发方式做下总结。

一、LVS转发模式

LVS是章文嵩博士写的一个工作于四层的高可能性软件。不像后两者支持七层转发,不过也正因为其简单,所以其是最稳定的。其共有三种IP负载均衡技术:VS/NAT(Virtual Server via Network Address Translation)、VS/TUN(Virtual Server via IP Tunneling)和VS/DR(Direct Routing),三者之间具体的比较见下表

lvs、nginx、haproxy中转模式总结

二、nginx负载模式

nginx有五种负载算法模式,分别是:轮询、weight(权重)、ip_hash、fair、url_hash 。现逐一说明:

  1. 轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  2. weight :指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。配置为:
    1. upstream bakend {
    2. server 192.168.0.14 weight=10;
    3. server 192.168.0.15 weight=10;
    4. }
  3. ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。配置为:
    1. upstream bakend {
    2. ip_hash;
    3. server 192.168.0.14:88;
    4. server 192.168.0.15:80;
    5. }
  4. fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    1. upstream backend {
    2. server server1;
    3. server server2;
    4. fair;
    5. }
  5. url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。配置如:
    1. upstream backend {
    2. server squid1:3128;
    3. server squid2:3128;
    4. hash $request_uri;
    5. hash_method crc32;
    6. }

注:第五种模式下,需要注意在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 。

server后面常接的参数有如下几个:

  • down 表示单前的server暂时不参与负载 
  • weight 默认为1.weight越大,负载的权重就越大。 
  • max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 
  • fail_timeout:max_fails次失败后,暂停的时间。 
  • backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

三、haproxy

haproxy是三者之间负载算法最多的,有八种,所以其应用场景也是最多,配置也是最灵活的,具体8种算法为:

①roundrobin,表示简单的轮询,这个是负载均衡基本都具备的; 

②static-rr,表示根据权重,和nginx的weight算法类似; 

③leastconn,表示最少连接者先处理,有点类似于nginx的fair,不过fair是根据响应时间; 

④source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注; 

⑤ri,表示根据请求的URI,类似于nginx的url_hash; 

⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name; 

⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求; 

⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

四、总结

具体现网应用可以根据据体的实际情况选择最好的负载方式。三者中,lvs稳定性最好,可配置性最少;nginx针对域名、目录结构进行正则匹配是最强的,同时其对网络依赖比较小,不过性能上和lvs和haproxy相比稍差一点点;haproxy支持虚拟主机,尤其在session保持方面做的最好,其有三种算法可以实现session共享———— ip识别(source)、cookie识别、session识别三种,除此之外在对mysql做HA方案时也经常会用到该软件。

以上就介绍了lvs、nginx、haproxy中转模式总结,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

WordPress站点文件访问受限:为什么我的.txt文件无法通过域名访问? WordPress站点文件访问受限:为什么我的.txt文件无法通过域名访问? Apr 01, 2025 pm 03:00 PM

Wordpress站点文件访问受限:排查.txt文件无法访问的原因最近有用户在配置小程序业务域名时,遇到一个问题:�...

如何在同一台服务器上通过Nginx配置让PHP5.6和PHP7共存? 如何在同一台服务器上通过Nginx配置让PHP5.6和PHP7共存? Apr 01, 2025 pm 03:15 PM

在同一系统中同时运行多个PHP版本是一个常见的需求,特别是当不同项目依赖于不同版本的PHP时。如何在同一台...

h5项目怎么运行 h5项目怎么运行 Apr 06, 2025 pm 12:21 PM

运行 H5 项目需要以下步骤:安装 Web 服务器、Node.js、开发工具等必要工具。搭建开发环境,创建项目文件夹、初始化项目、编写代码。启动开发服务器,使用命令行运行命令。在浏览器中预览项目,输入开发服务器 URL。发布项目,优化代码、部署项目、设置 Web 服务器配置。

如何在LAMP架构下高效整合Node.js或Python服务? 如何在LAMP架构下高效整合Node.js或Python服务? Apr 01, 2025 pm 02:48 PM

在LAMP架构下整合Node.js或Python服务许多网站开发者都面临这样的问题:已有的LAMP(Linux Apache MySQL PHP)架构网站需要...

Gitee Pages静态网站部署失败:单个文件404错误如何排查和解决? Gitee Pages静态网站部署失败:单个文件404错误如何排查和解决? Apr 04, 2025 pm 11:54 PM

GiteePages静态网站部署失败:404错误排查与解决在使用Gitee...

如何在PC端和移动端共享同一个页面并处理缓存问题? 如何在PC端和移动端共享同一个页面并处理缓存问题? Apr 01, 2025 pm 01:57 PM

如何在PC端和移动端共享同一个页面并处理缓存问题?在使用宝塔后台搭建的nginx php mysql环境下,如何让PC端和�...

使用Selenium模拟登录后重定向报404错误的原因是什么?如何解决? 使用Selenium模拟登录后重定向报404错误的原因是什么?如何解决? Apr 01, 2025 pm 10:54 PM

Selenium模拟登录后重定向报404错误的解决方案在使用Selenium进行模拟登录时,我们常常会遇到一些棘手的问题。�...

Dockerfile中如何高效启动多个服务? Dockerfile中如何高效启动多个服务? Apr 01, 2025 pm 02:15 PM

关于在Dockerfile中高效使用CMD命令许多Docker新手在使用CMD...

See all articles