Otvorite sloj u QGIS-u i on se iscrta. Kolega na istoj VPN dobije pogrešku za isti sloj. Netko zaključi da je VPN pokvaren, a sljedeći sat ode na premještanje baze podataka ili na otvaranje porta kojem nije trebalo ni jedno ni drugo. Zahtjev s radne površine i upit koji GeoServer šalje u PostGIS kreću s različitih strojeva, u različitim mrežnim imenskim prostorima, s različitim vjerodajnicama. Razdvajanje tih dviju putanja je većina dijagnoze.

Dvije veze, dva izvora

QGIS  ->  client's permitted path (often the VPN)  ->  GeoServer listener
GeoServer -> server's permitted path  ->  PostGIS listener

Druga strelica ne nasljeđuje tunel prvog računala. GeoServer u kontejneru ima mrežni stog kontejnera, ne hosta, a kontejner na premosnoj mreži može dosegnuti bazu koju host ne doseže, ili obrnuto. Isti korisnik stoga može uspjeti i pasti unutar jedne sesije, ovisno o tome je li odgovor došao iz predmemorije ili iz svježeg upita.

What you testedWhat it proves
Portal page or GetCapabilitiesHTTP reachability to GeoServer only
A tile served from cachenothing about the database
GetMap for an uncached layera datastore query had to happen

Pronađite korak koji je stvarno pao

Odbijanje na razini usluge, zahtjev za slikom koji ne dosegne svoje spremište podataka i problem s dozvolama u jednom sloju izgledaju slično na kartici preglednika, a posve drugačije u zapisniku poslužitelja. Zatražite konkretnu operaciju, a zatim pročitajte vlastiti događaj GeoServera za istu vremensku oznaku.

curl -s -o /dev/null -w '%{http_code}\n' \
  "https://gis.example.com/geoserver/wms?service=WMS&version=1.3.0&request=GetCapabilities"

curl -s -o /tmp/tile.png -w '%{http_code} %{size_download}\n' \
  "https://gis.example.com/geoserver/wms?service=WMS&version=1.3.0&request=GetMap&layers=corp:parcels&bbox=-13650000,4500000,-13600000,4550000&width=256&height=256&srs=EPSG:3857&format=image/png"

200 iz drugog zahtjeva s uvjerljivom slikom dokazuje da je spremište podataka odgovorilo. 200 s dokumentom iznimke usluge dokazuje da nije, a tekst iznimke obično imenuje spremište, a ne klijenta.

Čitajte spremište podataka sa strane poslužitelja

Referenca PostGIS GeoServera navodi što spremište treba: host, port, bazu podataka i vjerodajnice. Sve to opisuje vezu koju GeoServer otvara. Ništa od toga ne opisuje prijavu s klijentskog računala. Čitajte ta četiri polja kao tvrdnju o mrežnom kontekstu poslužitelja i cijela klasa zahtjeva „kod njih radi” postaje rješiva.

Zato je localhost u spremištu podataka tako česta pogreška. Znači mrežni kontekst samog procesa GeoServera. Ako GeoServer radi u Dockeru dok PostGIS radi na hostu, localhost pokazuje u unutrašnjost kontejnera i ne nalazi ništa, i nikakva VPN konfiguracija to ne mijenja.

Na poslužitelju provjerite rutu, slušač i pravilo provjere autentičnosti tim redom. Provjera autentičnosti PostgreSQL-a na temelju hosta uspoređuje izvornu adresu koju vidi, a pristupnik je može prevesti, pa dodavanje klijentskog VPN skupa u HBA datoteku rijetko popravlja vezu na strani poslužitelja. Testirajte kako bi poslužitelj to učinio: isti host, isti port, isti korisnik. Ako taj test uspije dok GeoServer još uvijek pada, razlika je u kontekstu procesa, a ne u bazi podataka.

ip route get 10.20.5.11
ss -tnp | grep 5432
psql "host=10.20.5.11 dbname=gis user=geoserver" -c 'select 1'

Skupovi veza i predmemorije drže stanje kroz promjene

Skupovi veza spremišta podataka drže utičnice otvorene. Tunel koji je došao sat vremena nakon stvaranja skupa ne daje skupu nužno novu putanju, a neaktivna veza može ostati na mrtvoj ruti dok je validacija ili vremensko ograničenje ne zatvori. Provjerite postavke validacije instaliranog spremišta umjesto da pretpostavljate oporavak i izbjegnite napast da ponovno pokrenete cijelu uslugu prije nego što znate koji je sloj pao.

Predmemorije pločica stvaraju zrcalnu sliku tog problema: mogu posluživati ispravno izgledajuću kartu dugo nakon što se veza s bazom prekinula. Pražnjenje predmemorije da bi se „vidjelo pomaže li” uništava jedini dokaz koji bi vam rekao koja je putanja bila živa.

Predajte s oba izvora imenovana

Opis koji dobije brzu popravku imenuje dvije stvari: klijentski zahtjev koji je stigao do GeoServera i pozadinsku operaciju koju GeoServer nije mogao dovršiti. S oboma pravi vlasnik može popraviti putanju koja je pala. Sa samo prvim, prirodna je popravka javno izložiti bazu podataka, što zahtjev rješava stvaranjem goreg problema.

Zabilježite sloj, kôd odgovora, iznimku na strani poslužitelja te kontejner ili host koji ju je proizveo. To su četiri retka i potpuno uklanjaju dvosmislenost.

Povezani članci