azure - 如何在 Azure 中设置两个非负载平衡的 VM Web 服务器,并能够在专用端口上进行通信?

标签 azure

我想在 Azure 中设置以下基础架构。我有一种可能的解决方案,但似乎它在安全架构方面做出了妥协。在 Azure 中是否有比我妥协的解决方法更好的方法?:

  • VM #1:角色:SQL Server 和 IIS。服务器应该有一个唯一的公共(public)IP地址。托管网站将通过公共(public)端口 80 访问,并连接到本地 SQL Server。
  • 虚拟机#2:角色:IIS。服务器应该有一个唯一的公共(public)IP地址。托管网站将通过公共(public)端口 80 访问,并将连接到 VM #1 上的 SQL Server。

到目前为止,这是我的经验:

  • 设置虚拟机 #1 没有问题。
  • 对于 VM #2,我尝试在与 VM #1 相同的云服务中构建它。当我这样做时,它被分配了与 VM #1 相同的公共(public) IP 地址。因此,在这种情况下,在两台计算机上的端口 80 上托管网站不起作用。
  • 接下来,我尝试在不同的云服务中构建 VM #2。这导致分配唯一的公共(public) IP 地址。但是,我无法连接到 VM #1 上的 SQL Server。
    • 我为上述内容尝试过的操作:将 VM #1 SQL Server 设置为混合模式,配置命名的 SQL 帐户(并在本地确认连接),将 SQL 配置为允许传入远程 TCP 连接,为 TCP 端口上的传入连接打开防火墙规则SQL 在下面运行,但到目前为止还无法从 VM #2 连接到它。

我认为可行的一种架构是在 VM #1 上打开公共(public)端口并将其映射到专用 SQL Server 端口。然后,VM #2 可以使用 VM #1 的完全限定公共(public) DNS 名称进行连接。我相信 Azure 还允许将连接限制为 VM #2 的公共(public) IP 地址。

但是,这似乎不太理想,因为现在 SQL 通信正在通过比通常为数据中心设计的更为公共(public)的路由进行路由,并且必须在 VM #1 上打开一个额外的公共(public)端口(即使受到限制)通过 IP 地址,如果没有必要,我宁愿不要暴露该表面区域)。此外,假设通过更公共(public)的网络发送 SQL Server 数据意味着可能需要考虑传输安全性。

研究表明,使用私有(private)端口可能无法在不同云服务上的 2 个虚拟机之间建立连接,尽管我到目前为止发现的信息还不是结论性的。那么,在 Azure 中是否有更好的方法来做到这一点?

最佳答案

单个云服务是一个安全边界,进入它的唯一方法是通过该服务的唯一公共(public) VIP 上的公共(public)(输入)端点。虚拟网络 (VNET) 可用于托管多个云服务,并允许它们之间的私有(private)可见性,而无需通过公共(public)端点。

典型的模型是将 IIS 网站放置在具有公共(public) VIP 的 PaaS 云服务中,并将后端 SQL Server 放置在具有公共(public) VIP 但没有声明公共(public)端点的 IaaS 云服务中。这两种云服务都将托管在同一个 VNET 中。这允许前端 Web 角色实例通过私有(private) VNET 访问后端 SQL Server 实例。 Windows Azure Training Kit 有一个动手实验室。它准确地描述了如何实现这一点。

在这种情况下,我建议将 IIS/SQL Server 组合分开,以便 SQL Server 位于没有公共(public)端点的 IaaS 云服务中(尽管它始终具有公共(public) VIP)。我还建议使用点到站点或站点到站点 VPN,这样您就可以在不暴露公共(public) RDP 端点的情况下访问虚拟机。点到站点 VPN 以开发人员为中心,并且非常易于配置。站点到站点 VPN 更像是一种 IT 事物,因为它需要配置 VPN 路由器,例如 Cisco、Juniper 或 Windows Server。

关于azure - 如何在 Azure 中设置两个非负载平衡的 VM Web 服务器,并能够在专用端口上进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18525698/

相关文章:

azure - 监视计时器触发的 Azure Functions 的不活动情况

azure - 使用 Azure 资源管理器复制 Azure SQL 数据库

c# - Microsoft.Graph.Models.ODataErrors.ODataError 异常。我在哪里可以找到详细信息?

c# - Azure Durable Functions 无法将 HttpRequestMessage 作为 OrchestrationClient.StartNewAsync 的输入传递

azure - Visual Studio Team Services 发布失败 - 无关变量

azure - SQL Server 代理在 Azure 上可用吗?

azure - 尝试登录时找不到租户?

azure - 如何将 Azure Kubernetes 日志导出到存储帐户或从应用程序洞察中查看旧的 Pod 日志?

azure - 以编程方式对现有集合进行范围索引

c# - Azure:网站子域的 Visual Studio 解决方案?