Случайный «временный сбой в разрешении имен» при подключении к кластеру AWS Aurora - PullRequest
0 голосов
/ 01 октября 2019

Я использую кластер базы данных Amazon Web Services RDS Aurora 5.6. Есть пара лямбд, говорящих с этими экземплярами базы данных, все написаны на python. Теперь все работало хорошо, но внезапно, поскольку пару дней назад код Python иногда начинает выдавать следующую ошибку:

[ОШИБКА] InterfaceError: 2003: Canне подключаться к серверу MySQL в 'CLUSTER-DOMAIN: 3306' (-3 Временный сбой в разрешении имени)

Это происходит в 1 из 1000 новых подключений или около того. Что интересно, я не касался всего этого сервиса в последние пару дней (с тех пор как он начал происходить). Все лямбды используют официальный клиент 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)

Чтобы исключить, что это проблема в клиенте Python MySQL, я добавил следующее, чтобы решить хост:

import os
import socket

host = socket.gethostbyname(os.environ['DATABASE_HOST'])

Также здесь иногда я получаю следующую ошибку:

[ОШИБКА] gaierror: [Errno -2] Имя или служба не известны

Теперь я подозреваю, что это как-то связано с DNS, но, поскольку я просто использую конечную точку кластера, я мало что могу с этим поделать. Что интересно, я также недавно столкнулся с точно такой же проблемой в другом регионе, с такой же настройкой (кластер Aurora 5.6, лямбда в питоне, подключенном к нему), и там происходит то же самое.

Я попытался перезапустить все машины в кластере, но проблема все еще возникает. Это действительно проблема DNS? Что я могу сделать, чтобы это не произошло?

...