场景:我有2个客户。假设客户端A和客户端B。两个客户端都有一个公共ID(例如UUID)。配置我的应用程序(它是c ++),就像两个客户端都必须在一台服务器上进行连接一样。
我打算在应用程序前面添加(AWS)ELB / nginx。因此,问题是当我们收到来自客户端A的请求时,它将通过ELB并连接到其中一个节点。当客户端B将请求发送给ELB时,我不确定它是否将连接到客户端A连接的同一节点。客户端B应该在连接客户端A的那个节点上进行连接。
在“我的场景”中,两个客户端都应连接到同一节点。 客户总是成对出现,并具有共同的ID。 在这种情况下应该使用什么?
我的应用程序已被docker化,并且我正在使用kubenetes进行部署。
答案 0 :(得分:0)
您可以配置Nginx Ingress Controller
并使用annotation
:
nginx.ingress.kubernetes.io/server-snippet
您的Ingress
可能如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/server-snippet: |
set $agentflag 0;
if ($http_user_agent ~* "(Mobile)" ){
set $agentflag 1;
}
if ( $agentflag = 1 ) {
return 301 https://m.example.com;
}
请在Github上查看Annotations for ingress-nginx的详细说明。
如果您有多个节点,则可以使用Node affinity
在同一节点上安排POD
。也可以使用Node affinity
的简单版本nodeSelector
来实现。