如何通过GKE over HTTPS来提高Google负载均衡器性能?

时间:2019-10-31 02:14:22

标签: google-cloud-platform google-kubernetes-engine google-cloud-load-balancer

我将Heroku移至Google Cloud Platform,目前正在运行3个n1-highcpu-4节点GKE集群,以测试设置和我的应用程序。使用默认配置(可抢占节点打开除外)构建集群。要创建Ingres,LB(具有NEG平衡)并使用Google托管的SSL证书,我严格遵循以下指南:

https://cloud.google.com/kubernetes-engine/docs/concepts/ingress https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer https://cloud.google.com/kubernetes-engine/docs/how-to/container-native-load-balancing#create_service

在我开始负载测试之前,一切都可以完美地工作。

我们的Web应用程序正在从传感器收集数据,并通过HTTP(S)POST发送给它。我使用loader.io进行测试,该集群每秒处理大约3万个请求,并且通过HTTP的响应时间不到200毫秒。但是,当我切换到HTTPS并重复测试时,性能急剧下降到不到4k RPS,响应时间为1.7s-4s。

我尝试运行更多的Pod,添加新节点;从loader.io向LB发送更多请求;配置保持活动/空闲超时;进行了一些内核调整,但没有一个能够克服4k RPS障碍。甚至用nginx容器替换该应用程序并测试其静态欢迎页面也具有相同的结果。

Stackdriver GCLB指标显示了大约10ms的前端延迟和8s的后端延迟。但是,我的应用程序中的指标表明,请求通常需要20毫秒至700毫秒之间的时间。

ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: collector-non-prod
  annotations:
    kubernetes.io/ingress.global-static-ip-name: non-prod-cluster-ip
#    kubernetes.io/ingress.allow-http: "true"
    networking.gke.io/managed-certificates: "collector-dev,collector-staging"
spec:
  rules:
    - host: events-dev.xxx.dev
      http:
        paths:
          - backend:
              serviceName: collector-dev
              servicePort: 80
    - host: events-staging.xxx.dev
      http:
        paths:
          - backend:
              serviceName: collector-staging
              servicePort: 80

service.yml

apiVersion: v1
kind: Service
metadata:
  name: collector-dev
  labels:
    environment: dev
  annotations:
    cloud.google.com/neg: '{"ingress": true}'
    beta.cloud.google.com/backend-config: '{"ports": {"80":"backend-config-non-prod"}}'
spec:
  type: NodePort
  selector:
    app: collector
    environment: dev
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

backend-config.yml就是这样:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: backend-config-non-prod
spec:
  timeoutSec: 60
  connectionDraining:
    drainingTimeoutSec: 60

对于提高HTTPS性能和减少请求延迟或帮助我进行进一步调查的任何建议,我将不胜感激。我现在被困住了:(谢谢!

0 个答案:

没有答案
相关问题