小编Jor*_*men的帖子

连接到 AWS Aurora 集群时偶尔出现“名称解析暂时失败”

我正在运行 Amazon Web Services RDS Aurora 5.6 数据库集群。有几个 lambda 与这些数据库实例对话,它们都是用 python 编写的。现在一切运行良好,但突然之间,从几天前开始,python 代码有时会开始抛出以下错误:

[ERROR] InterfaceError: 2003: Can't connect to MySQL server on 'CLUSTER-DOMAIN:3306' (-3 Temporary failure in name resolution)

这种情况每 1000 个左右的新连接就会发生 1 个。有趣的是,最近几天我没有接触过整个服务(自从它开始发生以来)。所有 lambda 都使用官方 MySQL 连接器客户端,并使用以下代码段在每次初始化时进行连接:

import mysql.connector as mysql
import os

connection = mysql.connect(user=os.environ['DATABASE_USER'],
                         password=os.environ['DATABASE_PASSWORD'],
                         database=os.environ['DATABASE_NAME'],
                         host=os.environ['DATABASE_HOST'],
                         autocommit=True)
Run Code Online (Sandbox Code Playgroud)

为了排除这是 Python MySQL 客户端中的问题,我添加了以下内容来解析主机:

import os
import socket

host = socket.gethostbyname(os.environ['DATABASE_HOST'])
Run Code Online (Sandbox Code Playgroud)

同样在这里,我有时会收到以下错误:

[ERROR] gaierror: [Errno -2] 名称或服务未知

现在我怀疑这与 DNS 有关,但由于我只是使用集群端点,因此我无能为力。有趣的是,我最近在不同地区也遇到了完全相同的问题,使用相同的设置(Aurora 5.6 集群,python 中的 lambda 连接到它)并且在那里发生了同样的情况。

我已经尝试重新启动集群中的所有机器,但问题似乎仍然存在。这真的是DNS问题吗?我能做些什么来阻止这种情况发生?

python amazon-web-services amazon-rds aws-lambda amazon-aurora

6
推荐指数
1
解决办法
5904
查看次数