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 ले पूरा गर्न नसकेको ब्याकएन्ड कार्य। दुवै भएमा सही मालिकले असफल भएको बाटो मर्मत गर्न सक्छ। पहिलो मात्र भएमा स्वाभाविक सुधार डेटाबेस सार्वजनिक रूपमा खोल्नु हो, जसले टिकटलाई अझ नराम्रो समस्या बनाएर समाधान गर्छ।
लेयर, प्रतिक्रिया कोड, सर्भर-पट्टिको अपवाद र त्यो बनाउने कन्टेनर वा होस्ट नोट गर्नुहोस्। यी चार लाइन हुन्, र तिनले अस्पष्टता पूर्ण रूपमा हटाउँछन्।