我们当前的过程是:
构建过程会生成Windows安装程序(msi)。
此设置包括网站部署和数据库脚本-可以创建新数据库或升级现有版本。
质量检查人员需要为其应用程序服务器和数据库服务器创建快照。
然后,质量检查人员在其自己的Windows服务器上运行安装程序。
安装程序将安装网站并更新数据库。
快照的目的是使它们回滚到-比较应用程序不同版本之间的任何行为更改。
当前技术和环境
我们推出了Windows Server 2008r2及更高版本。数据库服务器是Windows Server 2008r2及更高版本以及SQL Server 2008r2。
就所使用的虚拟化而言,我们的质量检查有些混杂。我们的团队有两种工作方式,一种是在服务器上安装SQL,另一种是将传统的应用服务器/ sql服务器分开的过程。这些服务器使用SSD / SAN和SAS驱动器在混合存储上运行,每台服务器通常具有60GB HD,运行4GB内存。 SQL Server具有8gb或更高版本的缺点
缺点
最大的缺点是环境备份的速度-就速度和占用的空间而言。
我的想法
我的想法之一是创建一个应用程序/脚本或使用某种工具同时备份/快照应用程序服务器和MS SQL数据库。
问题
我想知道别人是如何通过与我们经历的过程类似的过程来进行更改的。
另外:
还可以使用其他哪些工具?
您还会提出什么建议?
#1 楼
数据库备份的最大问题是您不能简单地对其快照。拍摄快照时,您首先必须确保数据库不在事务中,否则您将还原到不一致的状态。对于Windows,可以利用Microsoft SQL VSS编写器为数据库快照。您将需要确保在为VM制作快照时,HyperV能够利用此VSS编写器。如果数据集特别大,最好利用存储文件管理器如果文件管理器具有此功能,则可以使用增量克隆,并且可以帮助解决备份时遇到的大小/时间问题。
将新应用程序部署到质量检查方面,有几种方法做这个。一种是拥有一个自动构建系统,例如Jenkins,Travis CI或类似的工具,在提交代码后会自动触发备份和部署。这可以通过利用配置管理工具(例如SaltStack,Puppet或Chef)(它们都在Windows上运行)来完成,如果您能够使用以下脚本编写SQL安装,该配置管理工具可以自动为您设置和配置SQL Server并部署应用程序电源外壳。就个人而言,我建议使用SaltStack,因为它的Reactor可让您在备份/快照完成并触发构建时广播信标(Puppet缺少此功能)。
每次假脱机处理虚拟机的一种方法是利用像The Foreman这样的系统,该系统具有HyperV插件。然后,您可以使用SaltStack(相对于Reactor。这可能是最好的方法,如果您在整个备份完成之前备份系统块,我对此表示怀疑),或者您的自动构建系统(Jenkins / Travis)与Foreman的REST交互请求主机的API被旋转。一旦出现这种情况,它将自动与您的配置管理系统一起签入以安装SQL Server并在新VM中还原快照。如果您将其与自动测试电池结合使用,那么即使所有QA测试都通过了,您甚至可以实现“绿色推”系统,将该过程重复到下一个环境中。
使用像The Foreman这样的中间件的功能是,它将允许您部署到任何虚拟化系统甚至云中,并防止您被锁定在HyperV中并使您的环境更具可移植性。
我相信还有其他方法可以到达那里,但这是我过去用来实现类似部署工作流的一种方法。
评论
听到有关此问题的答案很有趣...我觉得我们也有类似的困境。我会认为该网站是IIS,是Microsoft堆栈吗?使用哪个虚拟化系统?您是说您的质量检查参差不齐,对这种方法的思考还不是很清楚。 (超级V或Vsphere将具有不同的系统来解决此类问题。)
HyperV及其IIS