Та 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 үйлдэл. Хоёулаа байвал зөв эзэн бүтэлгүйтсэн замыг засаж чадна. Зөвхөн эхнийхтэй бол байгалийн засвар нь мэдээллийн санг нийтэд нээх бөгөөд энэ нь тасалбарыг илүү муу асуудал үүсгэж шийддэг.

Давхарга, хариултын код, серверийн талын үл хамаарах зүйл, ба түүнийг үүсгэсэн контейнер эсвэл хостыг тэмдэглэ. Энэ нь дөрвөн мөр бөгөөд хоёрдмол утгыг бүрэн арилгана.

Холбоотой нийтлэлүүд