负载均衡
负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务;对于中大型网站的性能提高有着很大的优势;最近很多朋友都在问我关于负载均衡的实现;那我就说说自己的认知和实现方法吧;我会画一画请求流程图,来辅助理解。
1.【协议层】http重定向协议
原理:根据HTTP请求计算出一个真实的服务器地址,并且将这个服务器地址写入HTTP重定向响应中返回给浏览器,浏览器再重新请求
优点:很简单,也是初学者经常使用的方法
缺点:
1)浏览器需要多次请求才能完成一次访问,性能方面比较差
2)使用HTTP302响应重定向;有可能会被搜索引擎认为是SEO作弊,会降低搜索排名
3)http重定向服务器自身的处理能力成为了瓶颈;假如重定向服务器出现问题,那就全部瘫痪了
2.【协议层】DNS域名解析负载均衡
原理:在DNS服务器上配置多个域名对应IP的记录;例如域名:www.720share.com 对应一组服务器IP地址;域名解析时候经过DNS服务器的算法;将一个域名请求分配到合适的真实服务器上,利用了DNS服务器的解析;
优点:将负载均衡的调配工作交给了DNS服务器;省了网站管理维护均衡服务器的麻烦;而且DNS还支持基于地理位置的解析;将域名解析到距离用户IP近的一个服务器,这样加快了速度;
缺点:
1)DNS服务器是多级解析,每一级DNS都可能缓存A记录;当服务器下线后;该服务器对应的DNS记录仍然存在,会导致用户访问失败;
2)DNS服务器控制权掌握在域名服务商手里,我们不能过多的干预改善和管理
3)不能按照服务器的负载能力进行分配,因为DNS服务器是利用轮询法进行均衡的,不能区分服务器之间的差异,服务启动状态等;
3.【协议层】反向代理负载均衡
原理:反向代理处理处于web服务器上;反向代理服务器提供负载均衡的功能,同时管理一组web服务器,它可以根据负载算法将请求转发到不同的服务器;
例如:浏览器请求反向代理服务器的地址是:114.111.111.10;反向代理服务器收到请求后;会根据均衡负载算法得到一个真实的地址:192.168.1.1,并且请求结果发给真实服务,等待处理完毕后,直接返回给浏览器
优点:部署简单;处于http协议层。
缺点:
1)使用了反向代理后,服务器的IP不能直接暴露,因此服务器不需要使用外部IP地址,而且反向代理作为沟通桥梁就需要配置双网卡,外部内部两套IP地址;
4.【网络层】http重定向协议
原理:在网络层通过修改目标服务器进行负载均衡
用户访问请求到达负载均衡服务器,
负载均衡服务器在操作系统内核进程获取网络数据包,根据算法得到一台真实服务器地址,
然后将用户请求的目标地址修改成该真实服务器地址,数据处理完后返回给负载均衡服务器,
负载均衡服务器收到响应后将自身的地址修改成原用户访问地址后再讲数据返回回去。类似于反向服务器负载均衡。
优点:在响应请求时速度比反向代理服务器负载均衡要快得多
缺点:当请求大文件时候,速度就慢多了;
5.【链路层】数据链路层负载均衡
原理:在数据链路层修改MAC地址进行负载均衡
请看下图请求流程示例:
负载均衡服务器的IP和它所管理的服务器群的虚拟IP一致
负载均衡服务器分发过程中是修改MAC地址而不是IP
通过以上两步骤可以达到不修改数据包的源地址和目标地址就可以
优点:不需要负载均衡服务器进行地址的转换,数据响应时候不需要经过负载均衡服务器
缺点:对负载均衡服务器的带宽要求很高