1、用户需求
客户的WEB网站后台目前只有一台服务器存在单点的问题,但暂时没有打算要做成冗余的方式。在与应用开发团沟通的过程中,应用开发提到如果网站宕机,不想让用户看到该页无法显示页面。希望能够有一个静态页面,可以提示用户说网站正在维护。这样体验会好一些!
说到这有朋友肯定要喷了,让用户再买个服务器做个集群或是SLB配置一个服务器组权重各百分之五十。不就可以解决这个问题了吗!但每个用户的需求和建设思路都是不一样的,作为架构师在充分与用户沟通理解用户的需求后,要做的就是帮助用户去实现这些需求。接下来我就分析一下这个需求该如何实现?希望能给大家一些启发!
2、具体实现
实现一个维护的静态页面,可以通过OSS对象存储设置静态页面。这个一点都不难!这个需求的难点就是在于如何实现判断机制。当用户的网站无法访问时,切换到静态页面。客户提出是否可以在阿里云CLB上实现。我看了一下目前我们在使用的CLB,没有可以设置这样判断机制的地方。而且CSLB的后端服务器组只能设置为ECS、弹性网卡或者弹性容器实例。更没有可以设置OSS静态页面的地方。这条路就不通了!我们需要换一个思路,从域名解析上入手。当网站域名解析出现问题无法访问,切换到备用域名。备用域名可以是指向OSS的静态页面。这个思路可以使用阿里云的GTM全局流量管理来实现。在GTM里可以在主地址池中设置网站的主域名,而将绑定静态页面的域名设置为备用地址池。然后将GTM实例的CNAME设置到主域名的DNS中。
这样当用户访问主域名的时候,会解析到GTM。GTM将流量分发给主地址池中的主域名。当主域名出现故障的时候,GTM会自动把流量分发给备用地址池中绑定静态页面的OSS域名。利用GTM的健康检查机制,当主域名恢复正常后。流量切换回主域名。实现用户要求的在网站故障时会自动跳转到一个正在维护的静态页面。而不会直接出现该页无法显示的尴尬!
3、总结
这样一个解决方案是可以利用现有资源和阿里云服务来实现客户需求的一个思路。当然也可以采用其它的思路。例如,在征得客户同意的情况下增加一台低配的ECS服务器来跑静态页面。(1核1G就足够了)将这台低频的服务器放入CLB网站服务器组。权重设置为0,生产服务器设置为100.这样也基本可以实现用户的需求。做方案的时候可以给用户多几个选择,让用户根据实际情况自行衡量采用哪种方案。架构师作为辅助提出合理的建议!