应用服务器的高可用结构
数据库服务器的高可用架构
缓存服务器是否须要高可用架构?
负载均衡服务器也须要数据库
什么是高可用?缓存
可用:
可以对外提供正常服务。服务器
高可用:
绝大部分时间,对外可以提供正常服务。网络
一直可用是不现实的,也是不可能的。架构
-------------形成网站不可用的缘由主要有3点:
1.服务器硬件故障
如今通常采用牲口模式,集群部署,一台或多台机器宕机常常发生
全部即使是这种故障发生了,也要保证咱们的系统可以正常对外提供服务。负载均衡
2.发布新应用程序
通常都会部署新的应用程序,而后再重启服务,会形成服务短暂的不可用,这种更常见ide
3.应用程序自己出了问题
01:程序存在内存泄露,时间长了内存被战占满,重启才能恢复,也会致使短暂的不可用
02:测试环境没通过充分的测试,或测试和生产环境的差别,致使上线以后程序不可用测试
针对以上,的解决方法:网站
----------------------------------网站高可用架构设计:架构设计
1.从硬件层面加入必要的冗余
目前来讲,一个架构中,至少应该有两台一样的应用服务器,若是一台出了问题,还可用切换到另外一台,继续对外提供服务。再配置一台负载均衡器。
数据库服务器也是同样,经过数据冗余备份,和失效转移机制,来保证高可用。即使是主库故障了,也会切换到备库继续进行服务。
因此,测试人员,知道了这个集群的架构以及原理,就能够针对这个架构设计测试用例,好比针对一台机器或者多台机器宕机、恢复的状况。
2.灰度发布
使用灰度发布的前提,是应用服务器必须使用集群架构。
好比有多台服务器,可用先拿掉一台,部署新应用,而后重启服务,从新挂载到集群架构中,让其接受真实的外部流量,看新版本应用程序是否正常,若是不正常,那么回滚,若是正常,那么相继替换掉多台服务部署新应用,直到所有替换完成。
3.增强上线前的测试,或者开启预发布验证
测试环境没问题,不表明生产环境没问题,尤为是测试环境和生产环境差别比较大的状况。
01:网络限制是否同样?
02:依赖的第三方服务是否同样?好比测试环境连的是第三方服务的沙箱环境,生产环境接的是真实环境
为了不环境的差别,可能须要开启预发布验证。预发布服务器的惟一区别是,不会经过负载均衡服务器对外暴露,只有知道ip地址的内部人员才能访问。因此能够进行快速的自动化测试验证,若是经过,则进入到灰度测试阶段。