对服务器的负载均衡

1.采用DNS轮询转发的方式:一个域名配置对应多台ip地址:

  优点:

    将负载均衡的工作丢给了DNS服务器去做,省去了网站管理人员的维护工作
    对于真实地址的服务器,不需要做任何的配置
    简单易用,成本低,而且方便灵活
    服务器可以放在任何的地方
    同时,DNS服务还可以做基于地理位置的解析,可以让一个距离最近的服务器的IP地址放回,提高性能
  缺点:

    1.DNS服务是有多级的(之后有时间写一个详细的DNS服务介绍)

      大致上来说,首先是在浏览器中有一个DNS缓存,如果找不到就在本机地址的hosts文件中查找,再找不到就去路由器缓存中查找。然后是本地DNS服务器,如果没有,就是根服务器,顶级服务器,权限域名服务器等等等

    总之,在每一级都有可能缓存这DNS的对应关系,所以有可能当某一台真实服务器下线之后,修改了DNS服务器的记录,但在生效之前还有一段时间,在这段期间,其IP地址已经不可用了,通过域名进行访问时还是会访问到这个IP地址。会访问失败
    2.DNS服务器和真实服务器是完全分开的,所以DNS的负载均衡不能监测到真是服务器当前的运行状态,其负载均衡的效果不是很好

    3.可能会造成额外的网络问题。为了使本DNS服务器和其他DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分配,一般都要将DNS的刷新时间设置的较小,但太小将会使DNS流量大增造成额外的网络问题。

    事实上,大型网站都将DNS负载均衡作为第一级的负载均衡手段,在服务器内部再进行第二级的负载均衡,也就是说,我们通过DNS得到的IP地址并不是真实服务器的IP地址,而是内部负载均衡服务器的IP地址。

2.反向代理

  代理与反向代理:VPN服务就是我们常用的一种代理(正向代理),用户将请教交给代理服务器,代理服务器访问网站获取数据,之后代理服务器再将数据返还给用户。在这个过程中,应用服务器并不知道用户的存在。只知道代理浏览器的访问。 
反向代理是指在服务器端的代理,代理服务器接收用户的请求,再转发给真实服务器,之后再返回给代理服务器再给用户,在这个过程中,用户并不知道真实服务器的存在。

  反向代理服务器管理了一组服务器,当用户访问时,代理服务器根据负载均衡算法将请求转发到真实服务器,真实服务器也通过反向代理服务器返还数据。内部服务器不对外部提供服务,所以不需要外部IP,而反向代理服务器需要两个网卡,一个IP用于外部用户访问使用,另外一个用于内部使用。 

  

如上图所示,当用户发起请求时(源地址为200.110.50.1),访问负载均衡服务器(目的地址为114.100.20.200),负载均衡服务器在内核进程获取网路数据包,根据一定的算法得到一个真实服务器的IP地址,其后将IP数据包的目的地址修改为该IP地址(192.168.1.1),之后就会将数据包发送到该真实服务器上去,之后再向负载均衡服务器返回数据,负载均衡服务器将源地址修改为114.100.20.200后返回给用户浏览器。

  优点:

    反向代理服务器位于应用层,负载均衡方案和反向代理服务器集成在了一起,部署简单
  缺点:

    反向代理服务器用户处理所有的请求和响应,其性能可能成为服务器集群的瓶颈
    有名Nginx就是反向代理服务

3)链路层的负载均衡

MAC地址:mac地址是与网卡相关,其编号只与网卡生产厂商和流水号有关,基本上可以作为每台电脑的“身份证”。以太网中数据帧之间是通过MAC寻址来到达对应的计算机网卡或者路由的

 

                       

主要将所有服务器设置成一个共享ip地址, 是使用ARP协议,把一个IP地址(114.100.20.200)给广播出去,我们只让Load Balancer 响应这个VIP地址(115.39.19.22)的ARP请求,对于RS1,RS2,RS3, 抑制住对这个VIP地址的ARP响应,然后用负载均衡服务器确定最终的mac地址,其他不变

链路层的负载均衡通过修改帧数据包中的MAC地址来达到转发的目的。这种方法,所有的真实服务器和负载均衡服务器都有相同的IP地址,不用修改IP数据包的目的地址和源地址,只通过修改MAC地址就可以达到效果,因为请求的IP地址和实际处理的真实服务器的IP地址一致,所以不需要回到负载均衡服务器进行地址交换,可以将响应直接发会给用户浏览器,避免了负载均衡服务器成为传输瓶颈的可能

Linux中的LVS(Linux Virtual Server)就是链路层负载均衡的开源产品

猜你喜欢

转载自www.cnblogs.com/nyhhd/p/12693116.html