深圳易捷网络科技财税咨询网-neatmaster518.com 返回首页

公司网站制作的负载均衡解决方案

信息来源:深圳市易捷网络科技有限公司
信息发布时间:2024/12/22

互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显了出来,因此需要多台机器来进行性能的水平扩展以及避免单点故障。但是要如何将不同的用户的流量分发到不同的服务器上面呢

早期的方法是使用DNS做负载,通过给客户端解析不同的IP地址,让客户端的流量直接到达各个服务器。但是这种方法有一个很大的缺点就是延时性问题,在做出调度策略改变以后,由于DNS各级节点的缓存并不会及时的在客户端生效,而且DNS负载的调度策略比较简单,无法满足业务需求,因此就出现了负载均衡。

客户端的流量首先会到达负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器上面,同时负载均衡服务器也会对应用服务器做周期性的健康检查,当发现故障节点时便动态的将节点从应用服务器集群中剔除,以此来保证应用的高可用。

当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。

Web负载均衡

Web负载均衡(LoadBalancing),简单地说就是给我们的服务器集群分配“工作任务”,而采用恰当的分配方式,对于保护处于后端的Web服务器来说,非常重要。

负载均衡的策略;

1.HTTP重定向

当用户发来请求的时候,Web服务器通过修改HTTP响应头中的Location标记来返回一个新的url,然后浏览器再继续请求这个新url,实际上就是页面重定向。通过重定向,来达到“负载均衡”的目标。例如,我们在下载PHP源码包的时候,点击下载链接时,为了解决不同国家和地域下载速度的问题,它会返回一个离我们近的下载地址。重定向的HTTP返回码是302,如下图:

如果使用PHP代码来实现这个功能,方式如下:

这个重定向非常容易实现,并且可以自定义各种策略。但是,它在大规模访问量下,性能不佳。而且,给用户的体验也不好,实际请求发生重定向,增加了网络延时。

2.反向代理负载均衡

反向代理服务的核心工作主要是转发HTTP请求,扮演了浏览器端和后台Web服务器中转的角色。因为它工作在HTTP层(应用层),也就是网络七层结构中的第七层,因此也被称为“七层负载均衡”。可以做反向代理的软件很多,比较常见的一种是Nginx。

Nginx是一种非常灵活的反向代理软件,可以自由定制化转发策略,分配服务器流量的权重等。反向代理中,常见的一个问题,就是Web服务器存储的session数据,因为一般负载均衡的策略都是随机分配请求的。同一个登录用户的请求,无法保证一定分配到相同的Web机器上,会导致无法找到session的问题。

解决方案主要有两种:

配置反向代理的转发规则,让同一个用户的请求一定落到同一台机器上(通过分析cookie),复杂的转发规则将会消耗更多的CPU,也增加了代理服务器的负担。

将session这类的信息,专门用某个独立服务来存储,例如Redis/memchache,这个方案是比较推荐的。

反向代理服务,也是可以开启缓存的,如果开启了,会增加反向代理的负担,需要谨慎使用。这种负载均衡策略实现和部署非常简单,而且性能表现也比较好。但是,它有“单点故障”的问题,如果挂了,会带来很多的麻烦。而且,到了后期Web服务器继续增加,它本身可能成为系统的瓶颈。

3.IP负载均衡

IP负载均衡服务是工作在网络层(修改IP)和传输层(修改端口,第四层),比起工作在应用层(第七层)性能要高出非常多。原理是,他是对IP层的数据包的IP地址和端口信息进行修改,达到负载均衡的目的。这种方式,也被称为“四层负载均衡”。常见的负载均衡方式,是LVS(LinuxVirtualServer,Linux虚拟服务),通过IPVS(IPVirtualServer,IP虚拟服务)来实现。

在负载均衡服务器收到客户端的IP包的时候,会修改IP包的目标IP地址或端口,然后原封不动地投递到内部网络中,数据包会流入到实际Web服务器。实际服务器处理完成后,又会将数据包投递回给负载均衡服务器,它再修改目标IP地址为用户IP地址,最终回到客户端。

上述的方式叫LVS-NAT,除此之外,还有LVS-RD(直接路由),LVS-TUN(IP隧道),三者之间都属于LVS的方式,但是有一定的区别,篇幅问题,不赘叙。

