一、传统web访问模型
传统web访问模型完成一次请求的步骤
1)用户发起请求 2)服务器接受请求 3)服务器处理请求(压力最大) 4)服务器响应请求
传统模型缺点
单点故障; 单台服务器资源有限(客户端则是无限的); 单台服务器处理耗时长(客户等待时间过长);
传统模型优化——单点故障解决方案
部署一台备份服务器,宕机直接切换该方案可以有效解决服务器故障导致的单点故障,但且服务器利用率低、成本高,切换不及时,且无法解决服务器业务压力问题。
二、并行处理解决方案
2.1、DNS轮询解析方案
通过dns服务器中添加多条A记录,将同一个域名分别解析为不同的IP地址,这样就实现了一个简单的负载均衡
优点: 成本较低,如果你有多个公网IP的话,只需要在DNS上多添加几条A记录就可以了,公网IP需要收费,这个功能是不收费的;部署方便,只需要增加web服务即可,原架构不需要更改。每台主机的负载都是均衡的。
缺点: 无法进行健康检查,如果有web服务器宕机,DNS服务器是无法知晓的,会影响业务,而且会暴露太多的公网IP,实效性不佳,修改DNS记录需要一个生效周期,有的是3-4个小时,有的会更久;分配不均,如果几台Web服务器之间的配置不同,能够承受的压力也就不同,但是DNS解析分配的访问却是均匀分配的。其实DNS也是有分配算法的,可以根据当前连接较少的分配、可以设置Rate权重分配等等,只是目前绝大多数的DNS服务器都不支持;会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DNS解析无法将验证用户的访问持久分配到同一服务器。虽然有一定的本地DNS缓存,但是很难保证在用户访问期间,本地DNS缓存不过期
2.2、多机阵列——集群模式
两台负载均衡主机一个为主服务器,另外一个为备用服务器,他们,正常情况下,主服务器会绑定一个虚拟IP(Virtual IP),DNS将域名解析为虚拟IP,客户端的请求到达负载均衡器后,由负载均衡将请求交给后端的web服务器,如果主服务器宕机,则备用服务器会自动绑定这个虚拟IP,继续进行分发工作,这一切对于用户而言是透明的
优点: 不需要调整dns服务器,因为是用过相应的软件来实现负载均衡的,并且只需要一个公网IP地址做为虚拟IP就可以了,还能做到随时扩容,如果后端的web服务器宕机,负载均衡器会将其从分发列表里剔除,真正的实现的网站的高度可用,因为负载均衡器有备用服务机,web服务器也有备用机
缺点: 软件上和硬件上都可以实现负载均衡,选择的时候要慎重,硬件上的设备需要资金投入,软件上的要根据自己的需求决定,如LVS不能实现动静分离;NGINX适用范围小,只能支持http,https等少数的协议;HAProxy不支持POT/SMTP协议,多进程模式不够好等。
三、集群介绍
就像冗余部件可以使你免于硬件故障一样,群集技术则可以使你免于整个系统的瘫痪以及操作系统和应用层次的故障。一台服务器集群包含多台拥有共享数据存储空间的服务器,各服务器之间通过内部局域网进行互相连接;当其中一台服务器发生故障时,它所运行的应用程序将与之相连的服务器自动接管;在大多数情况下,集群中所有的计算机都拥有一个共同的名称,集群系统内任意一台服务器都可被所有的网络用户所使用。
- 计算机集群简称集群,是一种计算机系统, 它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。 (百度解释)
- 将多个物理机器组成一个逻辑计算机,实现负载均衡和容错。
群集组成
代码语言:javascript复制VIP [virtual IP]
数据服务器 [data server]
分发器以及故障切换 [Directory and fail over]
集群分类
- 按分发器类型分 – LVS集群 – Nginx集群 – haproxy集群 – F5集群
- 按业务类型分 – web集群 – 数据库集群 – 缓存集群 – …
思考:
代码语言:javascript复制 什么是单点故障