Per un'istanza RDS in VPC accessibile "pubblicamente" (Internet), tutte le sottoreti alle quali è collegata devono essere "pubbliche" - anziché "private" - le sottoreti del VPC.
Una sottorete pubblica è essenzialmente definita come una sottorete che ha l'oggetto Internet Gateway (igw-xxxxxxxx) come rotta verso "Internet" o almeno verso qualsiasi destinazione Internet a cui è necessario accedere. In genere, questo è un indirizzo di destinazione di 0.0.0.0/0
. Le sottoreti pubbliche devono essere utilizzate per istanze (incluso RDS) a cui sarà associato un indirizzo IP pubblico e non dovrebbero essere utilizzate per istanze che non dispongono di indirizzi IP pubblici, poiché gli indirizzi privati non funzionano su Internet senza traduzione.
Una sottorete privata, al contrario, ha la sua tabella di routing configurata per raggiungere destinazioni Internet tramite un'altra istanza EC2, in genere un'istanza NAT. Ciò mostra nella tabella di route VPC associata a quella sottorete come i-xxxxxxxx, anziché "igw". Quella macchina (che, di per sé, si troverà effettivamente su una sottorete diversa da quelle per cui funge da destinazione del percorso) funge da traduttore, consentendo alle istanze solo IP private di effettuare in modo trasparente richieste Internet in uscita utilizzando il pubblico della macchina NAT IP per le loro esigenze in Internet. Le istanze con un indirizzo IP pubblico non possono interagire correttamente con Internet se collegate a una sottorete privata.
Nel caso specifico, qui, le sottoreti associate all'istanza RDS non erano realmente configurate come qualcosa che poteva essere semplicemente classificata come sottorete privata o pubblica, poiché la sottorete non aveva alcuna route predefinita. L'aggiunta di una route predefinita tramite l'oggetto "igw" o, come ha fatto OP, l'aggiunta di una route statica all'indirizzo IP Internet in cui era necessaria la connettività, nella tabella delle route VPC per le sottoreti risolve il problema di connettività.
Tuttavia ... Se si verifica un problema simile, non è possibile semplicemente modificare la tabella delle rotte o creare nuove tabelle delle rotte e associare le sottoreti a esse, a meno che non ci sia nient'altro che funzioni correttamente sulle sottoreti, perché la modifica potrebbe ragionevolmente dovrebbe interrompere la connettività esistente. La rotta corretta, in tal caso, sarebbe quella di eseguire il provisioning delle istanze su sottoreti diverse con le voci della tabella di instradamento corrette in atto.
Quando si configura un VPC, è ideale definire chiaramente i ruoli della sottorete e eseguire il provisioning completo con le route necessarie al primo avvio del VPC. È anche importante ricordare che l'intera "LAN" VPC è una rete definita dal software. A differenza di una rete fisica, in cui il router può diventare un collo di bottiglia ed è spesso sensato posizionare macchine con traffico intenso tra loro sulla stessa sottorete ... le sottoreti di attraversamento del traffico non presentano svantaggi in termini di prestazioni su VPC. Le macchine dovrebbero essere posizionate su sottoreti adeguate alle esigenze di indirizzamento IP della macchina: indirizzo pubblico, sottorete pubblica; nessun indirizzo pubblico, sottorete privata.
Ulteriori discussioni sulla logistica delle sottoreti private / pubbliche in VPC sono disponibili in Perché abbiamo bisogno della sottorete privata in VPC (in Stack Overflow).
(110)
messaggio di errore significa "timeout della connessione", quindi sicuramente questo è un problema di connettività IP. L'istanza RDS mostra di essere associata a due sottoreti. Nella console VPC, qual è la route predefinita di queste due subnet? È un "igw-xxxxxxxx" o è un "i-xxxxxxxx"?