IP负载均衡的性能要高出Nginx的反向代理很多,它只处理到传输层为止的数据包,并不做进一步的组包,然后直接转发给实际服务器。不过,它的配置和搭建比较复杂。

4.DNS负载均衡

DNS(DomainNameSystem)负责域名解析的服务,域名url实际上是服务器的别名,实际映射是一个IP地址,解析过程,就是DNS完成域名到IP的映射。而一个域名是可以配置成对应多个IP的。因此,DNS也就可以作为负载均衡服务。

这种负载均衡策略,配置简单,性能极佳。但是,不能自由定义规则,而且,变更被映射的IP或者机器故障时很麻烦,还存在DNS生效延迟的问题。

5.DNS/GSLB负载均衡

我们常用的CDN(ContentDeliveryNetwork,内容分发网络)实现方式,其实就是在同一个域名映射为多IP的基础上更进一步,通过GSLB(GlobalServerLoadBalance,全局负载均衡)按照指定规则映射域名的IP。一般情况下都是按照地理位置,将离用户近的IP返回给用户,减少网络传输中的路由节点之间的跳跃消耗。

实际过程是LDNS(LocalDNS)先向根域名服务(RootNameServer)获取到顶级根的NameServer(例如.com的),然后得到指定域名的授权DNS,然后再获得实际服务器IP。

CDN在Web系统中,一般情况下是用来解决大小较大的静态资源(html/Js/Css/图片等)的加载问题,让这些比较依赖网络下载的内容,尽可能离用户更近,提升用户体验。

例如,我访问了一张imgcache.gtimg.cn上的图片(腾讯的自建CDN,不使用qq.com域名的原因是防止http请求的时候,带上了多余的cookie信息),我获得的IP是183.60.217.90。

相关行业资讯

1、浅谈经常访问名人博客的好处
2、医疗网站优化效果不佳的原因
3、SEO网站内部优化技巧
4、6种解决让人愤怒的网站设计
5、网站SEO优化的一些常规方法和细节分享
6、浅谈2018年GoogleSEO
7、企业为什么要做网站优化推广对企业有哪些益处
8、SEO优化中新站排名始终没动的缘故是啥
9、网页设计与其他设计的不同
10、网站为什么会降权如何恢复
11、明确4个要素轻松打造蜘蛛喜爱的网站内容
12、借助互联网后企业做网站建设会有什么改变呢
13、新手在建设网站前有哪些是必须要知道的
14、企业网站建设可以给企业带来一些什么呢
15、什么样的推广网站需要进行优化
16、网站制作浅谈网站的种类
17、转化率,还是转化率你可以停停了
18、标题是软文成功的一半5种常见软文标题
19、网站降权该怎么处理
20、深圳网站建设中企业应该做好那些工作
21、为什么自然流量取决于网站内容和线上形象
22、新手要如何入门友情链接优化
23、SEO文章如何写
24、怎么判断网站需不需要改版
25、网站推广的八大诀窍,快收藏起来吧
26、企业要做网络推广首先得懂这些
27、影响网站收录的因素有哪些
28、草根站长如何优化地方分类信息网站
29、企业网站开发不要选择仿站,企业仿站缺点介绍
30、稳定网站排名妙招
31、如何通过网站制作来打造企业品牌
32、网站制作带领大家认识网站
33、网站制作浅谈伪原创怎么做的
34、为什么SEO能够帮您赚大钱
35、学UI设计要学习哪些内容
36、网站设计中如何选择优质照片
37、简述企业网站前期如何做好外链建设
38、SEOer必须要知道的SEO优化内容
39、新型网购模式正在英国兴起:教人们穿衣搭配
40、高端定制网站策划需要要怎么做
41、优化网站导航的相关设计
42、网站设计的几大要点
43、如何才能提高网站的权重评级
44、说说网站建设需要注意的一些基本事项
45、网站优化如何选好关键词
46、如何制作自己的网站?这几点要知晓!
47、企业邮箱:一场数字化时代的“必备”还是“鸡肋”?
48、关于网站前期优化规划与页面细节调整
49、如何评估关键词竞争度
50、分享几个寻找友情链接的小方法
深圳市易捷网络科技有限公司版权所有    粤ICP备2022153140号