应用和数据库发展cluster还需要HA软件吗?
所谓集群技术(cluster),也有译为群集,涵盖了三个技术方向:高可用HA(High Availability); 负载均衡LB(Load Balance); 高性能运算HPC(High Performance Computing)。对于商业领域的IT应用主要关心高可用HA和负载均衡LB这两部分。为了保证应用的高可用,在操作系统os以上发展出了一些系统级HA软件。不同的操作系统下有不同的HA软件,如IBM AIX操作系统下的PowerHA(HACMP),HP-UX下的MC-SG,Linux下的VCS(Veritas Cluster Server)、Rose、Heartbeat等。这其中也有一些跨平台的HA软件,如IBM TSA支持多平台,HACMP 版本5时出过for Linux on POWER的版本(v6后没有了),MC-SG有for Linux的版本,VCS也有不同平台的版本。
随着应用软件和数据库软件的发展,集群技术(cluster)越来越多地融入到应用软件和数据库软件内部。如oracle RAC, WAS ( Websphere Application Server), Weblogic,Tomcat等都支持cluster技术。这些cluster技术不仅涵盖了负载均衡LB (Load Balance)技术,同时也提供高可用HA(High Availability)功能。相比之下,传统的高可用HA系统软件主要只针对高可用这部分的功能提供支持。如PowerHA(HACMP),MC-SG,VCS等。这些HA软件虽然在提供主备(primary-backup)功能的同时也提供并发(concurrent)功能,但是其并发功能只是提供并发访问的存储管理。在数据一致性方面,仍然需要应用或数据库软件来协调并发访问、避免冲突。也就是说,并发能否实现主要依赖于数据库或应用软件的LB功能。那么现在还需要这些单独的HA软件吗?
首先,我们要看到,数据库和应用软件自身包含的cluster功能还是有限制的。主要有两方面的限制:价格差异和功能完善程度。
所谓价格差异,就是指不同功能不同价格,集群版的软件一般都会有更高的价格。以Oracle RAC为例,其价格要比单机版高出很多。当然,与单机版相比,RAC不仅提供了HA的功能,同时也提供负载均衡LB的功能。但是需要注意,负载均衡的效果并不是很容易调试出来的。这与应用访问数据的复杂性有很大关系。对于数据库来说,RAC只是增加了CPU和Memory,对disk IO方面没有增加。对于系统性能的限制因素主要是disk IO的应用场景,RAC不会有性能提升。另外,由于Oracle在内存中的SGA区内会cache大量的数据以供应用读写访问,RAC下的cache fusion机制就是将多个RAC节点的SGA区协调起来工作,必然需要在RAC的心跳网络里传输同步数据,这引起了很大的overhead(附加开销)。因此,如果期望通过RAC多节点并发来提升性能,必然需要对应用进行针对性地优化。而对于本身就比较复杂的应用,如SAP,针对RAC的优化就更加困难。所以,从价格因素和优化方面考虑,单机版Oracle DB + HA软件仍然是一些应用场景下更适合的解决方案。对于其他支持cluster技术的应用软件也可以参考如上分析。
所谓功能完善程度,是指应用软件的cluster功能的适用程度。任何技术都有其局限性,有些应用软件虽然在新版本中推出了cluster功能,但是其对HA功能的支持是有限制的,还有待于进一步完善。以Tomcat为例,虽然Tomcat早在5.0.x版本即推出了集成session集群功能,但其实现的主要是负载均衡LB方面的功能,而对于高可用HA的支持和配置都有所不同。Tomcat的HA配置需要考虑:Apache是采用http直接代理还是ajp代理? 是否采用sticky session黏性会话? TOMCAT端是否使用memcached session manager实现SESSION的共享存储和访问? MSM是否采用sticky方式?等方面。也就是说,实现完全无人工干预的高可用(自动侦测故障,自动切换,自动恢复服务),是有限制的,并且配置困难。
基于以上两点, HA软件目前还是有生命力的。
同时我们也应该看到,长久以来HA软件在应用实践中也存在一些问题。有些问题甚至严重影响了其口碑和市场推广。以相对来说比较“高大上”的PowerHA(HACMP)为例,在IBM POWER小型机上配置的比例相当高,基本上用于数据库的服务器如果数量超过2台,都会购买。这些年累计的装机量已经非常大了,技术人员对其评价也是相当高的。但是实际应用效果如何呢?故障发生时,都可以自动切换并恢复服务吗?切换不成功的例子还是很多的。主要的问题并不是产品本身的问题,而是规划、实施和运维的问题。
首先,PowerHA可以自动侦测四类故障:网卡故障,网络故障,节点故障,应用故障。但是,其中应用故障的检测是需要定制化配置的。IBM为了方便常用应用的侦测,提供一个单独的产品smart assist,在PowerHA v6.1以前是需要单独购买的。而实际在中国基本没有用户单独购买smart assist(用户当然不懂,但并不仅仅是因为售前没有推荐,同时也有实施需要收费的因素)。Smart assist可以帮助HA的实施者方便地配置自动监控oracle,DB2,WAS,SAP,Filenet等常见应用的进程(随版本不同,支持的范围也不同,早期版本支持的应用较少)。没有smart assist,也可以通过人工编制应用监控脚本,并且配置到PowerHA中来实现应用的监控。但这需要了解应用,同时需要负责应用的人员配合。而问题的关键是,这是单独收费项目。代理大多没有实施能力,而厂家至少要收几万实施费。
不仅是上面提到的应用监控方面的实施问题,在基本功能的实施方面有时也不能保证质量。厂家实施收费高,而代理互相压价恶性竞争,结果往往是免HA实施费。在用户基本不懂的情况下,免费实施的质量难以保证。虽然IBM也一直在积极培训代理,并有一整套代理技术认证制度,但对于最终用户的实施情况实际上没有监控。
另外,我们知道,与实施同等重要的是运维,而用户因为缺乏培训和英文资料阅读障碍的问题,经常不能正确维护HA系统。比如常见的添加共享存储卷LV或共享文件系统FS时,没有通过HA的DARE动态配置更新机制和C-SPOC单点控制工具来操作。造成共享配置信息在不同HA节点上不一致。一旦需要切换,已经无法正常切换了。
上面谈到的这些问题,相信不同HA软件和不同厂商或多或少都会有,有些更是IT系统建设过程中普遍存在的问题。值得高兴的是,这些年来随着中国IT市场环境的不断发展完善,用户的IT运维团队越来越成熟,IT人员素质的不断提高,这些问题已经或者正在得到解决。相信我们IT基础架构的高可用等技术一定会不断完善,达到新的高度。
应用和数据库发展cluster还需要HA软件吗?,布布扣,bubuko.com