GeoServer u PostGIS: it-triq tal-VPN li timporta hija dik tas-server
Li l-laptop tiegħek tasal għal GeoServer ma tgħid xejn dwar jekk GeoServer tasalx għal PostGIS. Qabbel iż-żewġ oriġini, il-limitu tal-cache u s-sors stess tad-datastore.
Tiftaħ il-layer fi QGIS u jiġi rrenderjat. Kollega fuq l-istess VPN jirċievi żball għall-istess layer. Xi ħadd jikkonkludi li l-VPN hija miksura, u s-siegħa li jmiss tintuża biex titmexxa database jew tiġi esposta porta li qatt ma kellha bżonn wieħed minnhom. It-talba mid-desktop u l-mistoqsija li GeoServer jagħmel lil PostGIS jitilqu minn magni differenti, f’namespace tan-netwerk differenti, taħt kredenzjali differenti. Is-separazzjoni ta’ dawn iż-żewġ toroq hija l-parti l-kbira tad-dijanjosi.
Żewġ konnessjonijiet, żewġ oriġini
QGIS -> client's permitted path (often the VPN) -> GeoServer listener
GeoServer -> server's permitted path -> PostGIS listener
It-tieni vleġġa ma tiretx il-mina tal-ewwel kompjuter. GeoServer f’container għandu l-istack tan-netwerk tal-container, mhux dak tal-host, u container fuq netwerk bil-pont jista’ jilħaq database li l-host ma jilħaqx, jew bil-maqlub. Għalhekk l-istess utent jista’ jirnexxi u jfalli fl-istess sessjoni, skont jekk it-tweġiba ġietx mill-cache jew minn mistoqsija friska.
| 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 |
Sib il-pass li fil-fatt falla
Ċaħda fil-livell tas-servizz, talba għal immaġni li ma tasalx għad-datastore tagħha, u problema ta’ permess f’layer wieħed jidhru l-istess f’tab tal-browser u kompletament differenti fil-log tas-server. Itlob l-operazzjoni speċifika, imbagħad aqra l-avveniment ta’ GeoServer stess għall-istess timbru tal-ħin.
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 mit-tieni talba b’immaġni plawsibbli jipprova li d-datastore wieġeb. 200 b’dokument ta’ service exception jipprova li ma wieġibx, u t-test tal-eċċezzjoni normalment isemmi l-istore aktar milli l-klijent.
Aqra d-datastore min-naħa tas-server
Ir-referenza PostGIS ta’ GeoServer telenka dak li għandu bżonn l-istore: host, porta, database u kredenzjali. Dan kollu jiddeskrivi l-konnessjoni li GeoServer jiftaħ. Xejn minn dan ma jiddeskrivi login mill-klijent tad-desktop. Aqra dawn l-erba’ oqsma bħala dikjarazzjoni dwar il-kuntest tan-netwerk tas-server, u l-klassi kollha ta’ tickets «għandhom taħdem» issir trattabbli.
Huwa għalhekk li localhost f’datastore hija żball daqshekk komuni. Tfisser il-kuntest tan-netwerk tal-proċess ta’ GeoServer stess. Jekk GeoServer jaħdem f’Docker filwaqt li PostGIS jaħdem fuq il-host, localhost jindika ġewwa l-container u ma jsib xejn, u l-ebda konfigurazzjoni tal-VPN ma tbiddel dan.
Fuq is-server, iċċekkja r-rotta, il-listener u l-politika tal-awtentikazzjoni f’dak l-ordni. L-awtentikazzjoni bbażata fuq il-host ta’ PostgreSQL tqabbel l-indirizz tas-sors li tosserva, li gateway jista’ jittraduċi, għalhekk iżżid pool tal-VPN tal-klijent fil-fajl HBA rari tissewwi konnessjoni min-naħa tas-server. Ittestja kif jagħmel is-server: l-istess host, l-istess porta, l-istess utent. Jekk dak it-test jirnexxi filwaqt li GeoServer għadu jfalli, id-differenza hija fil-kuntest tal-proċess u mhux fid-database.
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 u caches iżommu l-istat tul il-bidliet
Pools tal-konnessjoni tad-datastore iżommu s-sockets miftuħa. Mina li telgħet siegħa wara li nħoloq il-pool mhux bilfors tagħti lill-pool triq ġdida, u konnessjoni idle tista’ tibqa’ fuq rotta mejta sakemm validazzjoni jew timeout itemmha. Iċċekkja s-settings tal-validazzjoni tal-istore installat minflok ma tassumi rkupru, u evita t-tentazzjoni li terġa’ tibda s-servizz kollu qabel ma tkun taf liema layer falla.
Il-caches tal-madum joħolqu l-immaġni tal-mera ta’ dik il-problema: jistgħu jservu mappa li tidher korretta ħafna wara li l-konnessjoni tad-database tkun inqatgħet. It-tindif tal-cache biex «tara jekk tgħinx» jeqred l-unika biċċa evidenza li kienet tgħidlek liema triq kienet ħajja.
Għaddi b’żewġ oriġini msemmija
Id-deskrizzjoni li tikseb tiswija mgħaġġla ssemmi żewġ affarijiet: it-talba tal-klijent li waslet għal GeoServer, u l-operazzjoni tal-backend li GeoServer ma setax itemm. B’tnejn, is-sid korrett jista’ jsewwi t-triq li falliet. Bl-ewwel waħda biss, it-tiswija naturali hija li d-database tiġi esposta pubblikament, li ssolvi t-ticket billi toħloq problema agħar.
Innota l-layer, il-kodi tar-risposta, l-eċċezzjoni min-naħa tas-server u l-container jew il-host li pproduċiha. Dawn huma erba’ linji, u jneħħu l-ambigwità għal kollox.