基于私有云的数据库高可用架构实践
基于私有云的数据库高可用架构实践来源:https://comet-project.gitbooks.io背景目前,对互联网行业而言,在数据库应用上大规模使用SQL Server的并不多见,更多的企业基于LAMP架构来使用MySQL数据库。在这样的背景下,业内基于MySqL数据库的应用架构非常活跃,提供了多种选择,而基于SQL Server数据库的架构
基于私有云的数据库高可用架构实践
来源:https://comet-project.gitbooks.io
背景
目前,对互联网行业而言,在数据库应用上大规模使用SQL Server的并不多见,更多的企业基于LAMP架构来使用MySQL数据库。在这样的背景下,业内基于MySqL数据库的应用架构非常活跃,提供了多种选择,而基于SQL Server数据库的架构,可供参考的案例则极其有限。
有别于MySQL在数据库架构设计上的多样性和灵活性,基于SQL Server的高可用架构更多的还是基于SAN存储的集群架构。
同时,在云计算蓬勃发展的今天,各种公有云、私有云及混合云技术在IT基础架构中都得到很好的发展及应用。基于对这种趋势的判断,未来云计算将成为主流。 对于SQL Server数据库的架构而言,如何能够将虚拟化及私有云技术应用到其中是一个可以值得研究的课题。
基于以上,我们希望设计一套针对SQL Server的高可用架构,能够充分利用私有云的相关技术,同时在存储架构上能够有别于传统的SAN网络。
方案设计
对于私有云,我们最先想到的会是开源的OpenStack技术,这估计是目前被应用得最多的开源云计算技术。
在方案设计之初,我们也尝试利用OpenStack来支持SQL Server数据库,尝试着去搭建能够满足我们需求的架构,但在进一步的了解与测试之后,发现并不合适。虽然在OpenStack上搭建Windows虚拟机是可行的,但考虑到OpenStack对Windows的有限的支持能力,以及数据库应用对于IO的高吞吐要求,我们会担心在性能上并不能满足对搭建SQL Server数据库的实际需要;同时,在其它方面也存在很大的局限性和不确定性。
最终我们放弃了开源的技术方案,转而寻找微软技术体系下的可替代方案。
得益于微软对于Windows Server的不断升级与优化,最终借助于Windows Server 2012 R2中的相关技术,我们可以快速搭建一套在Windows平台下的私有云架构,逻辑结构如下:
整体架构分为四层:
-
最上层是我们的应用层,利用 Hyper-V技术来实施虚拟化,能够为具体的业务应用提供满足实际需要的计算资源;同时结合群集服务,我们可以实现虚拟机在不同宿主机之间的动态迁移。
-
第二层为文件系统层,利用SOFS技术来为上层应用提供高可用的共享存储服务。在应用层计算节点与SOFS文件共享服务之间, 将利用SMB3.0协议来提供高效的数据交互服务。在这种架构下,对于Hyper-V虚拟机,其所有文件(包括虚拟机配置,VHD文件,快照)都将存储在SOFS之上。
-
第三层为存储空间层,利用Windows Server 2012最新的WSS技术,将底层的硬件存储资源通过虚拟化技术整合为可用的逻辑磁盘,提供给上层的SOFS来使用,是一种可靠的存储池资源;
-
最下层为物理硬件层,提供了实际的物理空间支持,可支持动态扩展。
核心技术
在这套架构中,我们将要用到Windows Server 2012中的推出的以下几个非常实用的技术及功能:
SMB3.0
Windows标准文件共享协议3.0版本,是SMB协议最大的一次飞跃,可在客户端和服务端之间提供了一种高效的数据交换通道,能够提供与直连存储(DMA)相当的访问性能。
SMB3.0协议支持以下新的特性,为我们构建高可用的应用架构提供极大的灵活性:
-
分布式支持:SMB3.0可以将多台服务器组建成为一个集群,使服务端的所有节点统一起来,共同为客户端节点提供文件访问服务。该集群支持横向扩展,可以动态添加或删除节点。
-
透明故障切换:在集群模式下,SMB3.0提供了故障转移功能,能够在服务端的一个节点出现故障的情况下,自动的将客户端的请求平滑的转移到另一个服务节点之下,实现0的宕机时间,从而保证应用的高可用性。
-
RDMA支持:借助于符合要求的硬件,SMB3.0协议提供了对远程直接内存访问(RDMA)网络适配器的支持,可以让存储的性能与光纤通道相匹配,从而绕过系统的内核直接在内存中进行读写操作,达到与直连存储一样的远程存储速度。该功能使SMB共享能够获得更高的带宽和更低的延迟,从而有效减轻CPU处理 I/O的负载压力,非常适合Hyper-V或SQL Server等读写密集型的应用。
-
SMB多通道:多通道技术能够充分利用客户端及服务端的多个网卡,提供多路径支持,在一个网卡出现故障时快速的进行自动切换,从而有效避免网络故障对整体稳定性的影响。另外在多网络可用的情况,多通道还可以提供网络带宽聚合功能,充分利用硬件资源来提高吞吐量,从而提高应用整体的性能。
WSS
Windows Server 2012下的WSS(Windows Storage Spaces)服务提供了一种针对存储的虚拟化技术,可以对所有由SAS和SATA连接的磁盘进行整合,统一到一个称为存储池的管理单元之中进行分配,通过划分虚拟磁盘来对外提供空间服务,能有效的简化我们对于存储的管理。
WSS具备以下新的特性:
-
高可用性支持
对于从存储池中创建的任何虚拟磁盘,WSS可以提供以下三种类型的高可用性:
-
单镜像
-
为了额外保护的2路或3路镜像
-
奇偶校验 (RAID 5)
在实际项目中可以根据需要,灵活的来进行配置。
-
分层管理
WSS引入了一个全新的,基于策略的自动分层机制,能够有效的利用好不同的存储介质。 比如可以基于使用频率来有效的区分冷、热数据,从而为其分配不同的存储介质。对于经常变更的热数据,将被存储在访问速度更快、价格也相对更高的驱动硬盘之上;而对于不经常变更的冷数据,则会被存储在速度相对较慢,较为廉价的磁盘之上。同时,当冷、热数据的状态发生变化时,WSS可依照预定义的策略来执行数据的自动迁移。
-
数据去重
WSS支持数据去重功能,能有效的去掉重复数据的冗余,从而提高存储设备的使用效率,降低总体的成本开销,提高设备的使用周期。
SOFS
SOFS(Scale-Out File Server)扩展文件服务是微软在Windows Server 2012中推出的一项全新的技术,可以为前端应用(如Hyper-V或SQL Server)提供一种高可用的、可扩展的共享存储服务。其在性能及可靠性上能够提供与传统SAN存储相当的能力。
为了保证高可用性,SOFS需以集群的AA模式来部署,群集中所有的节点都处于在线状态,当有节点出现故障时,来自客户端的访问会话会自动被重定向到其它可用的节点之上。
另外,SOFS服务最终交付给客户端会是一个UNC的网络路径,当不同的客户端访问SOFS时,会根据访问的共享对象,进行负载均衡。可能这一次SMB客户端访问SOFS 的UNC路径是节点1提供的连接,而下一次SMB客户端访问就有可能是节点2来提供连接。
以上几个技术是我们整个架构的核心。
私有云实践
利用以上架构及其所涉及到的相关技术,同时配合一定的硬件资源投入,我们就可以打造一个高可用的私有云架构。
我们能够做到在整体上不存在单点,同时在各级链路均有冗余。
对于应用层的计算节点,我们利用Windows Cluster来保证Hyper-V虚拟机的高可用。
对于文件层的服务节点,我们利用SOFS集群的AA模式及SMB3.0的透明故障转移来保证文件访问的高可用。
对于存储节点,我们利用虚拟磁盘的奇偶校验 (RAID 5)模式来保证数据的完整性。
在网络层面,我们利用硬件来保证足够的冗余。
最终的我们的应用架构如下(部分):
物理空间我们以JBOD的方式来提供,在实际应用中使用了4个MD1200的盘柜,组成了两个逻辑设备组,每个逻辑设备组都会配置一个使用快盘的MD1200和一个使用慢盘的MD1200(用于支持冷热数据的分层管理)。而JBOD设备则通过HBA卡来直连文件服务器。
文件服务器利用两台RD720来搭建,以此组成SOFS的双A节点,配置了SSD硬盘,支持CSV Cache功能,为应用提供了更高的性能。
应用层的宿主机和文件服务器之间使用两台万兆光纤交换机来连接,既保证了网络层面的冗余,同时也能够最大的发挥SMB3.0协议的传输性能。
应用层投入8台服务器作为宿主机,支持Hyper-V的虚拟化。
搭建完成之后,我们充分模拟了各种可能出现的故障,经过一系列的测试,在可用性层面,最终的结果令我们非常满意。
另外,对于整体的性能,由于借助了SMB3.0的多通道及RDMA技术,以及利用到了SSD支持的CSV Cache技术,经测试,对于随机读写可取得一个比较好的IOPS值,完全能够支持SQL Server对于高IO的要求。
扩展性层面,应用层可以通过扩充计算节点来支持更多的Hyper-V虚拟机,而存储空间则可以通过加入更多的SOFS节点来支持横向扩展。
在建设成本方面,初期会有一个中等规模的投入,但远期扩展成本会变的非常低廉,相较于SAN架构,性价比非常高且可控性更强。
整套应用将基于SCOM(System Center Operations Manager)来进行管理,支持高效的配置与调整,易用性较好。
SQL Server的支持
我们已经完成了一个高可用的私有云平台的搭建,但我们最终的目标是支持SQL Server数据库的高可用。
得益于SOFS提供的高性能,我们在私有云架构的基础之上做出一定的调整,就能很快的支持SQL Server数据库的应用。
具体做法:将SQL Server数据库的计算资源运行在Hyper-V的虚拟机之上,而数据库的文件资源则通过SOFS来调用底层的虚拟化存储资源。
最终,Hyper-V虚拟机的高可用性加上SOFS文件系统的高可用性保证了SQL Server数据库整体的高可用性。
在我们的实际项目中,这种架构支持了20多个SQL Server的数据库,共10多TB的数据量,整体运行平稳。
展望
在微软最新的Windows Server 2016中,相关技术又得到了进一步的提升,提供了更加强大的功能,提供了类超融合的技术架构,能够更加高效、快捷的搭建基于Windows的私有云及高可用架构。
如果你的项目中应用到了Windows的相关技术,不妨尝试尝试。
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。
-END-
更多推荐
所有评论(0)