【问题标题】:Azure cloud service and web sites communication lock downAzure 云服务和网站通信锁定
【发布时间】:2014-01-29 18:54:49
【问题描述】:

我有一个托管 Redis 数据库的天蓝色云服务(服务器)。我还有一个托管在 azure 网站中的网站。我希望网站能够在端口 6379 上与 Redis DB 通信。我知道我可以在我的服务器上为该端口配置一个公共端点,但这会为整个 Internet 打开它。我希望它只为 azure 网站打开(或者更好,只为我的网站打开)。我该怎么做?

【问题讨论】:

    标签: azure


    【解决方案1】:

    Windows Azure 网站与您的云服务处于隔离状态,没有办法弥合这种差距。理想情况下,您可以通过虚拟网络将网站计算机连接到其他 Azure 服务,但 this FAQ 确认您现在不能这样做:

    我可以通过虚拟网络使用 Windows Azure 网站吗?

    没有。我们不支持带有虚拟网络的网站。

    甚至不应该考虑通过互联网打开 Redis,因为它不具备开箱即用的那种安全性,无法公开打开其端口,因为它应该与你的应用程序,所以你真的不想这样做。别介意增加的网络开销,这会影响您通过利用 Redis 之类的东西获得的性能。

    我认为,鉴于您当前的配置,最好的选择是添加一个 Web 角色,该角色是同一 Azure 云服务的一部分,并从中运行基于 Web 的应用程序,以便它可以与辅助角色进行通信。它只需要一点点配置就可以完成(即将InternalEndpoint 添加到 Redis Worker 角色)。虽然我意识到 Web 角色不像网站那样提供无摩擦的开发模型,但您必须为这项工作选择合适的工具。

    另一个选项,如果你想在虚拟机上设置你的 Redis 而不是直接绑定到云服务,你可以设置一个虚拟网络,把 Redis 虚拟机放在虚拟网络上,然后配置云服务它属于同一个关联组,并将NetworkConfiguration/VirtualNetworkSite 配置部分添加到云服务的.cscfg。

    哪种方法更有意义取决于您如何利用 Redis 实例,但后一种方法的主要好处是每次部署云服务时都不会重新创建 Redis 实例,因此,其中的任何数据将在部署之间保持可用。另一个好处是,如果您想跨多个云服务构建和利用 Redis 集群,您可以这样做。

    【讨论】:

    • 谢谢德鲁!我想我需要阅读有关 Azure 概念的更多信息。现在我在虚拟机上安装了 Redis。但它是作为云服务托管的(根据我的 azure 门户),服务器大小为 M。你的意思是我可以用另一种方式运行这个虚拟机吗?
    • 我在这里找到了一个很好的解释:windowsazure.com/en-us/documentation/articles/…
    • 可以让它在 WorkerRole 中运行,如果您现在正在运行它并且对此感到满意,但是您需要重新定义该工作者角色,以便它与 VPN 属于同一关联组的一部分,并且显然向其添加了相同的 NetworkConfiguration/VirtualNetworkSite 部分。否则,您可以直接创建一个虚拟机,如果这对您的团队更有吸引力,您甚至可以选择运行 Linux 版本的 Redis。
    • 我是微软人 :) 我对 Linux 了解不多。我现在有一个来自 Microsoft 的 Redis fork。你知道是否有任何 .net Redis 客户端可以用于 Linux Redis 服务器?
    • 我也是,只是想我会把它扔在那里作为仅供参考。 :) AFAIK,任何 Redis 客户端 impl 都应该用于任何 Redis 服务器 impl。版本才是最重要的,只要您使用兼容的客户端和服务器版本,您就应该是 gtg。
    猜你喜欢
    • 2012-12-22
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多