postgresql - 如何避免 AWS EKS 上的连接断开?

标签 postgresql amazon-web-services kubernetes

我有一个在 AWS EKS 上运行的简单单 pod postgresql 部署(代码 here)。我已经使用负载均衡器公开了 pod。

kubectl get services/postgres-lb -o yaml

这会产生以下结果:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled: "false"
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
  creationTimestamp: 2019-04-23T02:36:54Z
  labels:
    app: postgres
  name: postgres-lb
  namespace: default
  resourceVersion: "1522157"
  selfLink: /api/v1/namespaces/default/services/postgres-lb
  uid: <HASHREMOVED?
spec:
  clusterIP: 10.100.94.170
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 32331
    port: 5434
    protocol: TCP
    targetPort: 5432
  selector:
    app: postgres
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - hostname: ...aaadz-example.elb.us-east-1.amazonaws.com

这有效,我可以按预期访问 pod。但是,如果不活跃,与 postgresql 的连接似乎每分钟左右就会断开一次。我很确定至少某些 AWS 负载均衡器会以这种方式“耗尽连接”;因此上面的注释不会耗尽连接。但是,我仍然看到空闲时断开连接的相同行为。

例如,托管数据库然后将其单个端口公开到互联网的 AWS EKS 最佳实践是什么?网络搜索出现了许多变体,但似乎都过于复杂或不能直接应用。我使用过 GCE,发现它在网络和公开端口方面要简单得多,所以我觉得我在 AWS 上遗漏了一些明显的东西。

最佳答案

尝试将 service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout 注释设置为某个更大的值(在 AWS 中默认为 60 秒)。

关于postgresql - 如何避免 AWS EKS 上的连接断开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55810079/

相关文章:

c# - amazon s3 直接从 asp.net 通过 url 上传文件

java - 在本地禁用 Spring Cloud Kubernetes

sql - 如何在同一个表上查询的条件下选择查询

amazon-web-services - 从 AWS ApiGateway 重定向到公共(public) ELB

amazon-web-services - AWS Lambda SQS 集成 : How to force concurrent lambdas

kubernetes - 在 Google Container Engine 上访问 Kubernetes API

apache-spark - 使用Kubernetes或Spark进行深度学习模型部署/培训有什么区别?

mysql - 将 CAP_FIRST 函数从 MySQL 转换为 PostgreSQL

java - Apache 卡宴/PostgreSQL : "too many clients already" error

sql - 计算表的每个 'partition' 中的行数