我有大约3台服务器可能已经有近10年的历史了,所有这些服务器都使用代码,为了编程的缘故,可能会考虑最糟糕的做法。
我很害怕改变这个东西(生产服务器在我来到这里之前一直是开发平台,而且我真的想改变这个),但是除了使用这个东西之外,我们没有真正的模拟服务器的方法。
所以我们必须改变它正在运行的网站,我真的不想去“糟糕”。 build议如何做这样的事情,把这三个野兽放到我的桌面上的虚拟机上,或者我可以安全地做一些开发工作,而不要感觉自己是“任务难以置信”的明星,从一根线上悬在激光束上,汗水从我的肩上滴下来面对我小心翼翼地做我的工作吗?
为了让你知道我最恶劣的做法是什么……我们有14个“主要”代码块,一个由7位开发人员在十年之内完成的“请复制自己”代码的14,000行怪物,全部坐在生产Web服务器的根目录下。 我需要改变这一点,我需要认真的修正,但是就像打着卡尔生一边被射精充满了改变精神的毒品一样。 帮帮我?
服务器是windows2000服务器,数据库是MSSQL2008,服务器用PHP和ASP运行IIS。 一百个应用程序我不知道共享服务器空间。 一台服务器pipe理我们的AD。 Sharepoint存在但未被使用。 那里有一些没有人知道的“login”软件。 Postgres出于某种原因正在运行。 防火墙软件在那里。 Exchange 2008在那里。 防病毒服务器在那里…诚实地说,我只是想复制网站。
VMware有一个名为VMware vCenter Converter的工具,专门用于将现有物理机器转换为虚拟环境。
对于XP / Server 2003之前的服务器,我会考虑使用类似Norton Ghost或Acronis的软件来进行备份,然后恢复到虚拟硬件。
在使用复杂的P2V解决scheme冒生产服务器冒险之前,您可能需要尝试使用云端硬盘快照克隆生产服务器。 简而言之,所需的步骤是:
请记住,成像/克隆/ P2V是非常硬盘密集型。 在服务器的非高峰时段尝试做到这一点,以尽量减less对现有应用程序的性能影响。
制作服务器的映像(Clonezilla,ghost4unix)。 尝试使用VMware Converter来复制机器。 如果不能正常工作,请尝试使用Clonezilla镜像恢复到虚拟机。 (或者你使用dd加netcat)。
然后进行清理。 将每个生产服务移动到新的VM。 并将这些虚拟机用作生产服务器。 这样你将testing你是在控制新的服务器。 logging一切。 对于每个prod VM,创build一个QA VM和一个Dev VM。 开发人员将只能访问开发虚拟机。 不要给他们pipe理员权限。 您将使用QA虚拟机来testing他们的新代码。 将代码迁移到QA,并将部署从源代码控制中移植到Prod。
另外 – 如果这些服务器之一是一个DC,不要将它的一个副本虚拟化到一个能够与生产机器(甚至是networking)进行通信的环境中。 坏坏坏坏。 无论如何,你的开发环境应该是分开的,但我认为这是值得重复的。
如果你有一个备用系统,你可以在上面安装vmware,并使用它的p2v转换器来制作物理机器的虚拟副本。 然而,有一些渔获物:
转换过程会在物理机器上安装一个代理程序,而且由于您正在运行Windows 2000,所以您需要在代理程序安装后重新启动服务器。
一旦启动并运行虚拟机,我build议closures物理机器,直到将其放在不同的IP地址和不同的主机名上,以防止IP冲突。
一旦p2v完成,您将需要configuration虚拟机使用vmware的networking接口,而不是从物理服务器复制的虚拟机。 按照这些说明清除不再存在的接口。
vCenter Converter将会做到这一点,特别是像克里斯托弗和克里斯托弗所提到的那样,克隆人也是如此。 安排停机时间,克隆所有的机器,然后作为虚拟机在一个完全独立的networking中备份。 如果有一台DHCP服务器为这些生产机器提供租赁服务,请确保它已被克隆。
主要的问题是能够克隆你正在使用的机器。
在Windows 2000服务器上使用Acronis TrueImage,然后使用VmWare Converter转换图像,我取得了很好的成功。 如果可能的话,你可以在一个非常死的时刻在一夜之间做到 Acronis启动光盘可以将图像保存在networking上,因此您可以确定没有触摸原始服务器上的任何内容。
当然,要恢复和工作,确实要尽可能地从你的生产局域网工作。
只要把一个孤单的pc与vmware以及你要转换的服务器连接起来,如果你需要尝试不同的客户端连接,只需要挂一台交换机连接服务器和客户端,并且确保NONE不会被混淆。
遵循我的build议和所有其他用户,你应该能够build立一个系统,让你“玩”尽可能多,并清理代码。
仔细检查每一个段落,冷静准确,没有任何伤害:)