我有一个azure云服务(服务器),我托管Redis数据库。我还有一个在azure网站上托管的网站。我希望网站能够在端口6379上与Redis数据库通信。我知道我可以在我的服务器上为该端口配置一个公共端点,但这会为整个Internet打开它。我希望它只为天蓝色的网站打开(甚至更好,只为我的网站)。我怎么能这样做?
答案 0 :(得分:0)
Windows Azure网站位于与您的云服务分开的隔离气泡中,无法弥合这一差距。理想情况下,您可以通过虚拟网络将网站计算机连接到其他Azure服务,但this FAQ确认您现在无法执行此操作:
我可以将Windows Azure网站与虚拟网络一起使用吗?
没有。我们不支持具有虚拟网络的网站。
在互联网上打开Redis甚至不应该被认为是因为它不具备您想要开箱即用的安全性,因为它与共同位于你的申请,所以你真的不想那样做。不用担心增加的网络开销会因为利用像Redis这样的东西而获得预期的性能。
我认为,鉴于您当前的配置,最好的选择是添加一个Web角色,该角色属于同一个Azure Cloud Service,并运行基于Web的应用程序,以便它可以与worker角色进行通信。它只需要一点点配置就可以实现(即向Redis Worker角色添加InternalEndpoint)。虽然我意识到Web角色不像网站那样提供无摩擦的开发模型,但您必须为工作选择合适的工具。
另一个选择是,如果要在VM上设置Redis而不是直接将其绑定到Cloud Service,则可以设置虚拟网络,将Redis VM放在虚拟网络上,然后配置Cloud Service,它是同一个关联组的一部分,并将NetworkConfiguration/VirtualNetworkSite
配置部分添加到Cloud Service的.cscfg中。
哪种方法更有意义取决于您如何利用Redis实例,但后一种方法的主要好处是每次部署Cloud Service时都不会重新创建Redis实例,因此,其中的任何数据都不会重新创建将在部署之间保持可用。另一个好处是,如果您希望跨多个云服务构建和利用Redis群集,则可以实现此目的。