我有一台托管多个网站的服务器。
有时我会将网站迁移到第二台服务器上以获取最新的硬件和软件。
第二台服务器具有不同的 IP,这会导致出现问题,即任何不使用我的名称服务器(及其自动更新的 DNS 区域)的用户都必须手动更新 IP(例如,如果用户正在使用 cloudflare)
您能想到有什么方法可以更新我的硬件和软件而无需使用不同的 IP 吗?
答案1
有几种方法可以解决这个问题。您可以使用虚拟机来测试所有这些方法。
最简单的方法是使用 DNS。DNS 的创建就是为了隐藏您的 IP 发生的情况。
IN CNAME
用于所有网站(www.example-site1.com)和IN A
主机(例如 myserver.example.com)。要进行迁移,请准备一个与旧服务器同步的新服务器。确保所有网站在新服务器上运行良好。用于rsync
网页。如果您正在运行 MySQL,则在新服务器上创建一个 MySQL 从属服务器。在迁移期间,停止应用程序(apache、tomcat...),然后更改数据库的角色,以便新服务器成为 MySQL 主服务器。您可以直接交换 IP,但必须小心。如果您有带外管理 (LOM、ILOM、BMC、IPMI),您的生活会更轻松。
您可以使用虚拟化,并可以停止旧的虚拟机并使用新的 IP 启动新的虚拟机。
您可以使用负载平衡器或反向代理(如 TheFiddlerWins 所建议的),它将保存您的公共 IP,并且在内部您将为 Web 服务器使用不同的 IP,并在负载平衡器/反向代理中进行交换。请参阅:http://www.apachetutor.org/admin/reverseproxies和http://www.cisco.com/en/US/products/hw/contnetw/ps792/index.html
如果您有防火墙,您可以执行 DNAT 并动态“更改” IP。
答案2
您是否希望最终让它们指向新 IP?您可以
ProxyPass /oldpath http://newsiteIP/newpath/
针对特定位置使用
或者直接重定向整个网站
<VirtualHost Oldsite:80>
Redirect Permanent / http://newsiteIP/newpath/
</VirtualHost>`
这将为浏览器提供 303,只要人们解析旧 IP,您就可以更改“oldsite”的 DNS 以指向新位置(通过 IP)。最终每个人都会解析到新 IP(假设您更改了 DNS),然后您就可以将其从旧主机中完全删除。