URL to specific Instance of WebRole in Windows Azure
我的 Windows Azure 部署中有一个 WebRole,有几个实例。在这个角色中,我做了很多缓存。因此,我的客户每次都会向另一个实例询问特定信息,该信息可能未存储在请求的实例上。我所有缓存的信息都有一个"实例"-属性,所以我可以将我在云中的请求路由到特定实例(通过内部端点)。
有没有办法为我的实例而不是我的部署获取 URL?
类似于:
instance1.mydeployment.cloudapp.net?
我认为有些东西会很有帮助。
谢谢。
是的,有。我不确定它来自什么 SDK,但在您的 csdef 文件中,您可以将您的正常端点部分更改为如下所示
1 2 3 4 5 6 7 8 | <Endpoints> <InputEndpoint name="Endpoint1" protocol="http" port="80" localPort="80" /> <InstanceInputEndpoint name="Endpoint2" localPort="80" protocol="tcp"><!--localPort must be 80 for this to work--> <AllocatePublicPortFrom> <FixedPortRange min="10016" max="10020"/> <!--make a range that covers the # instances you might need or scale too - bear in mind azure port limits ~25 --> </AllocatePublicPortFrom> </InstanceInputEndpoint> </Endpoints> |
现在你应该可以同时访问了
http://myapp.cloudapp.net:10016
http://myapp.cloudapp.net:10017
您的方法与 Tomcat 服务器的
如果你真的想实现那个特定的目标(我不知道为什么会这样),可以通过应用程序请求路由来实现。这并不容易,但它是可行的。您可以在此处阅读有关如何在 Azure Web 角色上安装 ARR 的信息。但是您必须维护 ARR 的自动配置和重新配置,尤其是在添加或删除实例时。
坦率地说,粘性会话的整个想法被打破了。即使您设法处理 ARR 的自动安装和配置,请告诉我当 Azure Fabric 控制器关闭 1 个实例以进行来宾操作系统更新时会发生什么。由该实例提供服务的用户会发生什么情况?
看看这个例子:http://blog.maartenballiauw.be/post/2011/10/21/Running-Memcached-on-Windows-Azure-for-PHP.aspx
我知道,它是 PHP 和 memcache 的教程,但它使用 InternalEndpoint 通过 TCP 进行角色通信。也许它可以帮助您了解如何解决您的问题。
我建议您使用分布式 Windows Azure 缓存作为在实例之间共享缓存数据的可靠解决方案。
据我所知,您无法为单个实例获取单独的 URL。
编辑:以下答案可能会有所帮助:
Azure Web 角色内部终结点 - 未负载平衡