分类: 系统运维
2013-02-23 15:11:12
原文地址:负载均衡技术讨论 作者:liuzan_abc
负载均衡是个很广泛的概念,可以是针对数据库服务器,也可以是针对应用服务器,也可能是针对服务器之间的负载均衡,也可能是针对用户接入时的负载均衡。
这里说的主要是TCP/IP网络中的应用服务器对用户接入的负载均衡。
接入负载均衡的目的,就是将不同的用户平均地接入到不同的应用服务器上。
接入负载均衡方案在设计时,需要考虑的因素比较多。
0、是否需要前置节点来做负载均衡
这个取决于应用服务器本身的设计,如果它是一个自平衡的集群方式,就不用添加前置节点来完成负载均衡。
自平衡的实现方式有很多,常见的一个策略就是责任链的模式,服务器可以通过增加与客户端接入的自平衡用的监听端口实现,也可以通过服务器之间实现。
引入前置节点,就意味着增加了单点故障的可能性。
1、要基于整个系统的组网部署
要先清楚它的组网方案,考虑用户通过不同的运营商网络接入服务器时的情形
2、应用服务器之间的集群模式
应用服务器之间的关系,是对等的,还是主从的决定了它们是否平等地处理同一个用户的数据。
应用服务器处理用户会话的独占性决定了同一个会话的数据能否在不同的服务器上处理,这个主要是说应用服务器的处理模型,并发程度。
3、负载均衡是否是网关性质
如果是网关性质的,那就意味着用户连接服务器就必须经过负载均衡器,将会导致负载均衡器负载过大。
一般的网关性质的话,就是协议网关了,协议网关还要维护协议的会话,会比较困难,同时增加开发投入。
4、负载均衡的时机
如果在用户连接服务器之前完成负载均衡,那么就是在协议接入之前就做了负载的均衡,DNS负载均衡就是例子。
如果在用户连接服务器的过程中完成负载均衡,那么就要考虑建立连接时的服务器最好也是后续用户数据包处理的服务器,就是服务器处理用户会话的独占性,LVS就是一个例子。
5、服务器的连接方式
需要考虑服务器是TCP还是UDP的。
TCP的方式建立连接,它的特点是用户与服务器的连接是链路式的,一旦建立,中间的路由包转发节点不能发生变更。
UDP的方式建立连接,中间转发包的路由器可能会变更。
6、在容量方面的扩展性
如果服务器部署到不同的地理区域,如何根据用户的位置优化接入问题,负载均衡器能否适应这些变化。
这些都需要了解互联网与不同运营商之间的关系,熟悉中国的通信网与互联网结构与分布。