App Engine gali pasiekti jūsų VPN duomenų bazę: kas turi sutapti
Standartinis App Engine tikrai pasiekia duomenų bazę per Cloud VPN, bet tik kai sutampa egress, šaltinio diapazonas ir užklausos kelias. Štai ką reikia suderinti.
Teiginys, kad App Engine Standard negali pasiekti privačios duomenų bazės per Cloud VPN, yra ankstesnės platformos kartos liekana. Standard egzemplioriai negauna VPC būdingo adreso kaip kai kurios kitos vykdymo aplinkos, bet gali siųsti egress per jūsų tinkle esantį Serverless VPC Access jungtį. Kai šis kelias egzistuoja, Cloud VPN ir nuotolinė užkarda jungties srautą mato kaip bet kurį kitą šaltinį. Nepavyksta retai pati galimybė. Tai vienas iš trijų nustatymų, kurie niekada nebuvo suderinti.
Iš kur atėjo senas atsakymas
Kol nebuvo jungčių, praktinis atsakymas iš tiesų buvo toks, kad Standard gali kalbėtis tik su viešaisiais galiniais taškais, todėl komandos kėlėsi į tarpinio serverio VM ar kitą vykdymo aplinką, kad to išvengtų. Platforma pasikeitė, folkloras ne. Daugelis patarimų internete vis dar atspindi epochą, kai egress parinkties apskritai nebuvo.
Pataisa siauresnė, nei skamba. Standard gali pasiekti privatų tinklą, bet tik per palaikomą egress integraciją ir tik tuos tikslus, kuriuos ta integracija iš tikrųjų užčiuopia.
Pirmiausia pasirinkite egress kelią
Prie paslaugos prijungta jungtis įkelia jos srautą į VPC. Jungties dokumentacija išvardija regioninę sąlygą ir egress nustatymus; jungtis turi egzistuoti paslaugos regione ir būti naudojama diegiančios tapatybės.
vpc_access_connector:
name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
egress_setting: private-ranges-only
private-ranges-only siunčia privačius tikslus į VPC, o visa kita palieka įprastame interneto kelyje, ko dažniausiai reikia duomenų bazės ryšiui. all-traffic plačiai stumia siunčiamą srautą per VPC, todėl įprasti interneto kvietimai taip pat paveldi VPC NAT ir užkardos poziciją.
Failo redagavimas vietoje nieko nekeičia, kol neišdiegsite. Veikianti versija išsaugo konfigūraciją, su kuria buvo sukurta.
Šaltinio adresas yra jungtis, o ne jūsų nešiojamasis kompiuteris
Čia praeina didžioji dalis derinimo laiko. Nuotolinis VPN šliuzas ir duomenų bazės užkarda turi leisti jungčiai skirtą diapazoną VPC viduje, o ne jūsų biuro adresą ir ne viešą paslaugos egress adresą. Prieš rašydami nors vieną taisyklę, suraskite tą diapazoną konsolėje.
Dar dvi vietos turi sutarti. VPC maršrutų lentelėje reikia maršruto į nuotolinį duomenų bazės tinklą, o nuotolinėje pusėje — grįžimo maršruto jungties diapazonui. Jei tunelis naudoja srauto selektorius, patvirtinkite, kad jungties diapazonas yra suderintoje apimtyje. Maršrutas, egzistuojantis tik kryptimi iš nuotolinės į vietinę, yra dažna klaida, ir jis praleidžia pingus, bet niekada nebaigia TCP rankos paspaudimo.
Tunelis, priimantis tik VM potinklį, numes jungties paketus be naudingos klaidos žinutės, todėl duomenų bazės skirtasis laikas atrodo kaip prisijungimo duomenų problema.
DNS keliauja kitu keliu
Privačios duomenų bazės pagrindinio kompiuterio vardas turi būti išsprendžiamas tinkle, kurį pasiekia jungtis, per Cloud DNS poravimą arba persiuntimo zoną, kurią VPC gali naudoti. Jo sprendimas jūsų darbo vietoje nieko neįrodo apie įdiegtą paslaugą, nes jūsų nešiojamasis kompiuteris nenaudoja to sprendėjo.
Jei vardas VPC viduje išsprendžiamas į viešą adresą, ruošiatės derinti ne tą užkardą.
URL Fetch nenaudoja jungties
Egress nustatymas apima įprastus vykdymo aplinkos siunčiamuosius lizdus, o paveldėta URL Fetch paslauga nėra to kelio dalis. Užklausa, pateikta per urlfetch, nepaiso jungties, kad ir ką sakytų konfigūracija. Kai nepavykstantis kvietimas yra senesnėje bibliotekoje, kuri vis dar naudoja URL Fetch, sprendimas yra perkelti tą kvietimą į standartinį HTTP klientą.
Duomenų bazės tvarkyklei tai retai būna problema, bet tai klasikinė priežastis, kodėl vienas galinis taškas veikia, o kitas ne iš tos pačios paslaugos.
Patikrinkite viena siaura užklausa
Įdiekite, tada atlikite vieną leidžiamą duomenų bazės operaciją iš įdiegtos versijos stebėdami nuotolinę pusę. Duomenų bazės arba VPN šliuzo registruojamas šaltinio adresas turėtų būti jungties. Jei ne, užklausa niekada nepateko į VPC, ir jokia tunelio konfigūracija to nepataisys. Palyginkite jį su diapazonu, kurį radote konsolėje; neatitikimas dažniausiai reiškia, kad versiją aptarnauja antra jungtis.
Sėkminga užklausa iš VM VPC viduje įrodo, kad maršrutas egzistuoja. Ji neįrodo, kad paslauga jį pasirinko.