今天早上Sidecar连接突然超时

问题描述 投票:0回答:1
今天早上欧洲中部时间凌晨 2 点左右,我在

production

 的服务失去了数据库访问权限。
已经正常运行了 18 个月了。

我通过外部 IP 访问 GCP postgresql 实例,并使用

sidecar

 充当正在运行的虚拟机上的代理 
hasura

2023/10/06 14:09:26 couldn't connect to "XXX:europe-west1:database-5jdu": dial tcp 34.76.132.64:3307: connect: connection timed out hasura-sidecar-1 | 2023/10/06 14:09:26 New connection for "XXX:europe-west1:database-5jdu"
这是 Docker Compose :

version: '3.8' services: graphql-engine: image: hasura/graphql-engine:v2.5.1 deploy: replicas: 1 restart: always networks: - nginx-proxy - cloud env_file: - .env depends_on: - sidecar nginx: image: nginx restart: always ports: - "80:80" - "443:443" volumes: - ./data/logs:/var/log/nginx - ./data/letsencrypt:/etc/letsencrypt:ro - ./data/www:/var/www:ro - ./data/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./data/nginx/mime.types:/etc/nginx/mime.type:ro - ./data/nginx/snippets:/etc/nginx/snippets:ro - ./data/nginx/conf.d:/etc/nginx/conf.d:ro depends_on: - graphql-engine networks: - nginx-proxy command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" certbot: image: certbot/certbot restart: unless-stopped volumes: - ./data/letsencrypt:/etc/letsencrypt - ./data/www/letsencrypt:/var/www/letsencrypt entrypoint: "/bin/sh -c 'trap exit TERM; while :; do /usr/local/bin/certbot renew; sleep 12h & wait $${!};> sidecar: image: gcr.io/cloudsql-docker/gce-proxy:1.30.0 restart: always networks: - cloud # ports: # - 127.0.0.1:5432:5432 command: "/cloud_sql_proxy -instances=XXX:europe-west1:database-5jdu=tcp:0.0.0.0:5432" networks: nginx-proxy: name: nginx-proxy cloud:
重新启动数据库、代理、VM 没有任何改变。

我坚持认为,这个问题是突然发生的,我已经超过 12 个月没有碰过生产设置了......

有谁知道自今晚以来 PGSQL 托管数据库的访问方式发生了变化吗?

谢谢你的帮助,我的客户被困住了,一直打电话给我,我没有办法帮助他们

谢尔盖

google-cloud-platform docker-compose google-cloud-sql sidecar
1个回答
0
投票
通常,当代理打印错误时

connect: connection timed out

 表示防火墙配置阻止了代理与这 3 个服务之一之间的数据包:

    数据库的IP地址
  • GCP 元数据服务器
  • GCP SQL 管理 API 服务器
我想您已经检查过是否有任何网络防火墙规则发生更改。您还可以在 Google Cloud 控制台中检查该 Cloud SQL 实例的网络配置。我不知道今天 Cloud SQL 产品本身有任何网络变化会影响您的实例。

此外,我注意到您使用的是较旧的 1.30 版本的代理。您会考虑升级到更新版本的代理 v2.7.0 吗?它对日志记录和身份验证进行了一些重要改进,可以更轻松地发现问题。

使用 v2.7.0 的 sidecar 容器定义如下所示:

sidecar: image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.7.0 args: # Enable structured logging with LogEntry format: - "--structured-logs" - "--port=5432" - "XXX:europe-west1:database-5jdu" restart: always networks: - cloud
您可以在

Sidecar示例中找到更多有关Sidecar配置的讨论

© www.soinside.com 2019 - 2024. All rights reserved.