Не ўдаецца падключыцца да экземпляра RDS ад асобніка EC2

З EC2 напрыклад я-78a8df00, я спрабую падключыцца да RDS асобніка MySQL. ************. Us-east-1.rds.amazonaws.com. Яны абодва ва Усходнім рэгіёне ЗША. Я дадаў групы бяспекі, напрыклад EC2 (Sg - ********) да групы бяспекі RDS, але гэта не дапамагло. Гэта, як уяўляецца, пытанне брандмаўэра/DNS, як гэта таймаўт пры выкананні гэтай каманды:

[email protected]:~$ MySQL -h mysql.************.us-east-1.rds.amazonaws.com
<�Р> ERROR 2003 (HY000): Немагчыма падлучыцца да сервера MySQL на (110) </'MySQL ************ us-east-1.rds.amazonaws.com.'. р>

Я магу падлучыцца да RDS напрыклад штрафу ад маёй лакальнай машыны з выкарыстаннем той жа лініі, што і вышэй. Я спрабаваў розныя рашэнні на форуме, але тыя не дапамагаюць.

28
Ці з'яўляюцца адкрытыя парты на групу бяспекі для скрынкі ec2, каб забяспечыць злучэнне з РДС?
дададзена аўтар david99world, крыніца
Так, я дадаў групы бяспекі, напрыклад EC2 (Sg - **) у групу бяспекі RDS.
дададзена аўтар Mark Shust, крыніца
Калі я трасіроўка ад EC2 імя хаста RDS, гэта часу чакання: .... Трасіроўка тузда **** us-east-1.rds.amazonaws.com для адсочвання маршруту MySQL **** мы ўсход-1. rds.amazonaws.com (10,206. **. ***), 30 хмель макс, 60 байт пакеты ^ C * 1 * 2 * 3 * 4 * 5 * * * Гэта прыводзіць мяне да думкі, гэта праблема DNS/брандмаўэра. Тым не менш, у мяне ёсць правіла для групы бяспекі RDS, каб дазволіць злучэння з гэтай групы бяспекі EC2.
дададзена аўтар Mark Shust, крыніца
Я таксама дадаў CIDR 0.0.0.0/0 у групу бяспекі RDS, каб пацвердзіць ўсе могуць атрымаць доступ да гэтай базы дадзеных MySQL. Да гэтага часу не ісці. Гэта кажа мне DNS ня маршрутызацыі правы на правільнае імя хаста RDS ад майго асобніка EC2. Хто-небудзь яшчэ ёсць гэтая праблема?
дададзена аўтар Mark Shust, крыніца
Так што я зрабіў «капаць» на імя хаста з-за межаў AWS і ўнутры асобніка EC2. Гэта, як уяўляецца, правільна маршрутызацыі іх унутраны IP з асобніка EC2, але знешні IP звонку яго. Ці ёсць дыягнастуе сцяг, я магу дадаць да радка Падлучэнне да MySQL, каб убачыць, што на самой справе адбываецца, або некаторыя іншыя падрабязныя пратакаляванне? Гэта вельмі складана.
дададзена аўтар Mark Shust, крыніца
Гэта, безумоўна, цяпер, здаецца, звязаны з брандмаўарам. Спрабаваў telnetting ў імя хаста непасрэдна і гэта тайм-аўт. Гэта падключэнне выдатна ад майго мясцовага Dev машыны, але гэта тое, што адбываецца ад асобніка EC2 :. Телнет MySQL **** us-east-1.rds.amazonaws.com 3306 Спроба 10.206 ** *** ... ... телнет: Не ўдаецца падключыцца да выдаленага хасту: падлучэнне скончыўся
дададзена аўтар Mark Shust, крыніца

7 адказы

У мяне была аналагічная праблема, калі я закруціў новы асобнік EC2, але не змяніць налады ў групе бяспекі RDS ўязнога IP-адрас дазволенага для падлучэння да порта 3306 майго асобніка RDS.

Заблытаны біт быў варыянтам у RDS прыборнай панэлі, званы групай бяспекі. Вам не трэба, каб вырашыць гэтую праблему.

Што вам сапраўды трэба, гэта зайсці ў спіс асобнікаў RDS, націсніце на экзэмпляры, які вы спрабуеце падключыцца, а затым націсніце на сярэдняй ўкладцы знайдзіце <�моцны> <�моцны /> падзел Бяспека і Сетка і націсніце на назву групы бяспекі.

Screenshot of RDS Dashboard

Гэта павінна адкрыць новую ўкладку або акно браўзэра з падрабязнай інфармацыяй пра гурт бяспекі. Знайдзіце некалькі ўкладак у ніжняй часткі, выберыце ўкладку Inbound і націсніце кнопку Змяніць .

Screenshot of VPC Security groups

Змена значэння на IP-адрас вашага асобніка EC2 або IPv4 CIDR блокаў, напрыклад,

