我想在 Azure 中设置以下基础结构。我有一种可能的解决方案,但它似乎在安全架构上做出了妥协。在 Azure 中是否有比我妥协的解决方法更好的方法来做到这一点?:
- VM #1:角色:SQL Server 和 IIS。服务器应该有一个唯一的公共 IP 地址。托管网站将通过公共端口 80 访问,并连接到本地 SQL Server。
- VM #2:角色:IIS。服务器应该有一个唯一的公共 IP 地址。托管网站将通过公共端口 80 访问,并将连接到 VM #1 上的 SQL Server。
到目前为止,这是我的经验:
- 设置 VM #1 没有问题。
- 对于 VM #2,我尝试在与 VM #1 相同的云服务中构建它。当我这样做时,它被分配了与 VM #1 相同的公共 IP 地址。因此,在这种情况下,在两台机器上的端口 80 上托管网站都不起作用。
- 接下来,我尝试在不同的云服务中构建 VM #2。这导致分配了唯一的公共 IP 地址。但是,我无法连接到 VM #1 上的 SQL Server。
- 我为上述尝试过的事情:VM #1 SQL Server 设置为混合模式,指定的 SQL 帐户已配置(并在本地确认连接),SQL 配置为允许传入的远程 TCP 连接,为 SQL 运行的 TCP 端口上的传入连接打开防火墙规则,但到目前为止还无法从 VM #2 连接到它。
我认为可行的一种架构是在 VM #1 上打开一个公共端口并将其映射到私有 SQL Server 端口。然后 VM #2 可以使用 VM #1 的完全限定公共 DNS 名称进行连接。我相信 Azure 也会允许将连接限制到 VM #2 的公共 IP 地址。
然而,这似乎不太理想,因为现在 SQL 通信正在通过比通常为数据中心设计的更多的公共路由进行路由,并且必须在 VM #1 上打开一个额外的公共端口(即使受 IP 地址限制) ,如果没有必要,我宁愿不暴露该表面积)。此外,假设通过更公共的网络发送 SQL Server 数据意味着可能需要考虑传输安全性。
研究表明,使用私有端口可能无法在不同云服务上的 2 个虚拟机之间建立连接,尽管我目前发现的信息尚无定论。再说一次,在 Azure 中有没有更好的方法来做到这一点?