对于概念证明文件,我收集了有关 Windows Azure 的事实。剩下 2 个主题我找不到明确的答案。
粘性会话/粘性负载平衡是不可能的,对吗?也许在 Azure 流量管理器 (WATM) 的帮助下有可能?
是否可以解决部署的单个实例,或者它们都在 Azure 的这堵不透明的墙后面?或者至少,一个实例可以在运行时确定它自己的 id 或类似的东西以便将它写入日志吗?
对于概念证明文件,我收集了有关 Windows Azure 的事实。剩下 2 个主题我找不到明确的答案。
粘性会话/粘性负载平衡是不可能的,对吗?也许在 Azure 流量管理器 (WATM) 的帮助下有可能?
是否可以解决部署的单个实例,或者它们都在 Azure 的这堵不透明的墙后面?或者至少,一个实例可以在运行时确定它自己的 id 或类似的东西以便将它写入日志吗?
正如 astaykov 所指出的,角色实例始终位于防火墙之后,您无法从部署外部访问特定实例。
完成粘性会话的唯一方法是构建请求路由器。一旦你运行了这个(例如,在它自己的 Web 或 Worker 角色中,如在同一个部署中的尖牙所指的示例中),该角色就可以访问部署中其他角色的内部端点。
虽然内部端点没有负载平衡,但请求路由器可以枚举内部端点的所有实例(为每个实例获取 ip:port),然后进行自己的负载平衡或路由。
有关使用内部端点的角色间通信示例,请查看此 msdn 文章。
请在下面找到答案:
- 粘性会话/粘性负载平衡是不可能的,对吗?也许在 Azure 流量管理器 (WATM) 的帮助下有可能?
你是对的。与 Windows Azure 没有粘性会话。不,您不能使用流量管理器来帮助您了解粘性。流量管理器只会帮助您跨角色分配负载,而不是实例。请务必区分角色和实例。查看此问题以获取有关角色和实例的更多信息。
2. 能否解决部署的单个实例,或者它们都在 Azure 的这堵不透明的墙后面?或者至少,一个实例可以在运行时确定它自己的 id 或类似的东西以便将它写入日志吗?
您无法解决特定实例。所有这些都在 Windows Azure 负载均衡器和防火墙之后。但是您可以从代码中发现您当前的角色实例。使用RoleEnvironment类的CurrentRoleInstance属性。这将是RoleInstance类型的对象,具有ID属性。
目前还没有明确的答案,但三个最佳选择是:
状态服务器 - 这将允许您从服务器获取加密数据,甚至在您的网络之外。您可以通过在 Web 应用程序或服务器的每个实例上实现状态服务器来做到这一点。
SQL Server(在内存中,仅在 2014 和更新版本中可用)
Azure 上的 Redis 缓存
这三个选项几乎处理了我在过去三年中遇到的任何会话问题。