174.33.0.0/16

Каб атрымаць гэта значэнне, вы можаце SSH ў асобнік і запусціць Ifconfig або запусціць EC2 менеджэр ў браўзэры і знайдзіце значэнне Прыватныя IP-адрасы у вашых дэталях асобніка.

39
дададзена
Дзякуй, гэта працуе для мяне.
дададзена аўтар Jeemusu, крыніца
Нічога сабе !!!! Вялікі дзякуй, мой сябар, пасля таго, як гадзіны і гадзіны працы з гэтым матэрыялам без поспеху я проста зрабіў, як вы сказалі, і «вуаля», гэта працуе !!!!! Дзякуй!! Я ратую свой адказ, так што, калі я атрымліваю гэтую праблему яшчэ раз я яго тут :)
дададзена аўтар franzmobile, крыніца
Дзякуй, гэта працуе выдатна! Цікава, чаму толькі стварыўшы новую групу бяспекі не працуе, хоць для мяне. Я думаю, што я непаразуменне, якія групы бяспекі на самай справе.
дададзена аўтар Abs, крыніца
Дзякуй, гэта працуе як шарм :)
дададзена аўтар Jason, крыніца

Дадатковая інфармацыя для людзей, якія могуць сутыкнуцца падобнымі праблемамі, спрабуючы падлучыцца да RDS або RedShift:

<�Моцны> 1) Праверце групы бяспекі

Праверце групу бяспекі для асобніка RDS дазваляе атрымаць доступ з групы бяспекі зыходнага сервера належыць (ці яго IP дадаецца непасрэдна, калі знешнія па адносінах да АМС). Група бяспекі вы павінны глядзець на гэта адзін паказаны ў экзэмпляры RDS атрыбутаў з RDS кансольнага інтэрфейсу (пад назвай «група бяспекі»).

NOTE: Database security groups might be different from AWS EC2 security groups. If your RDS instance is in classic/public EC2, you should check in the "database security group" section of the RDS UI. For VPC users, the security group will be an normal VPC security group (the name sg-xxx will be listed in the RDS instance's attributes).

<�Моцны> 2) Пацвярджэнне DNS не з'яўляецца праблемай.

Amazon выкарыстоўвае паасобны DNS, таму DNS пошук знешні ў адносінах да АМСУ будзе вяртаць грамадскасці IP у той час як пошук ўнутраных ў адносінах да АМСУ будзе вяртаць прыватны IP. Калі вы падазраяце, што гэта праблема DNS, у вас пацвердзілі розны IP-адрас вяртаецца з розных зон даступнасці? Калі розны АЦК атрымаць розны IP-адрас, вам трэба будзе звязацца са службай падтрымкі AWS.

<�Моцны> 3) Праверце падлучэнне да сеткі шляхам усталявання злучэння сокета.

Такія інструменты, як tracepath і трасіроўка, хутчэй за ўсё, не дапамогуць, бо RDS ў цяперашні час зніжаецца ICMP трафік.

Тэст падлучэння порта, спрабуючы ўсталяваць злучэнне сокета да экземпляра RDS на порт 3306 (MySQL або 5432 для Postgres). Пачніце з пошуку IP асобніка RDS і з выкарыстаннем альбо телнет або пс:

telnet x.x.x.x 3306
nc -vz x.x.x.x 3306

a) If your connection attempt isn't successful and immediately fails, the port is likely blocked or the remote host isn't running a service on that port. you may need to engage AWS support to troubleshoot further. If connecting from outside of AWS, try to connect from another instance inside AWS first (as your firewall might be blocking those connections).

b) If your connection isn't successful and you get a timeout, packets are probably being dropped/ignored by a firewall or packets are returning on a different network path. You can confirm this by running netstat -an | grep SYN (from a different CLI window/session while running and waiting for the telnet/nc command to timeout). Connections in the SYN state mean that you've sent a connection request, but haven't received anything back (SYN_ACK or reject/block). Usually this means a firewall or security group is ignoring or dropping packets.

Праверце, каб пераканацца, што вы не выкарыстоўваеце IPTables або NAT шлюза паміж вашым хастом і экзэмпляр RDS. Калі вы знаходзіцеся ў VPC, таксама пераканайцеся, што вы дазваляеце выхад/выходны трафік ад хаста.

c) If your socket connection test was successful, but you can't connect with a MySQL client (CLI, workbench, app, etc.), take a look at the output of netstat to see what state the connection is in (replace x.x.x.x with the actual IP address of the RDS instance):

<�Код> NetStat -an | Grep х.х.хого

Калі вы атрымлівалі злучэнне ўстаноўлена пры выкарыстанні Telnet або NC, але вы бачыце стан «SYN» пры выкарыстанні кліента MySQL, вы можаце быць запушчаны ў пытанні MTU.

