gpt4 book ai didi

nginx - 如何使用 ingress nginx 负载平衡套接字

转载 作者:行者123 更新时间:2023-12-02 10:26:35 25 4
gpt4 key购买 nike

在 kubernetes 中,我部署了 3 个负责套接字的 Pod。

我希望对部署的 Pod 之间的流量进行负载平衡。为此,我使用通过 Helm 安装的 NGINX Ingress Controller ,使用图表 stable/nginx-ingress .

问题是客户端总是连接到同一个 Pod。没有平衡。

为了测试负载平衡,我使用了多部使用数据的电话(2-6 部电话)。他们每个人都打开一个套接字连接。

我有 2 条入口规则。对于我正在使用的套接字:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-socket-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/websocket-services: "node-socket-service"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/upstream-hash-by: "$host"
spec:
tls:
- hosts:
- example.com
rules:
- host: example.com
http:
paths:
- path: /socket.io/
backend:
servicePort: 4000
serviceName: node-socket-service

服务:

apiVersion: v1
kind: Service
metadata:
name: node-socket-service
spec:
type: ClusterIP
selector:
component: node-socket
ports:
- port: 4000
targetPort: 4000

我尝试使用以下命令更改 upstream-hash-by 的值: $binary_remote_addr $remote_addr $host ewma $request_uri,不成功...

我想知道我进行测试的方式是否良好。可能负载平衡运行良好,但需要有更多客户端。

最佳答案

我假设您正在使用以下架构来访问您的 Pod:

入口 Controller ---> kubernetes 服务 ---> kubernetes 部署(POD)

如果是这种情况,那么您已经在使用具有统计循环策略的负载平衡。为此,我得出的结论是,您的部署只有一个副本。通过运行kubectl描述部署$YOUR_DEPLOYMENT检查副本数量。通过运行 kubectlscaledeployment --replicas=5 增加副本数量。

如果您使用不同的架构,我需要检查它以验证负载平衡不起作用的原因。您很可能没有使用 Deployment bud a Pod 来部署容器。

关于nginx - 如何使用 ingress nginx 负载平衡套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com