如何使用轻量化工具在云服务器实现Web高可用
相信不少的读者朋友,应该都有过网站搭建的经验。
以前:别跟我说什么高可用,直接yum安装nginx,看到”It works”就走- 。-
随着互联网的普及,相比于过去,搭建一个个人的博客平台,需要购买昂贵的硬件资源与相关网络资源的投入,成本可见一斑,笔者所在的公司是一家云计算公司,致力于为传统企业或个人提供便捷的云服务。本文谈到的几种高可用方案,均使用自家的云服务器,实践出真知,下面就来谈谈几种常见的Web高可用的方案思路。
什么是高可用
所谓的高可用,指的是一种不间断提供服务的能力。如果您的web业务要求具有一定的健壮性,那必定绕不开高可用这一话题。在网站集群搭建这块领域中,高可用集群是服务的可用性较高,假如我们的站点,后端是由多台的服务器同时提供服务的,当其中的一台服务器宕机之后,不会造成我们的服务不可用。
这种工作模式,就是将一个具有故障的服务,转交给另外一个正常工作的服务器,从而实现业务不中断的效果,一般来说,我们的集群会在集群工作的前端(可以理解成请求分发器),设置一个健康检查规则,如果发现某台服务器工作不正常,就不会对其进行转发。
业内对这种可用性,有一个通用的衡量标准,其计算公式如下:
可用性=在线时间/(在线时间+故障处理时间)
轻量化级别的实现(keepaliced+haproxy)
HAproxy+Keepalived的方案选择
为什么选择这个方案?
这是笔者首先推荐的一种方案,在笔者的几个项目中都采用了这种架构,进过众多的测试和时间,都是比较可靠的一种方案。首先这2个软件也是开源软件,并且都是轻量化级别的实现利器,可以使用很少的学习成本达到不错的效果。
Keepalived是什么,能干什么?
是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
haproxy又是什么?
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。
HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql的均衡负载。
下面用一张架构图来为以上的架构做说明:
该架构设置了一个前端的“分发器”,负责将浏览器端发送过来的http请求,转交给后端的提供web服务的真实服务器,得到响应结果之后,再将httpd的内容回复转送给浏览器客户端,通俗的说,就是“一手托两家”的效果。而这个分发器,就是使用haproxy的这个软件。
后端的真实服务器有多台,已经可以保证不间断的提供web的响应服务;
但是,如果前端的这个分发器,如果出现问题,奔溃了怎么办呢?这是完全有可能的,因此,也需要对这个分发器做高可用。因此keepalived就担上了这个重任了。在前端的2个“分发器”上,安装keepalived的软件,由于keepalived的功能会将2台设置为主备之分,主服务器会获取到一个我们配置的“虚拟IP”,因此这样就说得通了。
当主分发器宕机之后,keepalived服务器就会实施监控到,主分发器已经挂了,不再适合担任分发器的共,因此“虚拟IP”就会在主分发器上被抽离,转而配置到备分发器上,因此获取到“虚拟IP”的备分发器,就可以继续提供服雾物理了。假如我们的网站域名通过A记录指向到我们的这个“虚拟IP”上,不就可以不间断的提供服雾了?
市面其他常见的方案选择
轻量化利器之二-keepalived+nginx
该方案也是一种经典的高可用方案,nginx本身除了能实现web服务的功能,也能实现类似haproxy的这种反向代理与负载均衡的功能,因此也可以很好的实现自定义的这种效果。
多面杀手-lvs+keepalived
可能许多读者朋友也使用过lvs这款重量级工具,如果是您的业务达到较大的规模,也建议可以使用该种方案,这里不得不说国人章文嵩对此贡献的巨大力量,这种热衷开源,热衷探索的精神,值得每个运维人员学习。
重量级大杀器-corosync + pacemaker
corosync + pacemaker也是一套经典的高可用解决方案,Pacemaker是一个集群资源管理器,它利用集群基础构件(Corosync或Heartbeat)的消息传递和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现集群服务(资源)的高可用。
精通网站架构服务的读者朋友,可能也用过这款工具,如果你有较多的学习热情,可以试试这个方案,相比于以上介绍的几种方案,pacemaker涉及的专业名词,层次解析和配置相关等都比较复杂,因此学习成本较高,但如果掌握了这个工具,也一定会对网站架构会有更清晰,更全面的认识。
以上都是笔者在实际过程中用到的工具,都是一些常见的软件解决方案,当然市面上也不止这一些,还有更高成本的例如F5,big-ip,citrix netscaler,A10等这类硬件层面的方案,因此还是要根据实际业务的情况来选择,在稳定性的基础下适当向功能性方面拓展。
睿江云官网链接:www.eflycloud.com