GeoServer a PostGIS: de VPN-Wee, deen zielt, ass dee vum Server
Datt Äre Laptop GeoServer erreecht, seet näischt doriwwer, ob GeoServer PostGIS erreecht. Vergläicht déi zwee Originnen, d’Cachegrenz an d’Quell vum Datastore selwer.
Dir maacht de Layer a QGIS op, an hie gëtt gerendert. E Kolleeg op der selwechter VPN kritt e Feeler fir dee selwechte Layer. Een oder aneren zitt de Schluss, d’VPN wier futt, an déi nächst Stonn geet domat fort, eng Datebank ze verréckelen oder e Port opzemaachen, dee weder dat eng nach dat anert jee gebraucht huet. D’Demande vum Desktop an d’Query, déi GeoServer un PostGIS schéckt, ginn vu verschiddene Maschinnen aus, a verschiddenen Netzwierk-Namespaces, mat verschiddenen Login-Donnéeën. Dës zwee Weeër ze trennen ass de gréissten Deel vun der Diagnos.
Zwee Verbindungen, zwou Originnen
QGIS -> client's permitted path (often the VPN) -> GeoServer listener
GeoServer -> server's permitted path -> PostGIS listener
Den zweeten Feil ierft net den Tunnel vum éischte Computer. E GeoServer an engem Container huet den Netzwierkstack vum Container, net dee vum Host, an e Container op engem iwwerbréckten Netzwierk kann eng Datebank erreechen, déi den Host net erreecht, oder ëmgedréit. Sou kann dee selwechte Benotzer an enger Sitzung geléngen a feelen, jee nodeem, ob d’Äntwert aus dem Cache koum oder aus enger frëscher Query.
| What you tested | What it proves |
|---|---|
Portal page or GetCapabilities | HTTP reachability to GeoServer only |
| A tile served from cache | nothing about the database |
GetMap for an uncached layer | a datastore query had to happen |
De Schrëtt fannen, deen tatsächlech feelgeschloen ass
Eng Oflehnung op Déngschtniveau, eng Bilddemande, déi hiren Datastore net erreecht, an e Permissiounsproblem an engem Layer gesi sech an engem Browser-Tab ähnlech an am Server-Log komplett anescht. Frot no der spezifescher Operatioun an liest dann dem GeoServer säin eegene Event fir deen selwechten Zäitstempel.
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"
En 200 vun der zweeter Demande mat engem plausible Bild beweist, datt den Datastore geäntwert huet. En 200 mat engem Service-Exception-Dokument beweist, datt en dat net huet, an den Text vun der Ausnam nennt meeschtens de Store anstatt de Client.
Den Datastore vun der Serversäit aus liesen
D’PostGIS-Referenz vu GeoServer listet op, wat de Store brauch: Host, Port, Datebank an Login-Donnéeën. Dat alles beschreift d’Verbindung, déi GeoServer opmécht. Näischt dovu beschreift eng Umeldung vum Desktop-Client. Liest déi véier Felder als eng Ausso iwwer den Netzwierkkontext vum Server, an déi ganz Klass vun «bei deenen et funktionéiert»-Tickete gëtt handhabbar.
Dofir ass localhost an engem Datastore sou e geleefege Feeler. Et bedeit den Netzwierkkontext vum GeoServer-Prozess selwer. Wann de GeoServer an Docker leeft, während PostGIS um Host leeft, localhost weist an den Container eran a fënnt näischt, an keng VPN-Konfiguratioun ännert dat.
Um Server préift Dir d’Route, de Listener an d’Authentifikatiounspolitik an därer Reihenfolg. Dem PostgreSQL seng hostbaséiert Authentifikatioun vergläicht d’Quelladress, déi se gesäit, déi e Gateway kann iwwersetzen, dofir reparéiert eng Client-VPN-Pool an der HBA-Datei seelen eng Verbindung op der Serversäit. Test esou wéi et de Server géif maachen: selwechten Host, selwechte Port, selwechte Benotzer. Wann deen Test geléngt, während de GeoServer nach ëmmer feelt, läit den Ënnerscheed am Prozesskontext an net an der Datebank.
ip route get 10.20.5.11
ss -tnp | grep 5432
psql "host=10.20.5.11 dbname=gis user=geoserver" -c 'select 1'
Pools a Caches halen den Zoustand iwwer Ännerungen eraus
Verbindungspools vum Datastore halen Sockets op. En Tunnel, deen eng Stonn no der Erstellung vum Pool opkomm ass, gëtt dem Pool net onbedéngt en neie Wee, an eng idle Verbindung kann op enger douder Route sëtze bleiwen, bis eng Validéierung oder en Timeout se ofschléisst. Préift d’Validéierungsastellunge vum installéierte Store anstatt eng Erhuelung unzehuelen, a vermeit d’Versuchung, den ganze Service nei ze starten, ier Dir wësst, wéi ee Layer feelgeschloen ass.
Tile-Caches schafen d’Spigelbild vun deem Problem: si kënnen eng korrekt ausgesinn Kaart nach laang zerwéieren, nodeems d’Datebankverbindung gebrach ass. Den Cache eidel maachen, fir «ze kucken, ob et hëlleft», zerstéiert dat eenzegt Beweisstéck, dat Iech gesot hätt, wéi ee Wee lieweg war.
Iwwerginn, mat béide Originnen genannt
D’Beschreiwung, déi eng séier Korrektur kritt, nennt zwou Saachen: d’Clientdemande, déi de GeoServer erreecht huet, an d’Backend-Operatioun, déi de GeoServer net konnt ofschléissen. Mat béide kann den richtegen Eegentemer dee Wee reparéieren, deen feelgeschloen ass. Mat nëmmen der éischter ass déi natierlech Korrektur, d’Datebank ëffentlech ze maachen, wat den Ticket léist, andeems en e schlëmmert Problem schaaft.
Notéiert de Layer, de Responscode, d’Ausnam op der Serversäit an de Container oder Host, deen se produzéiert huet. Dat sinn véier Zeilen, an si huelen d’Zweedeitegkeet komplett eweg.