我计划将一个 Wordpress 网站迁移到 Cloudways 上的两个虚拟服务器。这是一个相对繁忙的网站(每周大约有 500,000 名访问者),所以我想将应用程序(和缓存等)拆分到一个 Vultr 实例上,将 MySQL 放在另一个实例上。
通常情况下,我会让这两个服务器通过本地网络互相通信,并将 MySQL 服务器从 DMZ 中移除。由于它们位于同一个网络上,因此延迟会降到最低。
但是,Cloudways 不支持这种方式的部署。因此,两台服务器必须通过公共 IP 进行通信。它们不会在同一个本地网络上。尽管它们位于同一个数据中心位置。
我意识到这可能会将 MySQL 服务器暴露到互联网上,而通常我希望保持它不暴露。
我想要咨询一下这个设置是否:
1)可能会有太多的延迟,从而违背将应用程序和数据库拆分到单独的服务器上的目的(即获得性能提升)。
2) 这是否会带来任何重大的安全隐患。我推测我们可以在 MySQL 服务器上设置防火墙,只允许来自应用程序 (Wordpress) 服务器 IP 地址的连接。对吗?这样应该可以最大限度地降低安全风险。
由于之前没有以这种方式进行设置,因此我想请比我更有经验的人来运行这个程序,以确保我不会忽视潜在的问题。
答案1
1)可能会有太多的延迟,从而违背将应用程序和数据库拆分到单独的服务器上的目的(即获得性能提升)。
这取决于您的数据中心如何处理流量。通常,他们会设置路由,不让同一数据中心内两台机器之间的流量通过外部路由器,因为那样毫无意义,只会增加(如您所说)不必要的延迟。您可以想象其他客户也有类似的情况。您可以询问数据中心的联系人,但我 99% 肯定您可以预期的延迟将类似于直接 LAN 连接。根据我过去的经验,属于同一数据中心的 IP 之间的通信从未离开数据中心(除非客户明确以这种方式路由)。
2) 这是否会带来任何重大的安全隐患。我推测我们可以在 MySQL 服务器上设置防火墙,只允许来自应用程序 (Wordpress) 服务器 IP 地址的连接。对吗?这样应该可以最大限度地降低安全风险。
与任何可直接访问互联网的机器一样,它确实存在安全隐患。您绝对应该在 MySQL 服务器上设置防火墙,而且绝对不应该只依赖源的主机名/IP/MAC,因为欺骗仍然存在(永远不要假设您的提供商/数据中心会为您处理这些事情)。这基本上意味着您应该始终设置加密,无论是在 MySQL 连接中还是在点对点 VPN 中(我会这样做,因为我很偏执)两者兼而有之,两台服务器之间永远不应该存在任何形式的未加密连接。在这方面,将 SQL 服务器视为位于世界另一端的服务器。
此外,您可以向数据中心寻求支持。大多数数据中心除了提供您自己的解决方案外,还提供路由/防火墙/ DDoS 保护解决方案,也许可以减轻一些负载。