Отворите слој у 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 testedWhat it proves
Portal page or GetCapabilitiesHTTP reachability to GeoServer only
A tile served from cachenothing about the database
GetMap for an uncached layera datastore query had to happen

Пронађите корак који је стварно пао

Одбијање на нивоу услуге, захтев за сликом који не достигне своје складиште података и проблем са дозволама у једном слоју изгледају слично на картици прегледача, а сасвим другачије у записнику сервера. Затражите конкретну операцију, а затим прочитајте сопствени догађај GeoServer-а за исту временску ознаку.

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 са документом изузетка услуге доказује да није, а текст изузетка обично именује складиште, а не клијента.

Читајте складиште података са стране сервера

Референца PostGIS GeoServer-а наводи шта складиште треба: хост, порт, базу података и акредитиве. Све то описује везу коју GeoServer отвара. Ништа од тога не описује пријаву са клијентског рачунара. Читајте та четири поља као тврдњу о мрежном контексту сервера и цела класа захтева „код њих ради” постаје решива.

Зато је localhost у складишту података тако честа грешка. Значи мрежни контекст самог процеса GeoServer-а. Ако GeoServer ради у Docker-у док PostGIS ради на хосту, localhost показује у унутрашњост контејнера и не налази ништа, и никаква VPN конфигурација то не мења.

На серверу проверите руту, слушач и правило провере аутентичности тим редом. Провера аутентичности PostgreSQL-а на основу хоста упоређује изворну адресу коју види, а пролаз је може превести, па додавање клијентског VPN скупа у HBA датотеку ретко поправља везу на страни сервера. Тестирајте како би сервер то учинио: исти хост, исти порт, исти корисник. Ако тај тест успе док 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 није могао довршити. Са обома прави власник може поправити путању која је пала. Са само првим, природна је поправка јавно изложити базу података, што захтев решава стварањем горег проблема.

Забележите слој, код одговора, изузетак на страни сервера те контејнер или хост који ју је произвео. То су четири реда и потпуно уклањају двосмисленост.

Повезани чланци