2

将多实例部署WebRoleWindows Azure Emulator时,模拟器正在运行 WebRole 的多个 IIS Express 实例,每个实例都在保留的本地 IP 上,例如:

 127.255.0.1
 127.255.0.2
 127.255.0.3

问题是我想访问 WebRole,就好像它真的部署在 Azure 上一样,我需要检查Session State实例之间的持久性。

由于 mySession Id存储在 cookie 上,因此每次连接到不同的实例时,我都需要手动将 cookie “注入”到请求中以检查会话数据(因为浏览器将下一个实例的 IP 视为不同的域)。

有没有办法我可以使用hostname(在 Windows 7 机器上)将自己随机指向其中一个 IP?

4

1 回答 1

1

好吧,显然模拟器确实对实例之间的所有请求进行了负载平衡:

单击云项目上的“调试”将打开一个网页,其 IP 为虚拟负载均衡器(通常为 127.0.0.1:80,如果尚未使用)。

然而,首先有两件事误导了我:

  • 1.多个 IIS Express 实例的列表,每个实例都有自己的绑定(附图片)。

在此处输入图像描述

  • 2.隐式亲和力:

    我让我的 Web 应用程序输出了实例 ID,并一直得到相同的实例 ID。原因是(我猜)模拟器强制执行的亲和力(可能使用 cookie 比较)。

结论:

如果您想手动进行负载平衡或自己控制亲和力,您可以利用IIS Server Farming功能(就像我最终所做的那样)来模拟负载平衡。

(Apache/Nginx 作为某种“反向代理”也是一个不错的选择,但我更喜欢坚持使用已经安装和使用的产品)。

于 2013-04-11T11:11:16.600 回答