यह दावा कि App Engine Standard Cloud VPN के ज़रिए निजी डेटाबेस तक नहीं पहुँच सकता, प्लेटफ़ॉर्म की पिछली पीढ़ी का अवशेष है। Standard इंस्टेंस को कुछ अन्य रनटाइम की तरह VPC-मूल पता नहीं मिलता, लेकिन वे आपके नेटवर्क में मौजूद Serverless VPC Access कनेक्टर के ज़रिए egress भेज सकते हैं। एक बार वह पथ मौजूद हो, तो Cloud VPN और दूरस्थ फ़ायरवॉल कनेक्टर के ट्रैफ़िक को किसी भी अन्य स्रोत की तरह देखते हैं। जो विफल होता है, वह शायद ही कभी क्षमता स्वयं होती है। यह उन तीन सेटिंग्स में से एक है जो कभी संरेखित नहीं हुईं।

पुराना उत्तर कहाँ से आया

कनेक्टर के अस्तित्व से पहले, व्यावहारिक उत्तर वाकई यह था कि Standard सिर्फ़ सार्वजनिक एंडपॉइंट से बात कर सकता था, और टीमें इसे टालने के लिए प्रॉक्सी VM या किसी दूसरे रनटाइम पर चली जाती थीं। प्लेटफ़ॉर्म बदला, लोककथा नहीं। ऑनलाइन बहुत सी सलाह आज भी उस युग को दर्शाती है जब egress का कोई विकल्प ही नहीं था।

सुधार जितना सुनाई देता है उससे संकरा है। Standard निजी नेटवर्क तक पहुँच सकता है, लेकिन सिर्फ़ समर्थित egress एकीकरण के ज़रिए, और सिर्फ़ उन गंतव्यों के लिए जिन्हें वह एकीकरण वाकई पकड़ता है।

पहले egress पथ चुनें

सेवा से जुड़ा कनेक्टर ही उसका ट्रैफ़िक VPC में डालता है। कनेक्टर का दस्तावेज़ क्षेत्रीय पूर्वापेक्षा और egress सेटिंग्स की सूची देता है; कनेक्टर सेवा के क्षेत्र में होना चाहिए और डिप्लॉय करने वाली पहचान के लिए उपयोग करने योग्य होना चाहिए।

vpc_access_connector:
  name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
  egress_setting: private-ranges-only

private-ranges-only निजी गंतव्यों को VPC में भेजता है और बाकी सब कुछ सामान्य इंटरनेट पथ पर छोड़ देता है, जो आम तौर पर डेटाबेस कनेक्शन को चाहिए। all-traffic बहिर्गामी ट्रैफ़िक को VPC से व्यापक रूप से धकेलता है, इसलिए सामान्य इंटरनेट कॉल भी VPC की NAT और फ़ायरवॉल स्थिति विरासत में पाते हैं।

फ़ाइल को स्थानीय रूप से संपादित करना डिप्लॉय किए बिना कुछ नहीं बदलता। चल रहा संस्करण वही कॉन्फ़िगरेशन रखता है जिसके साथ वह बना था।

स्रोत पता कनेक्टर है, आपका लैपटॉप नहीं

यहीं ज़्यादातर डिबगिंग समय जाता है। दूरस्थ VPN गेटवे और डेटाबेस फ़ायरवॉल को VPC के अंदर कनेक्टर की आवंटित रेंज स्वीकार करनी होती है, न आपके कार्यालय का पता और न सेवा का सार्वजनिक egress पता। एक भी नियम लिखने से पहले कंसोल में वह रेंज खोजें।

दो और जगहों को सहमत होना चाहिए। VPC रूट टेबल को दूरस्थ डेटाबेस नेटवर्क के लिए मार्ग चाहिए, और दूरस्थ पक्ष को कनेक्टर रेंज के लिए वापसी मार्ग चाहिए। अगर टनल ट्रैफ़िक सेलेक्टर का उपयोग करता है, तो पुष्टि करें कि कनेक्टर रेंज बातचीत के दायरे में है। केवल दूरस्थ से स्थानीय दिशा में मौजूद मार्ग आम चूक है, और वह पिंग पास कराता है पर TCP हैंडशेक कभी पूरा नहीं करता।

केवल VM सबनेट स्वीकार करने वाली टनल कनेक्टर के पैकेट बिना किसी उपयोगी त्रुटि संदेश के गिरा देगी, इसलिए डेटाबेस का टाइमआउट क्रेडेंशियल समस्या जैसा लगता है।

DNS अलग रास्ते से चलता है

निजी डेटाबेस होस्टनाम को उस नेटवर्क के अंदर हल होना चाहिए जहाँ कनेक्टर पहुँचता है, Cloud DNS पीयरिंग या VPC द्वारा उपयोग किए जा सकने वाले फ़ॉरवर्डिंग ज़ोन के ज़रिए। इसे अपने वर्कस्टेशन पर हल करना डिप्लॉय की गई सेवा के बारे में कुछ साबित नहीं करता, क्योंकि आपका लैपटॉप उस रिज़ॉल्वर का उपयोग नहीं करता।

अगर नाम VPC के अंदर से सार्वजनिक पते पर हल होता है, तो आप गलत फ़ायरवॉल डिबग करने वाले हैं।

URL Fetch कनेक्टर का उपयोग नहीं करता

egress सेटिंग रनटाइम के सामान्य बहिर्गामी सॉकेट कवर करती है, और पुरानी URL Fetch सेवा उस पथ का हिस्सा नहीं है। urlfetch के ज़रिए भेजा गया अनुरोध कॉन्फ़िगरेशन जो भी कहे, कनेक्टर को अनदेखा करता है। जब विफल कॉल किसी पुरानी लाइब्रेरी में होती है जो अब भी URL Fetch का उपयोग करती है, तो समाधान उस कॉल को मानक HTTP क्लाइंट पर ले जाना है।

डेटाबेस ड्राइवर के लिए यह शायद ही कभी समस्या होती है, लेकिन यह क्लासिक कारण है कि एक ही सेवा से एक एंडपॉइंट काम करता है और दूसरा नहीं।

एक संकरी क्वेरी से सत्यापित करें

डिप्लॉय करें, फिर दूरस्थ पक्ष को देखते हुए डिप्लॉय किए गए संस्करण से एक अनुमत डेटाबेस ऑपरेशन चलाएँ। डेटाबेस या VPN गेटवे द्वारा लॉग किया गया स्रोत पता कनेक्टर का होना चाहिए। अगर नहीं है, तो अनुरोध कभी VPC में नहीं आया और कोई भी टनल कॉन्फ़िगरेशन इसे ठीक नहीं करेगा। इसकी तुलना कंसोल में खोजी गई रेंज से करें; बेमेल का मतलब आम तौर पर यह है कि दूसरा कनेक्टर संस्करण को सेवा दे रहा है।

VPC के अंदर किसी VM से सफल क्वेरी साबित करती है कि मार्ग मौजूद है। यह साबित नहीं करती कि सेवा ने उसे चुना।

संबंधित लेख