高可用架构

发布时间:2024年01月10日

一、高可用架构概述

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地址,多次刷新,验证页面是否在显示不同内容。

文章来源:https://blog.csdn.net/weixin_61428407/article/details/135497152
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。