应用服务器的高可用结构
数据库服务器的高可用架构
缓存服务器是否需要高可用架构?
负载均衡服务器也需要

什么是高可用?

可用:
能够对外提供正常服务。

高可用:
绝大部分时间,对外能够提供正常服务。

一直可用是不现实的,也是不可能的。

网站高可用架构设计_第1张图片

-------------造成网站不可用的原因主要有3点:
1.服务器硬件故障
现在一般采用牲口模式,集群部署,一台或多台机器宕机经常发生
所有即便是这种故障发生了,也要保证我们的系统能够正常对外提供服务。

2.发布新应用程序
一般都会部署新的应用程序,然后再重启服务,会造成服务短暂的不可用,这种更常见

3.应用程序本身出了问题
01:程序存在内存泄露,时间长了内存被战占满,重启才能恢复,也会导致短暂的不可用
02:测试环境没经过充分的测试,或测试和生产环境的差异,导致上线之后程序不可用

针对以上,的解决方法:

----------------------------------网站高可用架构设计:

1.从硬件层面加入必要的冗余
目前来说,一个架构中,至少应该有两台同样的应用服务器,如果一台出了问题,还可用切换到另一台,继续对外提供服务。再配置一台负载均衡器。

数据库服务器也是一样,通过数据冗余备份,和失效转移机制,来保证高可用。即便是主库故障了,也会切换到备库继续进行服务。

所以,测试人员,知道了这个集群的架构以及原理,就可以针对这个架构设计测试用例,比如针对一台机器或者多台机器宕机、恢复的情况。

2.灰度发布
使用灰度发布的前提,是应用服务器必须使用集群架构。
比如有多台服务器,可用先拿掉一台,部署新应用,然后重启服务,重新挂载到集群架构中,让其接受真实的外部流量,看新版本应用程序是否正常,如果不正常,那么回滚,如果正常,那么相继替换掉多台服务部署新应用,直到全部替换完成。

3.加强上线前的测试,或者开启预发布验证
测试环境没问题,不代表生产环境没问题,尤其是测试环境和生产环境差异比较大的情况。
01:网络限制是否一样?
02:依赖的第三方服务是否一样?比如测试环境连的是第三方服务的沙箱环境,生产环境接的是真实环境

为了避免环境的差异,可能需要开启预发布验证。预发布服务器的唯一区别是,不会通过负载均衡服务器对外暴露,只有知道ip地址的内部人员才能访问。所以可以进行快速的自动化测试验证,如果通过,则进入到灰度测试阶段。