GeoServer a PostGIS: y llwybr VPN sy’n cyfrif yw un y gweinydd
Nid yw eich gliniadur yn cyrraedd GeoServer yn dweud dim am a yw GeoServer yn cyrraedd PostGIS. Cymharwch y ddau darddiad, ffin y storfa a ffynhonnell y storfa ddata ei hun.
Rydych chi’n agor yr haen yn QGIS ac mae’n rendro. Mae cydweithiwr ar yr un VPN yn cael gwall ar gyfer yr un haen. Mae rhywun yn casglu bod y VPN wedi torri, ac mae’r awr nesaf yn mynd ar symud cronfa ddata neu ar agor porth nad oedd angen y naill na’r llall arno erioed. Mae’r cais o’r bwrdd gwaith a’r ymholiad y mae GeoServer yn ei wneud i PostGIS yn gadael o wahanol beiriannau, mewn gwahanol ofodau enwau rhwydwaith, o dan wahanol gyfrifon. Gwahanu’r ddau lwybr hynny yw’r rhan fwyaf o’r diagnosis.
Dau gysylltiad, dau darddiad
QGIS -> client's permitted path (often the VPN) -> GeoServer listener
GeoServer -> server's permitted path -> PostGIS listener
Nid yw’r ail saeth yn etifeddu twnnel y cyfrifiadur cyntaf. Mae gan GeoServer mewn cynhwysydd stac rhwydwaith y cynhwysydd, nid un y gwesteiwr, a gall cynhwysydd ar rwydwaith pont gyraedd cronfa ddata na all y gwesteiwr ei chyrraedd, neu’r gwrthwyneb. Felly gall yr un defnyddiwr lwyddo a methu o fewn un sesiwn, yn dibynnu a ddaeth yr ateb o’r storfa neu o ymholiad ffres.
| 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 |
Dod o hyd i’r cam a fethodd mewn gwirionedd
Mae gwrthodiad ar lefel gwasanaeth, cais delwedd nad yw’n cyrraedd ei storfa ddata, a phroblem caniatâd mewn un haen yn edrych yr un fath mewn tab porwr ac yn hollol wahanol yng nghofnod y gweinydd. Gofynnwch am y gweithrediad penodol, yna darllenwch ddigwyddiad GeoServer ei hun ar gyfer yr un stamp amser.
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"
Mae 200 o’r ail gais gyda delwedd credadwy yn profi bod y storfa ddata wedi ateb. Mae 200 gyda dogfen eithriad gwasanaeth yn profi na wnaeth, ac mae testun yr eithriad fel arfer yn enwi’r storfa yn hytrach na’r cleient.
Darllen y storfa ddata o ochr y gweinydd
Mae’r cyfeirlyfr PostGIS GeoServer yn rhestru’r hyn y mae ar y storfa ei angen: gwesteiwr, porth, cronfa ddata a chyfrifon. Mae hyn i gyd yn disgrifio’r cysylltiad y mae GeoServer yn ei agor. Nid oes dim o hyn yn disgrifio mewngofnodi gan y cleient bwrdd gwaith. Darllenwch y pedwar maes hynny fel datganiad am gyd-destun rhwydwaith y gweinydd, ac mae’r dosbarth cyfan o docynnau «mae’n gweithio gyda nhw» yn dod yn hydrin.
Dyna pam y mae localhost mewn storfa ddata mor gyffredin o gamgymeriad. Mae’n golygu cyd-destun rhwydwaith proses GeoServer ei hun. Os yw GeoServer yn rhedeg yn Docker tra bod PostGIS yn rhedeg ar y gwesteiwr, localhost yn pwyntio tu mewn i’r cynhwysydd ac yn dod o hyd i ddim, ac nid oes unrhyw faint o ffurfweddu VPN yn newid hynny.
Ar y gweinydd, gwiriwch y llwybr, y gwrandawr a’r polisi dilysu yn y drefn honno. Mae dilysu sy’n seiliedig ar westai PostgreSQL yn cyfateb y cyfeiriad ffynhonnell y mae’n ei weld, y gall porth ei gyfieithu, felly anaml y mae ychwanegu pwll VPN cleient at y ffeil HBA yn trwsio cysylltiad ar ochr y gweinydd. Profwch fel y byddai’r gweinydd yn ei wneud: yr un gwesteiwr, yr un porth, yr un defnyddiwr. Os yw’r prawf hwnnw’n llwyddo tra bod GeoServer yn dal i fethu, y gwahaniaeth yw cyd-destun y broses yn hytrach na’r gronfa ddata.
ip route get 10.20.5.11
ss -tnp | grep 5432
psql "host=10.20.5.11 dbname=gis user=geoserver" -c 'select 1'
Mae pyrlau a storfa yn cadw cyflwr ar draws newidiadau
Mae pyrlau cysylltiadau’r storfa ddata yn cadw socedi ar agor. Nid yw twnnel a ddaeth i fyny awr ar ôl creu’r pwll o reidrwydd yn rhoi llwybr newydd i’r pwll, a gall cysylltiad segur eistedd ar lwybr marw nes bod dilysiad neu derfyn amser yn dod i ben. Gwiriwch osodiadau dilysu’r storfa sydd wedi’i gosod yn lle tybio adferiad, ac osgowch y demtasiwn i ailgychwyn y gwasanaeth cyfan cyn i chi wybod pa haen a fethodd.
Mae storfa teils yn creu delwedd drych o’r broblem honno: gallant wasanaethu map sy’n edrych yn gywir ymhell ar ôl i’r cysylltiad cronfa ddata dorri. Mae clirio’r storfa i «weld a yw’n helpu» yn dinistrio’r un darn o dystiolaeth a fyddai wedi dweud wrthych pa lwybr oedd yn fyw.
Trosglwyddo gyda’r ddau darddiad wedi’u henwi
Mae’r disgrifiad sy’n cael trwsio cyflym yn enwi dau beth: y cais cleient a gyrhaeddodd GeoServer, a’r gweithrediad cefn na allai GeoServer ei gwblhau. Gyda’r ddau, gall y perchennog cywir drwsio’r llwybr a fethodd. Gyda’r cyntaf yn unig, y trwsio naturiol yw datgelu’r gronfa ddata’n gyhoeddus, sy’n datrys y tocyn trwy greu problem waeth.
Nodwch yr haen, y cod ymateb, yr eithriad ar ochr y gweinydd a’r cynhwysydd neu’r gwesteiwr a’i cynhyrchodd. Mae’n bedair llinell, ac mae’n dileu’r amwysedd yn gyfan gwbl.