2013-05-21 31 views
2

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

有没有办法让我的实例的URL而不是我的部署? 类似于:

instance1.mydeployment.cloudapp.net?

我觉得有些东西真的很有用。

谢谢。

回答

1

您的方法与Tomcat服务器的sticky session问题非常相似。既然你生活在一个.NET世界,我强烈建议你改变你的架构,不要在这个粘性路由上进行中继。

如果你真的想要实现这个特定的目标(我不想为什么要这样做),可以通过应用程序请求路由。这并不容易,但它是可行的。您可以阅读here about how to install ARR on Azure Web Role。但是您必须保持ARR的自动配置和重新配置,特别是在您添加或移除实例时。

坦白地说,粘性会话的整个想法被打破。即使您设法处理ARR的自动安装和配置,请告诉我Azure结构控制器为Guest OS更新取下1个实例时会发生什么情况。由该实例提供服务的用户会发生什么情况?

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