我可以在握手时强制SignalR使用相同的5元组连接吗



场景:

我有一个云服务(不止一个实例(位于Azure负载均衡器(LB(前面。我是OWIN自托管SignalR端点。据我所知,SignalR握手由3个HTTPGet-Reponse(连接、协商、启动(组成。

我遇到的问题是LB将它们路由到不同的机器,所以握手失败了。

我猜我不是第一个遇到这个问题的人,所以有简单的解决方案吗?(最好不引入第三方(。

我想强迫HTTP客户端使用相同的元组(客户端ip、客户端端口(,并祈祷LB也这样做(将5个元组映射到一台机器,直到会话结束(

我对SignalR非常陌生,但如果将负载均衡器哈希模式更改为3元组(源IP、目标IP、协议(或2元组(源IP、目标IP(可以绕过它,那么,你可以这样做。

https://azure.microsoft.com/en-us/blog/azure-load-balancer-new-distribution-mode/

服务定义(.csdef(:

<WorkerRole name="worker-role-name" vmsize="worker-role-size">
  <Endpoints>
    <InputEndpoint name="input-endpoint-name" ... loadBalancerDistribution="sourceIP" />
  </Endpoints>
</WorkerRole>

loadBalancerDistribution的值可以是sourceIP(用于2元组亲和性(,sourceIPProtocol用于3元组one

最新更新