【发布时间】:2014-01-29 18:54:49
【问题描述】:
我有一个托管 Redis 数据库的天蓝色云服务(服务器)。我还有一个托管在 azure 网站中的网站。我希望网站能够在端口 6379 上与 Redis DB 通信。我知道我可以在我的服务器上为该端口配置一个公共端点,但这会为整个 Internet 打开它。我希望它只为 azure 网站打开(或者更好,只为我的网站打开)。我该怎么做?
【问题讨论】:
标签: azure
我有一个托管 Redis 数据库的天蓝色云服务(服务器)。我还有一个托管在 azure 网站中的网站。我希望网站能够在端口 6379 上与 Redis DB 通信。我知道我可以在我的服务器上为该端口配置一个公共端点,但这会为整个 Internet 打开它。我希望它只为 azure 网站打开(或者更好,只为我的网站打开)。我该怎么做?
【问题讨论】:
标签: azure
Windows Azure 网站与您的云服务处于隔离状态,没有办法弥合这种差距。理想情况下,您可以通过虚拟网络将网站计算机连接到其他 Azure 服务,但 this FAQ 确认您现在不能这样做:
我可以通过虚拟网络使用 Windows Azure 网站吗?
没有。我们不支持带有虚拟网络的网站。
甚至不应该考虑通过互联网打开 Redis,因为它不具备开箱即用的那种安全性,无法公开打开其端口,因为它应该与你的应用程序,所以你真的不想这样做。别介意增加的网络开销,这会影响您通过利用 Redis 之类的东西获得的性能。
我认为,鉴于您当前的配置,最好的选择是添加一个 Web 角色,该角色是同一 Azure 云服务的一部分,并从中运行基于 Web 的应用程序,以便它可以与辅助角色进行通信。它只需要一点点配置就可以完成(即将InternalEndpoint 添加到 Redis Worker 角色)。虽然我意识到 Web 角色不像网站那样提供无摩擦的开发模型,但您必须为这项工作选择合适的工具。
另一个选项,如果你想在虚拟机上设置你的 Redis 而不是直接绑定到云服务,你可以设置一个虚拟网络,把 Redis 虚拟机放在虚拟网络上,然后配置云服务它属于同一个关联组,并将NetworkConfiguration/VirtualNetworkSite 配置部分添加到云服务的.cscfg。
哪种方法更有意义取决于您如何利用 Redis 实例,但后一种方法的主要好处是每次部署云服务时都不会重新创建 Redis 实例,因此,其中的任何数据将在部署之间保持可用。另一个好处是,如果您想跨多个云服务构建和利用 Redis 集群,您可以这样做。
【讨论】: