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 |
Чындыгында ийгиликсиз болгон кадамды табыңыз
Кызмат деңгээлиндеги баш тартуу, маалымат кампасына жетпеген сүрөт сурамы жана бир катмардагы укук маселеси браузердин өтмөгүндө окшош көрүнөт, ал эми сервер журналында такыр башкача. Так операцияны сураңыз, анан ошол убакыт белгиси үчүн 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 операциясы. Экөө менен бирге туура ээси ийгиликсиз болгон жолду оңдой алат. Бир гана биринчиси менен табигый оңдоо маалымат базасын ачыкка чыгаруу болуп саналат, бул билетти андан жаманраак маселе жаратуу менен чечет.
Катмарды, жооп кодун, сервер тарабындагы өзгөчөлүктү жана аны жараткан контейнерди же хостту жазып алыңыз. Бул төрт сап жана алар эки маанилүүлүктү толугу менен жоёт.