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 ਪੂਰੀ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਦੋਵੇਂ ਹੋਣ ਤਾਂ ਸਹੀ ਮਾਲਕ ਫੇਲ੍ਹ ਹੋਇਆ ਰਾਹ ਸੁਧਾਰ ਸਕਦਾ ਹੈ। ਸਿਰਫ਼ ਪਹਿਲਾ ਹੋਣ ਤਾਂ ਕੁਦਰਤੀ ਸੁਧਾਰ ਡੇਟਾਬੇਸ ਨੂੰ ਜਨਤਕ ਤੌਰ ਉੱਤੇ ਖੋਲ੍ਹਣਾ ਹੈ, ਜੋ ਟਿਕਟ ਨੂੰ ਹੋਰ ਮਾੜੀ ਸਮੱਸਿਆ ਬਣਾ ਕੇ ਹੱਲ ਕਰਦਾ ਹੈ।
ਲੇਅਰ, ਜਵਾਬ ਕੋਡ, ਸਰਵਰ-ਪਾਸੇ ਦਾ ਅਪਵਾਦ ਅਤੇ ਉਹ ਕੰਟੇਨਰ ਜਾਂ ਹੋਸਟ ਜਿਸਨੇ ਇਹ ਬਣਾਇਆ, ਨੋਟ ਕਰੋ। ਇਹ ਚਾਰ ਲਾਈਨਾਂ ਹਨ, ਅਤੇ ਇਹ ਅਸਪਸ਼ਟਤਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਦੂਰ ਕਰਦੀਆਂ ਹਨ।