Azure sticky会话/sourceIP负载平衡和实例探测

Azure sticky会话/sourceIP负载平衡和实例探测,azure,load-balancing,Azure,Load Balancing,我们有一组实例在Azure上作为workerroles运行。它们包含依赖于国家的服务。用户通过Socket.IO进行连接 我们需要stickySessions,这样客户机就可以与单个实例以及运行在该实例上的服务保持一致。如果用户被重新路由到另一个实例,则客户端将中断 我的问题: LB分发模式sourceIP将允许粘性会话。但只有在平衡实例集不变的情况下(添加/删除实例)。当探测到实例时,集合是否会更改?这对当前用户意味着什么?他们会改道吗 “新用户”到底是什么?SourceIP使用2元组哈希。当

我们有一组实例在Azure上作为workerroles运行。它们包含依赖于国家的服务。用户通过Socket.IO进行连接

我们需要stickySessions,这样客户机就可以与单个实例以及运行在该实例上的服务保持一致。如果用户被重新路由到另一个实例,则客户端将中断

我的问题:

LB分发模式sourceIP将允许粘性会话。但只有在平衡实例集不变的情况下(添加/删除实例)。当探测到实例时,集合是否会更改?这对当前用户意味着什么?他们会改道吗

“新用户”到底是什么?SourceIP使用2元组哈希。当探测标记实例不健康时,是否可以依靠位于同一系统上的客户端不被标记为“新”?它们仍将路由到该实例吗

最后。是否有任何可靠且简单的方法来实现粘性会话?

短篇故事: 任何已经建立的流量都将持续,当然,除非目的地本身死亡;这只是关于新的流量。Azure Load Balancer不支持将所有流从特定源固定到特定VM,而不管后端池的运行状况如何,也不支持sourceIP分发模式。如果这是您所需要的,您可以使用武库中的另一个工具,也可以通过让每个节点接触到实际保持状态的地方来解决这个问题

请阅读下面的长篇故事以了解详细信息

长话短说: 创建Azure负载平衡器函数时,SDN堆栈使用协议头值来计算哈希。分发模式选择控制用于计算哈希的协议头值:

  • 5元组:源IP、源端口、目标IP、目标端口、, 协议
  • 2元组:源IP,目标IP
2元组是指分布式模式sourceIP。由于在计算时,目标IP始终是VIP的IP,因此只有源IP控制哈希。由于不考虑端口号,来自给定源IP地址的任何会话都将产生相同的哈希

散列确定新会话到达的位置。会话将在该目标上持续,直到流终止

如果池因节点变为健康或病态而更改,则哈希将更改并仅影响新的流

任何正在进行的会话都会停留在任何位置。你不能保证一个给定的源在一段时间内总是以一个不断变化的池结束相同的目的地

下面是一个例子:

假设您有一个场景,其中在LB配置后面的池中有VM的a、B、C。打开sourceIP

来自客户端X的第一个会话将进入,并在B上着陆。只要池保持不变(所有节点保持健康且病节点未治愈),来自X的任何其他会话也将在B上着陆

当池因节点的运行状况从“健康”更改为“生病”或从“健康”更改为“生病”而更改时,来自客户端X的新会话可能会在B以外的节点上登录。B上已存在的任何会话都会保留在B上

当然,除非B本身已死亡,否则在这种情况下,已建立的会话将超时。

短篇故事: 任何已经建立的流量都将持续,当然,除非目的地本身死亡;这只是关于新的流量。Azure Load Balancer不支持将所有流从特定源固定到特定VM,而不管后端池的运行状况如何,也不支持sourceIP分发模式。如果这是您所需要的,您可以使用武库中的另一个工具,也可以通过让每个节点接触到实际保持状态的地方来解决这个问题

请阅读下面的长篇故事以了解详细信息

长话短说: 创建Azure负载平衡器函数时,SDN堆栈使用协议头值来计算哈希。分发模式选择控制用于计算哈希的协议头值:

  • 5元组:源IP、源端口、目标IP、目标端口、, 协议
  • 2元组:源IP,目标IP
2元组是指分布式模式sourceIP。由于在计算时,目标IP始终是VIP的IP,因此只有源IP控制哈希。由于不考虑端口号,来自给定源IP地址的任何会话都将产生相同的哈希

散列确定新会话到达的位置。会话将在该目标上持续,直到流终止

如果池因节点变为健康或病态而更改,则哈希将更改并仅影响新的流

任何正在进行的会话都会停留在任何位置。你不能保证一个给定的源在一段时间内总是以一个不断变化的池结束相同的目的地

下面是一个例子:

假设您有一个场景,其中在LB配置后面的池中有VM的a、B、C。打开sourceIP

来自客户端X的第一个会话将进入,并在B上着陆。只要池保持不变(所有节点保持健康且病节点未治愈),来自X的任何其他会话也将在B上着陆

当池因节点的运行状况从“健康”更改为“生病”或从“健康”更改为“生病”而更改时,来自客户端X的新会话可能会在B以外的节点上登录。B上已存在的任何会话都会保留在B上

当然,除非B本身死了,在这种情况下,这些已建立的会话将超时