Mange team tror at Cloud SQL privat IP bare fungerer innenfra VPC-en, og troen holder fordi feilen ser ut som et databaseproblem. Google dokumenterer tilgang fra nettverk som er koblet til via Cloud VPN eller Cloud Interconnect. Det disse nettverkene trenger er ikke en spesiell databasefunksjon, men to ruteutvekslinger som er lette å la stå halvkonfigurerte. Tunnelen kommer opp, compute-instansene svarer, og databaseforbindelsen timer ut — nøyaktig kombinasjonen som sender folk til feil konsoll.

Myte: privat IP betyr privat for VPC-en

Privat tjenestetilgang er en VPC-peering mellom nettverket ditt og et produsentnettverk eid av Google. Det tildelte området for tjenesten ligger på produsentsiden, og instansadressen ligger inni det. Denne peeringen er grunnen til at en database i prosjektet ditt kan ligge på en adresse som VPC-en din ruter til, uten at noe av ditt eksplisitte subnett inneholder den.

Fordi det er en peering, har den også peering-atferd, inkludert delen der egendefinerte ruter ikke krysser automatisk.

Myte: en fungerende tunnel bærer databaseruten med seg

To områder må overleve turen. Det første er klientprefikset: det lokale nettverket ditt må være kjent for Cloud Router med bestemte prefikser, fordi en standardrute ikke kan levere importen produsentnettverket trenger for returveien. Det andre er det tildelte tjenesteområdet, som den eksterne siden må lære slik at pakkene dens til databasen har et sted å gå. Dette er forskjellige ruter vedlikeholdt ved forskjellige grenser, og å reparere den ene lar den andre være ødelagt.

På Googles side betyr det å aktivere Export custom routes på de relevante peering-forbindelsene og legge det tildelte tjenesteområdet til Cloud Routers annonserte ruter for tunnelen.

Behold annonsene som allerede finnes. Å legge til tjenesteområdet skal ikke fjerne VPC-rutene som samme BGP-økt bærer for annen trafikk, og et annonsesett som erstattes helt er et andre avbrudd skjult bak det første. Kontroller også de effektive rutene på den eksterne enheten, fordi å kunne nå VPN-gatewayen eller et annet subnett beviser bare transport.

Myte: Cloud SQL Auth Proxy løser nettverket

The Auth Proxy gir støttet autentisering og kryptert transport mellom applikasjonen din og instansen. Den oppretter ikke en rute. En proxy startet på en vert uten vei til det private nettverket vil feile nøyaktig som en direkte forbindelse ville, og loggene vil være mindre nyttige om hvorfor. Å flytte proxyen til en vert som har tilkobling endrer hvilket ben av ruten som må fungere, og det er en reell designbeslutning fremfor en omvei.

Det den ikke gjør, er å la en frakoblet bærbar datamaskin nå en instans som bare er privat.

Myte: Private Service Connect følger de samme reglene

Private Service Connect bruker et endepunkt i ditt eget subnett og et DNS-oppsett du kontrollerer, så ruten dit er en vanlig rute til en adresse du eier. Peering-eksportinnstillinger gjelder ikke for det designet, og å kopiere peering-endringer inn i en PSC-utrulling legger til risiko uten å legge til rekkevidde.

Begge gir deg en privat adresse; likheten stopper der.

Test ruten i riktig rekkefølge

Fra den eksterne klienten, test databasens TCP-endepunkt først. Et fullført TCP-håndtrykk betyr at ruting, brannmur og lytter alle er på plass, og neste test er en tillatt autentisert operasjon. En avvist autentisering er faktisk gode nyheter på det tidspunktet, fordi det beviser at en databaselytter svarte. En ICMP-timeout sier nesten ingenting om databasetilgang, fordi mange ruter dropper den mens de videresender TCP uten problemer.

Hvis klientområdene dine er utenfor RFC 1918, gå gjennom de ekstra kravene til ruteeksport og nettverksautorisasjon før du konkluderer med at designet ikke støttes.

Noter fire objekter sammen med forbindelsen: det eksterne prefikset, det tildelte tjenesteområdet, peering-forbindelsene som er involvert og ruteren som annonserer. Disse fire forklarer hele den private ruten, og de erstatter folkloren om at Cloud SQL enten alltid trenger en proxy eller ikke kan nås over VPN i det hele tatt.

Relaterte artikler