2

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

有没有办法为我的实例而不是我的部署获取 URL?就像是:

instance1.mydeployment.cloudapp.net?

我认为有些东西会很有帮助。

谢谢你。

4

4 回答 4

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

于 2013-10-23T18:54:32.870 回答
1

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

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

坦率地说,粘性会话的整个想法被打破了。即使您设法处理 ARR 的自动安装和配置,请告诉我当 Azure Fabric 控制器为来宾操作系统更新关闭 1 个实例时会发生什么。由该实例提供服务的用户会发生什么情况?

于 2013-05-21T09:57:50.760 回答
0

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

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

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

于 2013-05-21T14:04:13.647 回答
0

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

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

于 2013-05-21T15:56:36.250 回答