[LVS] 负载均衡的方式和选择

开篇:最近在研究LVS来实现TCP的负载均衡,本文介绍了负载均衡的方式。

集群方式:

1 DNS实现负载均衡
DNS负载均衡是最简单的建立网络服务集群方式。通过把域名解析到不同的服务器IP地址上,实现服务的集群。一个DNS请求到达DNS服务器,DNS基于调度算法(如:循环调度)返回一个IP地址,客户端接收到IP后,会缓存IP与域名的关系,在一定的TTL(Time to Live)中,使用这个映射。

Client查询DNS的流程:

Client--> hosts文件--> DNS LocalCache(本地DNS缓存)-->DNS服务器(递归请求),每个DNS服务器也有缓存。

Client先查找本地的hosts文件,如果有就使用,如果没有,再查询本地的DNS缓存,有就使用,没有再查DNS服务器。

缺点:
  1)由于Client缓存和DNS系统的继承结构,非常容易出现负载不均衡的情况。
  2)不能提供好的可靠性,一个服务器节点失败, 使用这个服务器的Clinet会一直报错。

2 基于负载均衡的分发器

分发器,也叫做负载均衡器,能够分发请求到集群中的各个服务器,整个集群在一个IP地址上,组成一个虚拟的服务。Client不知道集群的存在,只知道是一个单个服务器。

优点:比DNS负载均衡提供了更细粒度的控制,可以基于每个连接来负载均衡。如果一个服务器失败,Client可以马上恢复。管理员可以随时向集群添加机器。

负载均衡可以在两个层面(level)上完成:应用层和IP层. 例如,反向代理和pWEB是在应用层实现web服务器的负载均衡方法。译注:nginx,haproxy等也是。他们传递HTTP请求给集群中不同的Web服务器,得到返回结果,再把结果返回给Client。由于应用层是在ISO模型上层,当集群中的服务器到达5台以上时,应用层负载均衡器可能会是系统的瓶颈。IP层的负载均衡器的代价小(在ISO模型的下层),所有效率会更高。集群中的服务器数量可以支持25到100台。LVS就是为这个目标实现的。


译者注:其实,上面谈论的是软件实现负载均衡的方式,还可以使用硬件做负载均衡,如F5。F5也可以配置应用层和IP层的负载均衡。

基于上面讨论的,实现TCP负载均衡有一下几个方式:

1 DNS方法,缺点已经在上面提了。

2 LVS方法,目前看可以考虑,阿里的LBS就是使用LVS的。阿里的文档中描述,LVS-DR模式可以支持20多台业务服务器。如果这还不够,可以考虑使用LVS-FullNAT模式,能支持100台服务器。再不够,可以考虑结合DNS。再不够,你疯了吧。

3 F5 硬件负载均衡,首先F5比较贵,再者TCP长连接会一直占有F5的资源,所以一般没有使用F5的。

4 Nginx,Haproxy:当使用它们代理TCP协议的负载均衡时,少量的代理可以,多的长连接不适合。

5 自己实现负载均衡


翻译原文:http://www.linuxvirtualserver.org/why.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值