GeoServer na PostGIS: njia ya VPN inayojalisha ni ya seva
Kompyuta yako ndogo kufikia GeoServer haisemi chochote kuhusu ikiwa GeoServer inafikia PostGIS. Linganisha vyanzo viwili, mpaka wa akiba na chanzo cha ghala la data lenyewe.
Unafungua tabaka katika QGIS na linaonyeshwa. Mwenzako aliye kwenye VPN moja anapata hitilafu kwa tabaka hilo hilo. Mtu fulani anahitimisha kwamba VPN imeharibika, na saa inayofuata inatumika kuhamisha hifadhidata au kufungua mlango ambao haukuhitaji kimoja wapo. Ombi kutoka kwa kompyuta ya mezani na swali ambalo GeoServer hupeleka kwa PostGIS zinaondoka kutoka mashine tofauti, katika nafasi za majina za mtandao tofauti, kwa hati za utambulisho tofauti. Kutenganisha njia hizo mbili ndio sehemu kubwa ya utambuzi.
Miunganisho miwili, vyanzo viwili
QGIS -> client's permitted path (often the VPN) -> GeoServer listener
GeoServer -> server's permitted path -> PostGIS listener
Mshale wa pili haurithi handaki la kompyuta ya kwanza. GeoServer ndani ya chombo ina tabaka la mtandao la chombo, si la mwenyeji, na chombo kwenye mtandao wa daraja linaweza kufikia hifadhidata ambayo mwenyeji hafikii, au kinyume chake. Kwa hivyo mtumiaji yule yule anaweza kufaulu na kushindwa katika kipindi kimoja, kutegemea jibu lilitoka kwenye akiba au kwenye swali jipya.
| 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 |
Tafuta hatua iliyoshindwa kweli
Kukataliwa kwa ngazi ya huduma, ombi la picha ambalo halifikii ghala lake la data, na tatizo la ruhusa katika tabaka moja huonekana sawa kwenye kichupo cha kivinjari na tofauti kabisa kwenye kumbukumbu ya seva. Omba operesheni mahususi, kisha usome tukio la GeoServer yenyewe kwa muhuri huo wa muda.
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 kutoka kwa ombi la pili likiwa na picha inayokubalika inathibitisha kwamba ghala la data lilijibu. 200 ikiwa na hati ya hitilafu ya huduma inathibitisha kwamba hakukujibu, na maandishi ya hitilafu kwa kawaida hutaja ghala badala ya mteja.
Soma ghala la data kutoka upande wa seva
Rejea ya PostGIS ya GeoServer inaorodhesha kile ghala linahitaji: mwenyeji, mlango, hifadhidata na hati za utambulisho. Yote hayo yanaelezea muunganisho ambao GeoServer hufungua. Hakuna hata moja inayoelezea kuingia kutoka kwa mteja wa mezani. Soma sehemu hizo nne kama tamko kuhusu muktadha wa mtandao wa seva, na tabaka zima la tiketi za «kwao inafanya kazi» linakuwa jambo linaloweza kushughulikiwa.
Ndiyo sababu localhost katika ghala la data ni kosa la kawaida sana. Inamaanisha muktadha wa mtandao wa mchakato wa GeoServer wenyewe. Ikiwa GeoServer inaendesha katika Docker wakati PostGIS inaendesha kwenye mwenyeji, localhost inaelekeza ndani ya chombo na haipati chochote, na hakuna usanidi wa VPN unaobadilisha hilo.
Kwenye seva, angalia njia, kisikilizaji na sera ya uthibitishaji kwa mpangilio huo. Uthibitishaji wa PostgreSQL unaotegemea mwenyeji hulinganisha anwani ya chanzo inayoona, ambayo lango linaweza kutafsiri, kwa hivyo kuongeza bwawa la VPN la wateja kwenye faili ya HBA mara chache hurekebisha muunganisho wa upande wa seva. Jaribu kama seva ingefanya: mwenyeji yule yule, mlango ule ule, mtumiaji yule yule. Ikiwa jaribio hilo linafaulu wakati GeoServer bado inashindwa, tofauti iko katika muktadha wa mchakato na si katika hifadhidata.
ip route get 10.20.5.11
ss -tnp | grep 5432
psql "host=10.20.5.11 dbname=gis user=geoserver" -c 'select 1'
Mabwawa na akiba huhifadhi hali kupitia mabadiliko
Mabwawa ya muunganisho ya ghala la data huweka soketi wazi. Handaki lililotokea saa moja baada ya bwawa kuundwa halipewi bwawa njia mpya kila mara, na muunganisho usio na kazi unaweza kukaa kwenye njia iliyokufa hadi uthibitishaji au muda wa mwisho uufunge. Angalia mipangilio ya uthibitishaji ya ghala lililosakinishwa badala ya kudhani urejeshaji, na epuka hamu ya kuanzisha upya huduma yote kabla ya kujua tabaka gani limeshindwa.
Akiba za vigae huunda picha ya kioo ya tatizo hilo: zinaweza kutoa ramani inayoonekana sahihi muda mrefu baada ya muunganisho wa hifadhidata kukatika. Kusafisha akiba ili «tuone kama inasaidia» huharibu ushahidi mmoja ambao ungekuambia njia gani ilikuwa hai.
Wasilisha ukitaja vyanzo vyote viwili
Maelezo yanayopata marekebisho ya haraka hutaja mambo mawili: ombi la mteja lililofikia GeoServer, na operesheni ya nyuma ambayo GeoServer haikuweza kukamilisha. Kwa yote mawili, mmiliki sahihi anaweza kurekebisha njia iliyoshindwa. Kwa la kwanza pekee, marekebisho ya asili ni kuweka hifadhidata hadharani, jambo ambalo hutatua tiketi kwa kuunda tatizo mbaya zaidi.
Andika tabaka, msimbo wa jibu, hitilafu ya upande wa seva na chombo au mwenyeji uliiozalisha. Hiyo ni mistari minne, na inaondoa utata kabisa.