首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用入口nginx实现套接字负载均衡

如何使用入口nginx实现套接字负载均衡
EN

Stack Overflow用户
提问于 2019-10-11 03:36:03
回答 1查看 1.2K关注 0票数 3

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

我希望在部署的pod之间实现流量负载均衡。为此,我使用了通过Helm安装的NGINX Ingress控制器,使用的是图表stable/nginx-ingress

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

为了测试负载均衡,我使用了使用数据的sevaral电话(2-6个电话)。它们中的每一个都打开一个套接字连接。

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

代码语言:javascript
复制
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

服务:

代码语言:javascript
复制
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,不成功...

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

EN

回答 1

Stack Overflow用户

发布于 2019-10-11 11:37:09

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

入口控制器-> kubernetes服务-> kubernetes部署(POD)

如果是这种情况,那么您已经在使用具有统计轮询策略的负载平衡。因此,我可以得出结论,您的部署只有一个副本。通过运行kubectl describe deployment $YOUR_DEPLOYMENT检查复制副本的数量。通过运行kubectl scale deployment --replicas=5增加复制副本的数量。

如果您使用的是不同的架构,我需要对其进行检查,以验证为什么负载平衡不起作用。最有可能的情况是,您没有使用部署bud和Pod来部署容器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58329994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档