RDS, у той час гэта напісана, можа не падтрымліваць ICMP пакеты, якія выкарыстоўваюцца для PMTUD ( https://en.wikipedia.org/ вікі/Path_MTU_Discovery # Problems_with_PMTUD ). Гэта можа быць праблемай, калі вы спрабуеце атрымаць доступ да RDS або RedShift, што гэта ў VPC ад класічнага ec2 напрыклад, праз ClassicLink. Паспрабуйце паменшыць MTU з наступным, а затым зноў тэставання:

sudo ip link show
# take note of the current MTU (likely 1500 or 9001)
sudo ip link set dev eth0 mtu 1400

Калі ніжні MTU працаваў, пераканайцеся, каб сачыць за падтрымку кліентаў AWS для дапамогі і паказаць, што вы бачыце праблему MTU пры спробе падлучыцца да экземпляра RDS. Гэта можа адбыцца, калі TCP-пакеты абгорнутыя інкапсуляцыі для тунэлявання, што прыводзіць да больш нізкай карыснай MTU для пакетных даных/карыснай нагрузкі. Зніжэнне MTU на зыходным серверы дазваляе абгорнутыя пакеты па-ранейшаму змяшчаецца пад ліміт.

Калі ён не працуе, ўсталюйце значэнне MTU назад гэта па змаўчанні і забяспечыць падтрымку AWS для далейшага пошуку няспраўнасцяў.

22
дададзена
Гэта фантастычны адказ! Дзякуй!
дададзена аўтар Tyler Collier, крыніца

While Mark's problem seemed to have something to do with multi-AZ routing & EC2 classic, I ran into this exact same problem today.

Каб гэта выправіць, я змяніў групу бяспекі, якая была створана аўтаматычна з маім прыкладам RDS, дадаўшы два прыватных IP-адрас з майго асобніка EC2.

Adding inbound rules to my RDS instance

Гэта была даволі відавочная праблема, але я пачатковец у АМС ў цэлым, так што спадзяюся, што гэта карысна для іншых, як я.

7
дададзена
Я знайшоў варыянт пад наладжвальным IP, як «Мой IP», што пры выбары прынёс мой IP, што вырашыць гэтую праблему. Дзякуй за параду вышэй па і раней @sapenove.
дададзена аўтар Yoku, крыніца

Па-відаць, мульты-AZ шрубы ўсё дагары. Паколькі па змаўчанні мульты-AZ канфігурацыя размешчанай сваёй базы дадзеных у рэгіёне нам-ўсход-1d, і мой асобнік EC2 быў у рэгіёне мы усходзе-1a, то DNS ня маршрутызацыі правільна. Я ўзнавіў асобнік RDS, як не-мульты-AZ, і зрабіў гэта жыць у нас-ўсход-1a, і ўсе задаволеныя.

Калі ёсць нейкія супер геніі там у дачыненні да DNS-маршрутызацыю на AWS з RDS, уцёк і мульты-AZ магчымасцямі, гэта было б даволі дзіўным, каб ведаць, як зрабіць гэта, так як гэта нідзе не дакументавана ў дакументацыі Amazon Web Службы ,

3
дададзена

Згодна Amazon DOC , мы варта выкарыстоўваць:

PROMPT> MySQL -h  -P 3306 -u  -p

дзе <�моцны> канчатковая кропка і <�моцны> mymasteruser (імя карыстальніка) з'яўляюцца ад асобніка RDS.

Я вырашыў гэтую праблему, выкарыстоўваючы IP-адрас непасрэдна грамадскасці (канчатковай кропкі) замест канчатковай кропкі (****. Us-east-1.rds.amazonaws.com) .Вы можаце атрымаць IP-адрас агульнага з дапамогай каманды «пінг» ( пінг ****. us-east-1.rds.amazonaws.com)

3
дададзена
Што ты будзеш рабіць? Калі RDS DB Instance знаходзіцца ў прыватнай падсеткі
дададзена аўтар Kumaresh Babu, крыніца

Падобна на тое, дзе-то паміж апошнім і размяшчэннем гэтай публікацыяй, Amazon ўсталяваў DNS маршрутызацыю пытання, таму што зараз усё выдатна працуе для мульты-AZ Патры ...

1
дададзена
Я да гэтага часу які мае тое ж пытанне, што і вы, калі я выкарыстоўваю Multi-AZ гэта не з'яўляецца агульнадаступным.
дададзена аўтар Neo, крыніца

У мяне была аналагічная праблема сёння, калі мой асобнік EC2 раптам страціў доступ да экземпляра RDS і Wordpress перастаў працаваць. Групы бяспекі былі правільнымі, і я мог бы нават падлучыцца да MySQL з кансолі на экзэмпляры EC2, але не з PHP. Па нейкай прычыне паўторны запуск сервера EC2 дапамог мне.

1
дададзена