我们正在将一些网站从旧版本的Windows Server 2003 / IIS 6服务器迁移到较新的Windows Server 2008 / IIS 7服务器。 我们必须在没有太多停机的情况下迁移这些网站。
这些网站都与SQL Server和/或MySQL数据库进行通信。 他们也有分配给他们的SSL证书(他们是电子商务网站)。
我们最初的计划是停止旧服务器上的网站几分钟,将网站和数据库复制到新服务器上,并将旧服务器上的IIS 6站点redirect到www2.<domain>.com ,该站点指向新的服务器。 这样,在DNScaching被刷新的时候仍旧到达旧服务器的stream量被redirect到新服务器。
这样做的问题在于,SSL证书适用于www.<domain>.com ,如果访问者在www2.<domain>.com上,则访问者将看到安全警告。 将所有stream量立即指向新服务器是很重要的,因为我们不能有2个独立的数据库或网站副本。
您可能会考虑在旧的Web服务器上使用TCP代理,以将stream量代理到新的Web服务器计算机,而旧的DNSlogging不能超过caching。 根据你处理的stream量,像rinetd这样的东西可能会处理加载罚款。
如果负载不是一个简单的工具,比如运行在旧盒子上的rinetd可以处理的话,你可以搭起一台运行任何各种开源代理( haproxy , balance等)的专用机器来回答旧的IPnetworking服务器,并将TCP代理到新的盒子。
我用Windows的“ stunnel ”来做类似的事情。 在这种情况下,您将绑定到面向Internet的OldServer上的IP地址,并将隧道configuration为将SSL通告给NewServer:443。 然后,您可以将其configuration为在该本地绑定中显示SSL证书对(您必须将其转换为正确的格式,但有相应的工具)。
通过这种方式,到旧服务器的传入连接可以获得与他们期望的相同的SSL,并且整个会话安静且安全地代理到NewServer。
我会考虑使用应用程序请求路由( http://www.iis.net/download/ApplicationRequestRouting )这是一个IIS扩展,基本上提供了代理/路由器,可以作为一个负载平衡器,所以你可以把它安装在IIS 7计算机,并通过它开始路由所有请求,以便旧的IIS 6服务器仍在运行它们,然后使用Web Deploy( http://www.iis.net/download/WebDeploy )将实时服务器同步到新的IIS 7发布内容和证书以及任何其他对象,如GAC,COM等。一旦同步完成,您可以closures路由,并立即请求可以直接由IIS 7提供服务,如果出现问题,您可以始终启用ARR继续在后端路由它们。