GeoServer మరియు PostGIS: ముఖ్యమైన VPN మార్గం సర్వర్దే
మీ ల్యాప్టాప్ GeoServerను చేరుకోవడం GeoServer PostGISను చేరుకుంటుందా అనే దాని గురించి ఏమీ చెప్పదు. రెండు మూలాలను, కాష్ పరిమితిని మరియు డేటా స్టోర్ స్వంత మూలాన్ని పోల్చండి.
మీరు QGISలో లేయర్ను తెరుస్తారు, అది రెండర్ అవుతుంది. అదే VPNలో ఉన్న సహచరుడికి అదే లేయర్కు లోపం వస్తుంది. ఎవరో VPN పాడైందని నిర్ధారణకు వస్తారు, తర్వాతి గంట డేటాబేస్ను తరలించడంలో లేదా ఈ రెండింటికీ అవసరం లేని పోర్టును తెరవడంలో గడుస్తుంది. డెస్క్టాప్ నుండి వెళ్లే అభ్యర్థన మరియు GeoServer PostGISకు పంపే క్వెరీ వేర్వేరు మెషీన్ల నుండి, వేర్వేరు నెట్వర్క్ పేరు స్థలాలలో, వేర్వేరు ఆధారాలతో బయలుదేరుతాయి. ఈ రెండు మార్గాలను వేరు చేయడమే నిర్ధారణలో ఎక్కువ భాగం.
రెండు కనెక్షన్లు, రెండు మూలాలు
QGIS -> client's permitted path (often the VPN) -> GeoServer listener
GeoServer -> server's permitted path -> PostGIS listener
రెండవ బాణం మొదటి కంప్యూటర్ సొరంగాన్ని వారసత్వంగా పొందదు. కంటైనర్లో నడిచే GeoServer కంటైనర్ నెట్వర్క్ స్టాక్ను కలిగి ఉంటుంది, హోస్ట్ది కాదు, మరియు బ్రిడ్జ్ నెట్వర్క్లోని కంటైనర్ హోస్ట్ చేరుకోలేని డేటాబేస్ను చేరుకోవచ్చు, లేదా దీనికి విరుద్ధంగా కూడా. అందువల్ల అదే వినియోగదారు ఒకే సెషన్లో విజయవంతం కావచ్చు, విఫలం కావచ్చు, సమాధానం కాష్ నుండి వచ్చిందా లేదా తాజా క్వెరీ నుండి వచ్చిందా అనే దానిపై ఆధారపడి.
| 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 |
నిజంగా విఫలమైన దశను కనుగొనండి
సేవా స్థాయి తిరస్కరణ, తన డేటా స్టోర్ను చేరుకోలేని ఇమేజ్ అభ్యర్థన, మరియు ఒక లేయర్లో అనుమతి సమస్య బ్రౌజర్ ట్యాబ్లో ఒకేలా కనిపిస్తాయి, సర్వర్ లాగ్లో పూర్తిగా భిన్నంగా. ఖచ్చితమైన ఆపరేషన్ను అడగండి, ఆపై అదే సమయ ముద్రకు సర్వర్ స్వంత సంఘటనను చదవండి.
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 డేటా స్టోర్ సమాధానం ఇచ్చిందని నిరూపిస్తుంది. సేవా మినహాయింపు పత్రంతో వచ్చిన 200 ఇవ్వలేదని నిరూపిస్తుంది, మరియు మినహాయింపు పాఠ్యం సాధారణంగా క్లయింట్ను కాకుండా స్టోర్ను పేర్కొంటుంది.
డేటా స్టోర్ను సర్వర్ వైపు నుండి చదవండి
GeoServer యొక్క PostGIS సూచన స్టోర్కు ఏమి కావాలో జాబితా చేస్తుంది: హోస్ట్, పోర్ట్, డేటాబేస్ మరియు ఆధారాలు. ఇవన్నీ GeoServer తెరిచే కనెక్షన్ను వివరిస్తాయి. వీటిలో ఏదీ డెస్క్టాప్ క్లయింట్ నుండి లాగిన్ వివరించదు. ఈ నాలుగు ఫీల్డ్లను సర్వర్ నెట్వర్క్ సందర్భం గురించిన ప్రకటనగా చదవండి, «వాళ్ల దగ్గర పని చేస్తుంది» టికెట్ల మొత్తం వర్గం పరిష్కరించదగినదవుతుంది.
అందుకే localhost డేటా స్టోర్లో ఇంత సాధారణ పొరపాటు. దాని అర్థం GeoServer ప్రాసెస్ స్వంత నెట్వర్క్ సందర్భం. GeoServer Dockerలో నడుస్తుండగా PostGIS హోస్ట్లో నడుస్తుంటే, localhost కంటైనర్ లోపలికి సూచిస్తుంది మరియు ఏమీ కనుగొనదు, మరియు ఏ VPN కాన్ఫిగరేషన్ దాన్ని మార్చదు.
సర్వర్లో మార్గం, శ్రోత మరియు ప్రామాణీకరణ విధానాన్ని అదే క్రమంలో తనిఖీ చేయండి. PostgreSQL హోస్ట్ ఆధారిత ప్రామాణీకరణ తాను చూసే మూల చిరునామాను సరిపోల్చుతుంది, దాన్ని గేట్వే అనువదించవచ్చు, కాబట్టి HBA ఫైల్కు క్లయింట్ VPN పూల్ జోడించడం సర్వర్ వైపు కనెక్షన్ను అరుదుగా సరిచేస్తుంది. సర్వర్ చేసినట్లే పరీక్షించండి: అదే హోస్ట్, అదే పోర్ట్, అదే వినియోగదారు. ఆ పరీక్ష విజయవంతమైనా GeoServer ఇంకా విఫలమైతే, భేదం డేటాబేస్లో కాదు, ప్రాసెస్ సందర్భంలో ఉంది.
ip route get 10.20.5.11
ss -tnp | grep 5432
psql "host=10.20.5.11 dbname=gis user=geoserver" -c 'select 1'
పూల్లు మరియు కాష్లు మార్పుల అంతటా స్థితిని ఉంచుతాయి
డేటా స్టోర్ కనెక్షన్ పూల్లు సాకెట్లను తెరిచి ఉంచుతాయి. పూల్ సృష్టించిన గంట తర్వాత వచ్చిన సొరంగం పూల్కు కొత్త మార్గం ఇస్తుందని ఖాయం లేదు, మరియు నిష్క్రియ కనెక్షన్ ధృవీకరణ లేదా సమయ పరిమితి మూసే వరకు మృత మార్గంలో ఉండవచ్చు. ఇన్స్టాల్ చేసిన స్టోర్ ధృవీకరణ సెట్టింగ్లను చూడండి, పునరుద్ధరణను ఊహించడం బదులు, మరియు ఏ లేయర్ విఫలమైందో తెలుసుకునే ముందు మొత్తం సేవను పునఃప్రారంభించే ప్రలోభాన్ని నివారించండి.
టైల్ కాష్లు ఆ సమస్యకు దర్పణ ప్రతిబింబాన్ని సృష్టిస్తాయి: డేటాబేస్ కనెక్షన్ తెగిపోయిన చాలా కాలం తర్వాత కూడా అవి సరిగ్గా కనిపించే మ్యాప్ను అందించగలవు. «సహాయపడుతుందో లేదో చూద్దాం» అని కాష్ను ఖాళీ చేయడం, ఏ మార్గం సజీవంగా ఉందో చెప్పే ఏకైక సాక్ష్యాన్ని నాశనం చేస్తుంది.
రెండు మూలాలను పేర్కొని అప్పగించండి
త్వరిత పరిష్కారం పొందే వివరణ రెండు విషయాలను పేర్కొంటుంది: GeoServerను చేరుకున్న క్లయింట్ అభ్యర్థన, మరియు GeoServer పూర్తి చేయలేని బ్యాకెండ్ ఆపరేషన్. రెండూ ఉంటే సరైన యజమాని విఫలమైన మార్గాన్ని సరిచేయగలరు. మొదటిది మాత్రమే ఉంటే సహజమైన పరిష్కారం డేటాబేస్ను బహిరంగంగా చూపడం, అది టికెట్ను మరింత దారుణమైన సమస్యను సృష్టించి పరిష్కరిస్తుంది.
లేయర్, ప్రతిస్పందన కోడ్, సర్వర్ వైపు మినహాయింపు మరియు దాన్ని సృష్టించిన కంటైనర్ లేదా హోస్ట్ను గుర్తించండి. అవి నాలుగు పంక్తులు, మరియు అవి అస్పష్టతను పూర్తిగా తొలగిస్తాయి.