负载均衡架构方案思考(haproxy、nginx、LVS、array、F5)

一.前言

多年运维工作中,接触过各种各样的负载均衡架构方案,也涉及到很多不同的负载均衡方案,主要分为硬件和软件。至于如何选型,实际与业务量的大小、业务需求、预算、稳定性要求级别有密切关系。好记性不如烂笔头,本文结合自己的一些实际接触过的经验和一些可查资料简单整理一下,备查。

二.负载均衡方案清单

常见的一些负载均衡方案有如下(有一些没有接触过,不过也大概了解其是怎么回事):

  • haproxy+keepalived–>nginx(反向代理)–>app server–>DB
  • F5/array/LVS–>nginx(反向代理)–>app server–>DB
  • F5–>weblogic web server–>weblogic app server -->DB
  • haproxy–>app server–>DB
  • ……

从这些常见的方案中总结出常用的负载均衡方案大致可分为商用硬件类的F5和array,开源软件类的nginx、haproxy、LVS。

- 商用硬件类方案对比(F5 VS array)
F5和array都是比较优秀的商用负载均衡产品厂商。都有链路负载均衡、服务器负载均专衡和广域网负载均属衡。
- F5偏重于四层负载,Array偏重于七层负载;
- F5的产品是独立卖的,高端产品可以通过License开启多个功能;Array倡导的是all in one,所有功能都在一个产品上,通过License控制。
- F5是CPU+ASIC架构,Array是X86架构;
- F5有iRules,除了使用预定义算法外还可以定制算法,Array只能使用预定义好的算法;
- F5提供二次开发接口,Array不提供二次开发;
- F5比较贵,Array比较便宜。

- 开源类方案对比(nginx、haproxy、LVS)

Haproxy

在这里插入图片描述

HAProxy(社区版官网:https://www.haproxy.org/)是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用负载均衡软件,支持虚拟主机。免费、快速并且可靠的一种解决方案。

优点
1) HAProxy特别适用于那些需要session保持且负载特大的web站点。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。
2)由于haproxy支持四层负载均衡,因此可以做对后端诸如类似Mysql使用基于tcp协议的组件进行负载均衡。(实际nginx通过stream{}块也可以实现tcp的负载均衡)
3)haproxy本身就是一种负载均衡软件,单纯从效率而言要更优于nginx,在并发处理上也是由于nginx的。
4)支持通过获取指定的url来检测后端服务器的健康状况。

nginx

nginx作为负载均衡使用时,其是基于七层网络的。能支持http、https和Email等应用层协议针对域名、目录结构进行负载均衡。

优点
1)基于七层网络负载均衡,支持应用层协议针对域名、目录结构进行负载均衡。并且它的正则功能非常强大和灵活,在这点要要优于haproxy。
2)配置简单,错误能输出到日志,便于调试。在这点要优化LVS。
3)Nginx可以通过端口检测到后端服务器内部的健康状况。
但nginx不支持session的直接保持,通常通过 ip hash,Generic Hash等算法来解决。

LVS

使用Linux内核集群实现的高性能、高可用的负载均衡服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
优点
1)扛负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了均衡器IO的性能不会受到大流量的影响,这也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2)可配置性低。既是缺点(导致功能有限,灵活度不高),但同时又是优点(减少人为配置操作误操作引入的异常,更稳定)
3)因为LVS工作在网络四层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。

小结
①haproxy 支持session保持;支持四层网络负载均衡;支持通过通过url检测后端服务器的健康性;
②nginx支持强大的七层网络负载均衡,支持强大的正则匹配;支持端口检测后端服务器的健康性;
③ LVS工作在四层网络,使用范围广和资源消耗低是其典型的特点。

五.选型建议

企业对于负载均衡的使用随着企业业务系统业务量规模所处的阶段来选型:
STAGE 1:业务初步发展,业务规模已经达到了单服务器、单数据库等单点模式无法稳定提供服务的规模,为保障服务持续性,需要使用小规模集群来负载业务,集群引入不可避免的需要一定的负载均衡技术来实现业务分流。但是业务规模仍然较小没有达到需要专业的维护团队来进行维护的程度。这时利用单点Nginx或HAproxy就是第一选择,此时这些东西上手快, 配置容易,在七层之上利用HTTP协议就可以。

STAGE2:业务进一步发展扩展,单点nginx已经不能满足业务发展要求,这时①可以使用“haproxy+keep alived -->多借点nginx”的架构,同时也可以考虑使用商用Array或者F5。

STAGE3:企业业务进一步发展,业务并发量极大,单一的现成产品也不一定能保证业务的服务持续性要求。相关人才的能力以及人才规模也随之提升,这时无论从产品的适配性,以及降低成本来讲使用开源的LVS,已经成为首选,这时LVS会成为主流。深圳针对LVS做一些定制化的二次开发,逐渐成为主流。
最终形成比较理想的基本架构为:Array/LVS — Nginx/Haproxy — Squid/Varnish — AppServer。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值