三峡大学仁和医院:全闪存平台虚拟化架构下数据库高可用的设计及应用
引言
医院的业务系统是典型的OLTP+OLAP应用,因为医疗业务的特殊性,对系统的性能、可用性要求很高。医院业务系统必须7×24 小时连续运行,而且对响应时间敏感性强,不能因为系统的宕机影响医疗业务,影响对患者的救治、造成医疗纠纷。
现状
医院业务系统主要包含HIS、PACS、LIS等,所有系统都离不开数据库支,典型应用主要是Orcal、SQL Server及少量的DB2、Caché。要实现数据库高可用,Orcal可采用十分成熟的RAC 方式,DB2、Caché的应用较少,而使用广泛的SQL Server数据库,在SQL Server2012版本发布之前,一直缺少十分满意的方案(只能采取类似于订阅发布、Windows故障转移集群方式),难于实现多副本负载均衡。
采用传统的Windows故障转移集群方式(HA)时,数据库服务器处于主备状态,一台主机工作时另一台处于备用状态,硬件资源不能充分利用,由于共用存储,数据库只有一份,读写压力大,IO性能极易成为影响业务效率的瓶颈。具体表现为业务高峰期速度缓慢,而且数据库只有一份拷贝,存在风险。
全闪存平台虚拟化架构数据库高可用的设计及实现
1. 设计方案
全闪存存储目前已进入大规模应用,由于全闪存介质的固有特性,能实现极高的IOPS,极低的延时。而且,全新的原生全闪存存储内置在线数据消重及压缩功能,非常适合关系型数据库应用场景,能很好地实现效率和成本的平衡。
服务器虚拟化技术目前也已经非常成熟,有多种方案可选,服务器虚拟化技术能充分利用X86 服务器的计算性能,一台服务器可创建多台虚拟机,部署虚拟机也十分便捷。多台服务器可组成群集,虚拟机可在不同服务器上实现漂移。
SQL Server 2012新增AlWaysOn高可用性功能,可实现一份数据库的多副本联机运行(一主本、多副本),可以方便地实现读写分离及负载均衡。同时主数据库宕机后副本能自动接管,很好地实现了数据库高可用。另一方面,SQL Server 2012 AlWaysOn高可用性利用Windows 故障转移集群方式实现,系统融合度紧密,部署简单。设计架构图见图1。
图1 设计架构图
2. 实现
多台主机采用VMware vSphere虚拟化,虚拟出多台虚拟机(Windows 2008 R2)。搭建一台域控(Domain Controller),三台windows 2008虚拟机组成Windows故障转移集群,分别安装SQL Server 2012数据库并配置AlWaysOn高可用性。
虚拟环境搭建过程十分常见,此处不做介绍,现将AlWaysOn 高可用性实现步骤简要描述如下。
主服务器SQL1、辅助服务器SQL2、辅助服务器SQL3分别进行如下设置:安装故障转移;加入域;创建集群;SQL服务属性本账户更改为域账户登录;SQL登录名添加域账户登录,配置AlwaysOn。
由于SQL和Windows系统都是微软的核心系统,能无缝融合,配置AlwaysOn时会自动找到故障转移集群中的主机。
设置AlWaysOn高可用需要注意的几点:数据库需要完整模式,并有历史备份;指定副本时,选择自动故障转移/可读数据库;给添加好的alwayson应用添加侦听器时选择浮动IP。
另外,有一个常见的误区,认为AlWaysOn可以自动实现负载均衡,这是不对的。实际情况是:读写分离功能实现需要应用程序做相应设置,比如指定报表、查询在数据库副本中操作,写操作在主数据库中执行。
3. 方案特点
由于本方案应用环境为纯数据库服务,对延时响应要求很高,特别是在高负荷下,大数据的查询不能影响正常业务。经前期对系统的诊断,观察到系统的瓶颈不在计算性能,CPU使用率不高,数据库并发性能和存储读写速度是影响系统效率的主要因素,另外,应用程序的设计方式也时常造成数据库阻塞。
针对以上特点,本方案选择了EMC公司的全闪存存储XtremIO,并采用VMware虚拟化技术充分利用现在X86服务器Xeon V3处理器的计算性能,搭建了SQL 的AlWaysOn高可用环境。由于全闪存存储内置在线数据消重及压缩功能,三份数据库副本,在存储中实际上只占用了一份的存储空间,由于元数据复用,实际上数据库的同步不需要耗费拷贝时间,这是和传统磁盘存储最大的区别。同理,三台虚拟机,由于装的是相同操作系统,类似三个镜像,也能实现很高的重复数据消除。服务器虚拟化环境下,多台虚拟机并发运行,对共享存储来说,表现为随机读写,对存储随机读写的IO性能要求高。全闪存存储具备的高随机读写IO 性能也满足业务要求。
存储管理界面截图见图2,可以看到,通过重复数据消除和压缩,能实现3.9:1的数据减少效果,读写IO带宽也超过了900M/S。
图2 存储管理界面图
本项目实施时,对HIS应用程序也进行了升级,进行了读写分离设置,指定报表、查询等只读业务在数据库副本中执行,写操作在主数据库中执行。因为设置了读写分离、优化了应用程序,基本消除了数据库阻塞情况。系统运行速度大幅提升,报表查询时间减少了十倍以上。
结语
利用虚拟化、全闪存、数据库的最新技术,可以充分发挥软硬件性能,以有限的投资实现最大的收益并节省TCO。
标签:   数据库