Қабатты 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 оның жауап бермегенін дәлелдейді, ал ерекшелік мәтіні әдетте клиентті емес, қойманы атайды.

Дерекқор қоймасын сервер жағынан оқыңыз

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 аяқтай алмаған backend операциясы. Екеуімен бірге дұрыс иесі сәтсіз болған жолды жөндей алады. Тек біріншісімен табиғи түзету дерекқорды жария түрде ашу болып табылады, бұл билетті одан да нашар мәселе жасау арқылы шешеді.

Қабатты, жауап кодын, сервер жағындағы ерекшелікті және оны жасаған контейнерді немесе хостты жазып алыңыз. Бұл төрт жол және олар екіұштылықты толығымен жояды.

Қатысты мақалалар