到Windows Azure中WebRole的特定实例的URL

本文关键字:实例 URL WebRole Windows Azure | 更新日期: 2023-09-27 18:14:27

我有一个WebRole在我的Windows Azure部署与几个实例。在这个角色中,我做了很多缓存。因此,我的客户机每次都向另一个实例请求特定的信息,这些信息可能没有存储在被请求的实例中。我所有的缓存信息都有一个"instance"属性,所以我可以将我的请求路由到云中的特定实例(通过内部端点)。

是否有办法得到一个URL为我的实例,而不是我的部署?例如:

instance1.mydeployment.cloudapp.net ?

我觉得有些事真的很有用。

谢谢。

到Windows Azure中WebRole的特定实例的URL

是的,有。我不确定它来自哪个SDK,但在csdef文件中,你可以将正常端点部分更改为如下所示

 <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服务器的sticky session问题非常相似。因为你生活在。net的世界里,我强烈建议你改变你的架构,不要依赖于这种粘接路由。

如果你真的想实现那个特定的目标(我不知道为什么会有人想要),可以通过应用请求路由实现。这并不容易,但却是可行的。您可以在这里阅读有关如何在Azure Web Role上安装ARR的信息。但是您必须维护ARR的自动配置和重新配置,特别是当您添加或删除实例时。

坦率地说,粘性会话的整个想法是错误的。即使你设法处理ARR的自动安装和配置,告诉我当Azure Fabric控制器为Guest OS Update关闭一个实例时会发生什么。使用该实例服务的用户会发生什么情况?

我建议您使用分布式Windows Azure缓存作为实例之间共享缓存数据的现成健壮的解决方案。

据我所知,您无法为单个实例获得单独的url。

编辑:以下答案可能会有所帮助:Azure Web角色内部端点-非负载均衡

看一下这个例子:http://blog.maartenballiauw.be/post/2011/10/21/Running-Memcached-on-Windows-Azure-for-PHP.aspx

我知道,这是一个PHP和memcache的教程,但它使用内部端点通过TCP进行角色通信。也许它能帮助你理解,如何解决你的问题。