高可用架构
一、高可用架构概述
1、单点故障概念:
业务只运行在一台服务器上,如果服务器出现故障,就会造成业务中断,甚至数据丢失。
2、高可用架构:
(1) 概念:
高可用架构是指计算机系统能够保证无故障持续运行的概率。
通常采用 高可用概率=可用时间/总时间*100% 来计算实现的高可用性等级。
(2) 系统冗余:
想实现较高的高可用性等级,需要引入系统冗余的理念。
① 系统冗余概念:
使用多台服务器同时提供服务,即使一台服务器(服务器A)出现故障,还可以通过其它服务器(服务器B)响应用户的访问请求。
② 物理服务器冗余方案:
● 通过编写健康检查脚本或软件对服务器状态进行实时检测。
● 让服务器A和服务器B共用一个IP,平时这个IP会挂载在服务器A上,一但服务器A检测出现问题,通过脚本或软件自动的将这个IP切换至服务器B上。
● 安装配置专门的负载均衡设备,这个设备可以关联多台服务器,并可以接受用户请求,根据用户的请求,自动将用户流量分发至关联的服务器中。
③ 云服务器冗余方案:
● 通过快照和镜像功能来完成云服务器上数据的备份,一旦服务器数据出现故障可以通过备份快速恢复数据。
● 通过自定义镜像功能快速再次部署出更多的业务服务器,使用多个相同的网站服务器同时对外提供服务。
● 在这些服务器前面加入一个阿里云负载均衡服务(SLB),让用户先访问到负载均衡,然后由负载均衡再分发流量到具体的服务器上,SLB会通过健康检查功能发现故障ECS,并不再分配用户请求到故障ECS。
● 购买阿里云弹性公网IP,并将SLB绑定到这个弹性公网IP上。拥有一个固定的对外服务的公网IP,通过这个IP对外提供服务,确保网站的高可用。
二、弹性公网IP与负载均衡
1、公网IP与弹性公网IP:
(1) 公网IP:
① 公网IP由公共网络运营商分配,具有独立性、全球唯一性和全球可达性等特点,可让用户通过互联网与其他用户实现数据交流和信息传递。
② 用户使用网站的域名访问网站,而域名会通过DNS域名解析服务解析为公网IP地址,通过公网IP地址找到网站服务器,返回内容。
(2) 弹性公网IP:
① 云服务器出现故障后,需要使用快照和镜像功能快速部署部署新的服务器。新服务器会有新的公网IP地址,一旦服务器换了公网IP,这会导致需要更新域名解析,花费时间长。在此期间,用户会访问到旧的云服务器上,导致访问失败。
② 弹性公网IP概念:
弹性公网IP(Elastic IP Address,简称EIP)是可以独立购买和持有的公网IP地址资源。
EIP通过NAT方式映射到被绑定的云资源上。当EIP和的云资源绑定后,云资源可以通过EIP与公网通信;当云资源被释放后,EIP会和云资源解绑,EIP会保留在账号内。
③ 弹性公网IP好处:
弹性公网IP和云资源是解耦且可以单独持有的,在后期云服务器变更时,无需更改DNS解析,始终使用同一个公网IP对外服务,避免互联网域名解析更新速度慢导致的用户访问中断。
2、负载均衡:
(1) 概念:
负载均衡(Load balancing)是指将客户端请求分配到多台服务器上,实现带宽资源共享、优化资源利用率和提高系统性能的技术。
负载均衡可以有效解决单个服务器容量不足或性能瓶颈的问题,通过平衡流量负载,使多台服务器共同完成请求处理,实现高可用性和高可靠性的服务。
(2) 负载均衡分类:
企业中的负载均衡通常工作在OSI七层模型的四层(传输层)和七层(应用层)
① 四层负载均衡:通常用于TCP/UDP协议。
② 七层负载均衡:通常用于HTTP/HTTPS的Web服务。网站是一种典型的七层服务,需要在负载均衡上开通HTTP协议的80端口。
(3) 负载均衡技术实现:
① 负载均衡通常采用硬件设备或是软件来实现,硬件负载均衡器通过专用硬件设备分发流量 ;软件负载均衡器通过对流量进行转发和控制来实现负载均衡。
② 通过专用硬件实现负载均衡,成本高昂,并且设备容易出现单点故障,一旦设备故障,所有通过此设备分发流量的业务都会瘫痪。
软件负载均衡需要额外占用服务器,安装配置管理、监控相对复杂,需要比较专业的运维工程师,技术投入较大。
3、阿里云负载均衡SLB:
(1) 介绍:
① 阿里云的负载均衡产品采用软件定义负载均衡技术,提供了简单易用的Web页面,操作都可以通过控制台完成。
② SLB可以将流量分发到同地域的不同可用区中,提供跨可用区的流量分发,实现同地域下的跨机房容灾。
③ SLB支持云服务器健康检查,可以智能识别和避开后端存在故障的服务器。
④ SLB提供多种负载均衡类型,包括传统型负载均衡CLB(提供四层和七层负载均衡)、网络型负载均衡NLB(四层)、应用型负载均衡ALB(七层)。
(2) 负载均衡调度算法:
阿里云负载均衡CLB的监听器默认支持的调度算法有:
① 轮询(RR):当所有的ECS云服务器的硬件规格全部相同时,需要选择轮询调度方法。选择轮询调度的方法后,负载均衡会依次将前端的访问流量分发到不同的服务器上,不会对特定的服务器进行格外关注。
② 加权轮询(WRR):当有一部分ECS云服务器的硬件规格和其他的ECS云服务器规格不同时,需要选择加权轮询调度方法。给轻载的云服务器设置更多的权重,负载均衡在分发流量时,就会按照权重分发更多的流量到这些服务器上。
③ 一致性哈希(CH):
● 哈希(hash)是一种将任意长度的数据转化为固定长度的数字的方法,通常以十六进制表示。这个固定长度的数字称为哈希值或者散列值。哈希值通常是唯一的,并且不可逆转。
● 阿里云负载均衡一致性哈希是基于源IP地址或基于四元组 (源IP、目的IP、源端口和目的端口) 的一致性哈希,相同的源地址会调度到相同的后端服务器。
例如:当某客户访问网站时,负载均衡CLB会对此客户的源公网IPv4地址进行哈希,并匹配到后端某一台ECS云服务器。以后此客户再来访问小云的网站时,由于源公网IPv4地址是一样的,所以哈希值也是一样的,所以还会匹配到后端同样的后端ECS云服务器。只要客户的公网IP没有发生变化,就始终会被匹配到相同的ECS 云服务器。
● 访问者与后端某一服务器产生绑定的现象称为会话保持。一致性哈希的调度算法只要用户的公网IP哈希之后的结果一致,就始终由固定的某台服务器为其提供服务。此服务器故障时,原有的用户只需要匹配到下一个服务器即可,减少了整体架构的抖动。
例如使用加权轮询调度算法,权重为50的机器故障后,会重新分配所有流量,会有较大的冲击和抖动,而一致性哈希就不会。
(3) 总结:如何选择调度算法:
① 轮询调度:当所有的ECS云服务器硬件规格和带宽全部相同时,应采用轮询调度算法,避免流量分发不均匀造成服务器压力不均衡的情况发生。
② 加权轮询调度:当ECS云服务器以及带宽并不完全相同时,应采用加权轮询调度算法,给不同配置的ECS云服务器不同的权重值,配置高的机器权重值高,配置低的机器权重指低,以实现整体压力的均衡。
③ 一致性哈希调度:将请求均匀地分配到不同的服务器节点上,避免某一台服务器过于忙碌导致用户体验下降,希望通过将用户的公网IP哈希后对服务器匹配时或服务器故障时减少整体架构抖动时,应采用一致性哈希调度算法。
4、实验:
(1) 实验描述:
① 为两台云服务器ECS实例(web01和web02)配置为传统负载均衡CLB的后端服务器,并通过弹性公网IP绑定CLB,统一弹性的对外提供Web服务。
② 用户访问网站的链路为:通过发起访问请求到弹性公网IP,弹性公网IP绑定了传统负载均衡CLB,请求将由CLB进行处理,CLB会自动根据规则配置将用户请求转发至后端的Web服务器组(web01和web02),Web服务器处理用户请求,并将数据返回给用户。
(2) 完成web服务器配置:
① 分别在两台ECS中,输入 yum install httpd -y 完成httpd安装。
② 分别在两台ECS中完成网站首页的定制,其中web01服务器的主页显示web01、web02服务器的主页显示web02。
③ 运行Apache服务:
systemctl start httpd systemctl enable httpd --now systemctl status httpd
④ 分别在两台ECS中,输入 curl localhost 测试是否网站页面是否能够返回各自的实例名称。
(3) 创建传统型负载均衡:
① 访问传统型负载均衡控制台,点击创建传统负载均衡。
② 购买传统型负载均衡CLB,详细配置要求如下:
付费模式:按量付费
地域和可用区:华东1 可用区H
备可用区:华东1 可用区I
实例名称:web_lb
实例计费方式:按规格计费
实例规格:简约型I
实例类型:私网
(4) 配置传统型负载均衡CLB:
配置监听和后端服务器需要完成以下几个步骤:
配置协议&监听
配置后端服务器
配置健康检查
配置审核
① 协议&监听:
选择TCP协议,并在监听端口处输入80(Web服务默认端口)
② 后端服务器:
● 选择默认服务器组,并点击继续添加,全选两台ECS:
● 后端服务器权重保持默认:
● 在端口处输入80,配置端口:
③ 健康检查、配置审核:
保持默认(开启健康检查),确认配置无误后,直接点击提交,完成传统负载均衡CLB的配置。
(5) 创建弹性公网IP并绑定负载均衡实例:
前面创建的CLB实例为私网类型,没有公网IP,无法通过公网访问。如果需要让其网站能够通过公网访问,可以绑定到弹性公网IP
绑定步骤为:
创建弹性公网IP
将私网CLB实例绑定到弹性公网IP
测试绑定后是否能够通过弹性公网IP访问到后端服务器(web01和web02)
① 创建弹性公网IP:
打开弹性公网IP控制台,点击创建弹性公网IP,在弹出的弹性公网IP页面完成如下配置:
付费模式:按量付费
地域和可用区:华东1(杭州)
流量:按使用流量计费
带宽峰值:5Mbps
名称:testeip
其余配置默认不变
② 将私网CLB实例绑定到弹性公网IP:
访问弹性公网IP控制台,点击绑定资源按钮,实例类型选择传统型负载均衡CLB实例后,勾选创建的web_lb实例,并点击确定:
③ 通过弹性公网IP验证负载均衡效果:在浏览器中,打开弹性公网IP地址,多次刷新,验证页面是否在显示不同内容。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!