VPC dışından RDS örneğine bağlanılamıyor (ERROR 2003 (HY000) MySQL Sunucusuna bağlanılamıyor)


12

Bir VPC oluşturdum ve içinde bir RDS örneği. RDS örneğine herkes tarafından erişilebilir ve ayarları aşağıdaki gibidir:

RDS ayarları

RDS örneğine eklenen güvenlik grubu tüm trafiği kabul eder:

Güvenlik grubu ayarları

Tüm ağ EKL'lerim tüm trafiği kabul ediyor. Ancak, örneğime VPC'm dışındaki bir makineden erişemiyorum. Aşağıdaki hatayı alıyorum:

    root@vps151014:~# mysql -h mysql1.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com -P 3306 -u skullberry -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql1.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com' (110)

Aynı komutu VPC'm içindeki bir EC2'den çalıştırırsam, bağlanabilirim. Hepsi bir güvenlik duvarı (yani bağlantı noktası 3306 açık) olmadan birkaç makineden bağlanmayı denedim.

Açıkçası bir şey eksik ama her şey doğru yapılandırılmış gibi görünüyor. Sorun ne olabilir?


1
(110)Hata mesajı araçlarında "bağlantı zaman aşımına uğradı," bu yüzden kesinlikle bu bir IP bağlantısı konudur. RDS örneğiniz iki alt ağla ilişkilendirilmiş olarak gösterilir. VPC konsolunda, bu iki alt ağın varsayılan yolu nedir? Bir "igw-xxxxxxxx" mi yoksa bir "i-xxxxxxxx" mi?
Michael - sqlbot

Her iki alt ağ da dolaylı olarak VPC'nin ana yol tablosu ile ilişkilidir .
dazedviper

1
Her iki alt ağı da tüm giden trafiği VPC'nin internet ağ geçidine yönlendiren özel bir yol tablosuyla ilişkilendirmek hiçbir şekilde fark etmez.
dazedviper

1
Bu bir serseri. Varsayılan "igw" yolu en olası eksik parça gibi görünüyordu ... ve her durumda bunun çalışması için gerekli olmalıdır. Alt ağ yapılandırmalarını buna göre değiştirdikten sonra VPC'yi arka planda yeniden yapılandırmak için yeterli zaman verdiğinizi varsayarsak, fikirlerim kalmadı.
Michael - sqlbot

2
Ah, tüm IP adresleri için ihtiyacınız olan blok 0.0.0.0/0. Cevabı göndereceğim.
Michael - sqlbot

Yanıtlar:


21

VPC'deki bir RDS örneğinin "herkese açık" (Internet) erişilebilir olması için, bağlı olduğu tüm alt ağların VPC'nin "özel" alt ağlarının aksine "genel" olması gerekir.

Genel bir alt ağ, temel olarak Internet Ağ Geçidi nesnesine (igw-xxxxxxxx) "İnternet" yolu veya en azından erişmeniz gereken herhangi bir İnternet hedefine giden yolu olan bir alt ağ olarak tanımlanır. Genellikle, bu bir hedef adresidir 0.0.0.0/0. Ortak alt ağlar, ilişkilendirilmiş bir genel IP adresine sahip olacak örnekler (RDS dahil) için kullanılmalı ve özel adresler Internet üzerinden çeviri olmadan çalışmadığından, genel IP adresleri olmayacak örnekler için kullanılmamalıdır.

Özel bir alt ağın aksine, yönlendirme tablosu, başka bir EC2 örneği olan tipik olarak bir NAT örneği aracılığıyla Internet hedeflerine erişmek için yapılandırılmıştır. Bu, o alt ağ ile ilişkili VPC yol tablosunda "igw" yerine i-xxxxxxxx olarak gösterilir. Bu makine (kendisi, aslında bir rota hedefi olarak işlev gördüklerinden farklı bir alt ağda olacaktır) bir çevirmen görevi görür ve yalnızca özel IP IP örneklerinin NAT makinesinin genelini kullanarak şeffaf bir şekilde giden Internet istekleri yapmasına izin verir İnternet ihtiyaçları için IP. Genel bir IP adresine sahip örnekler, özel bir alt ağa bağlıysa Internet ile düzgün etkileşim kuramaz.

Belirli bir durumda, burada, RDS örneğiyle ilişkilendirilmiş alt ağlar, özel veya genel bir alt ağ olarak sınıflandırılabilecek bir şey olarak gerçekten yapılandırılmamıştır, çünkü alt ağın hiçbir varsayılan yolu yoktur. "İgw" nesnesi üzerinden varsayılan bir yol eklemek veya OP'nin yaptığı gibi, alt ağlar için VPC yol tablosuna bağlantının gerekli olduğu Internet IP adresine statik bir yol eklemek bağlantı sorununu giderir.

Ancak ... Benzer bir sorunla karşılaşırsanız, alt ağlarda doğru şekilde çalışan başka bir şey yoksa, rota tablosunu değiştiremez veya yeni rota tabloları oluşturamaz ve alt ağları onlarla ilişkilendiremezsiniz, çünkü değişiklik makul olabilir mevcut bağlantıyı kesmesi bekleniyor. Bu durumda doğru rota, farklı alt ağlardaki örnekleri doğru yol tablosu girişleri ile sağlamak olacaktır.

Bir VPC kurarken, alt ağ rollerini açıkça tanımlamak ve VPC ilk kez devreye alındığında gerekli rotaları tam olarak sağlamak idealdir. VPC "LAN" ın tamamının yazılım tanımlı bir ağ olduğunu hatırlamak da önemlidir. Yönlendiricinin bir darboğaz haline gelebileceği ve aralarında ağır trafiğe sahip makineleri aynı alt ağa yerleştirmenin mantıklı olduğu fiziksel bir ağın aksine ... trafik geçişi alt ağlarının VPC'de performans dezavantajı yoktur. Makineler, makinenin IP adresleme ihtiyaçlarına (genel adres, genel alt ağ) uygun alt ağlara yerleştirilmelidir; genel adres yok, özel alt ağ.

VPC'deki özel / genel alt ağların lojistiği hakkında daha fazla tartışma, VPC'de Neden Özel Alt Ağa İhtiyacımız Var (Stack Overflow'da).


2

Bunun zaten iyi bir cevabı var, ancak "herkese açık" seçeneğini belirlediğinizde AWS sizin için herkese açık bir alt ağ oluşturuyor. Aksine, sorun benim için varsayılan VPC güvenlik grubuydu. Ağ ACL kurallarına bakıyordum - Güvenlik Grubu'na değil . (RDS'de "genel olarak erişilebilir" seçeneğini belirlemek güvenlik grubunu ekler, ancak gelen kuralları otomatik olarak eklemez.)

RDS'ye tıklayın ve güvenlik grubunu belirleyin ve tıklayın. Daha sonra "gelen kurallar" altında 3306 numaralı bağlantı noktasını ekleyin ve bağlanan IPV4 adresinizi (xxxx / 32) (veya tüm İnternetin bağlanmasını istiyorsanız - ancak buna dikkat edin) ekleyin.


0

Ayrıca, bağlandığınız ağın 3306 numaralı bağlantı noktasındaki başka bir sunucuyla olan bağlantıları engellemediğinden emin olun. Kurumsal ağıma bağlandığımda bu durum böyleydi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.