Windows Azure中特定WebRole实例的URL

时间:2013-05-21 09:06:51

标签: c# wcf azure cloud azure-web-roles

我的Windows Azure部署中有一个带有一些实例的WebRole。在这个角色中我做了很多缓存。因此,我的客户端每次都会询问另一个实例以获取特定信息,这些信息可能未存储在请求的实例上。我的所有缓存信息都有一个“实例”属性,因此我可以将我在云中的请求路由到特定实例(通过内部端点)。

有没有办法获取我的实例的URL,而不是我的部署? 类似的东西:

instance1.mydeployment.cloudapp.net?

我觉得有些事情会有所帮助。

谢谢。

4 个答案:

答案 0 :(得分:3)

是的,有。我不确定它是什么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

答案 1 :(得分:1)

您的方法与Tomcat服务器的sticky session问题非常相似。由于您生活在.NET世界中,我强烈建议您将架构更改为不在此粘性路由中继。

如果你真的想要实现那个特定的目标(我无法想象为什么会有人想要),可以通过应用程序请求路由来实现。这并不容易,但它是可行的。你可以阅读here about how to install ARR on Azure Web Role。但是您必须维护ARR的自动配置和重新配置,尤其是在添加或删除实例时。

坦率地说,粘性会话的整个想法都被打破了。即使您设法处理ARR的自动安装和配置,请告诉我当Azure Fabric控制器为Guest OS Update关闭1个实例时会发生什么。该实例所服务的用户会发生什么?

答案 2 :(得分:0)

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

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

编辑:以下答案可能会有所帮助: Azure Web Role Internal Endpoint - Not Load Balanced

答案 3 :(得分:0)

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

我知道,它是PHP和memcache的教程,但它使用InternalEndpoint通过TCP进行角色通信。也许它可以帮助您理解,如何解决您的问题。