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.

Susiję straipsniai