负载均衡

负载均衡

1.可以基于高层的交换,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。
2.系统包括一台实现负载均衡功能的工控机和一台switch,工控机含有两块网卡,分别称为eth0和eth1。Eth0外连internet,分配有固定的ip和mac地址;eth1内连switch,通过switch和多台应用服务器相连。
3.系统应该有的功能:
1)动态负载分流
对internet或局域网内的服务请求,根据服务类型及各服务器的负载情况,分配给能提供该服务的当前负载最轻的服务器。
2)IP地址复用
对外只提供一个使用的IP地址,多种服务如www服务,ftp服务,邮件服务等共用这一个外部IP地址,实际处理时可用多台服务器,分配有不同的内部IP地址。
3)网管功能:流量统计分析和非正常连接统计分析
可以分服务器统计每个服务器的正向流量和反向流量;统计连接中非正常(如非正常结束)连接的数量,供管理人员分析线路质量。
4)高可靠性保证:使用看门狗方式,自动保证系统自身的可靠性
5)备份冗余
系统自动检测每台服务器是否正在正常运行,若检测到某台服务器工作不正常,则自动切换到备份服务器。
4.负载均衡的依据
1)基于流量和连接的综合分析
一般情况下,一个用户使用某个服务,首先要和服务器建立一个连接,在整个接受服务的过程中,连接一直保持,直到该次服务完毕,那么该连接也就结束。为了保证一个用户的一次服务的完整性,要把整个服务过程中的这个连接分给同一台服务器。所以,我们的负载均衡系统是基于连接的,也就是说,一个连接内的所有IP包都要分配给同一台服务器,这就涉及到怎么分连接的问题,在下面讲述。另外一个分流的依据是流量,系统一直动态统计每台服务器的正向和反向流量,在保证一个IP包的连接完整性的前提下,把它分给正向流量最小的机器。所以,我们的系统是基于连接和流量二者综合分析的基础上的。
2)连接的处理
一个TCP连接有四个要素:源IP、目的IP、源端口、目的端口,这四个要素唯一确定一个TCP连接。一般情况下,都要以这四个要素来区分不同的连接。但是,在某种情况下,比如一个用户请求某个web页面时,会同时有多个连接,如果要使这多个连接分配给同一台服务器,那么就要求区分连接时不能那么严格。这多个连接的共性是客户端的IP地址相同,所以,有些情况下需要根据源IP、目的IP和目的端口三个要素来区分连接。
3)流量统计
流量有两个方向,我们称流向服务器一方的流量为正向流量,反之为反向流量。每把一个IP包分配给某个服务器,就要统计当前该服务器正在处理的连接数和正向、反向数据的总长度,每10S种计算一下流量。
4)服务器主动外发数据的处理
当服务器主动外发数据时,因为系统中还没有保存正向连接的记录,故不能根据系统记录的动态连接信息决定该数据包的目的mac地址。系统中需要事先保存一个路由表,保存有和系统相连的外发最近网关的mac和ip。对服务器主动外发的数据,就发给最近的网关。最近网关的mac和ip可通过静态配置来取得。
5)UDP的处理
因为UDP没有连接的概念,所以不存在连接的建立、存在和消亡问题。对UDP,可以采用“伪连接”的方式处理。即:因为UDP也有TCP连接的四个要素,可以把UDP也看成一个连接。当一个新的四要素组合出现时,即可认为是连接的开始;超过某个时间没有该连接的数据到来时,就认为该连接结束。


集群、分布式、负载均衡区别与联系
1、Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)(下面只介绍负载均衡集群)
负载均衡集群(Load Balance Cluster)
负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。

负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。


2、负载均衡系统: 负载均衡又有DNS负载均衡(比较常用)、IP负载均衡、反向代理负载均衡等,也就是在集群中有服务器A、B、C,它们都是互不影响,互不相干的,任何一台的机器宕了,都不会影响其他机器的运行,当用户来一个请求,有负载均衡器的算法决定由哪台机器来处理,假如你的算法是采用round算法,有用户a、b、c,那么分别由服务器A、B、C来处理;


3、分布式是指将不同的业务分布在不同的地方。
而集群指的是将几台服务器集中在一起,实现同一业务。
分布式中的每一个节点,都可以做集群。
而集群并不一定就是分布式的。
举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。
而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。
分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。

你可能感兴趣的:(负载均衡)