App Engine Standard Cloud VPN-এর মাধ্যমে একটি প্রাইভেট ডেটাবেসে পৌঁছাতে পারে না—এই দাবিটি প্ল্যাটফর্মের আগের প্রজন্মের অবশেষ। Standard ইনস্ট্যান্সগুলো কিছু অন্য রানটাইমের মতো VPC-নেটিভ ঠিকানা পায় না, তবে আপনার নেটওয়ার্কে থাকা Serverless VPC Access কানেক্টরের মাধ্যমে ইগ্রেস পাঠাতে পারে। সেই পথ একবার তৈরি হলে Cloud VPN ও দূরবর্তী ফায়ারওয়াল কানেক্টরের ট্রাফিককে অন্য যেকোনো সোর্সের মতোই দেখে। ব্যর্থ হয় খুব কমই সামর্থ্যটি নিজে। বরং এটি এমন তিনটি সেটিংসের একটি যা কখনো মেলানো হয়নি।

পুরোনো উত্তরটি কোথা থেকে এসেছে

কানেক্টর থাকার আগে ব্যবহারিক উত্তর সত্যিই ছিল যে Standard কেবল পাবলিক এন্ডপয়েন্টের সঙ্গে কথা বলতে পারে, আর দলগুলো এটি এড়াতে প্রক্সি VM বা অন্য রানটাইমে চলে যেত। প্ল্যাটফর্ম বদলেছে, লোককথা বদলায়নি। অনলাইনের অনেক পরামর্শ এখনো সেই যুগের প্রতিচ্ছবি যখন ইগ্রেসের কোনো বিকল্পই ছিল না।

সংশোধনটি যতটা শোনায় ততটা সংকীর্ণ নয়। Standard প্রাইভেট নেটওয়ার্কে পৌঁছাতে পারে, তবে কেবল একটি সমর্থিত ইগ্রেস ইন্টিগ্রেশনের মাধ্যমে, এবং কেবল সেই গন্তব্যগুলোর জন্য যা ওই ইন্টিগ্রেশন সত্যিই ধরে।

প্রথমে ইগ্রেস পথ বেছে নিন

সার্ভিসের সঙ্গে যুক্ত কানেক্টরই তার ট্রাফিককে VPC-তে ঢোকায়। কানেক্টরের ডকুমেন্টেশন আঞ্চলিক পূর্বশর্ত ও ইগ্রেস সেটিংসের তালিকা দেয়; কানেক্টরটি অবশ্যই সার্ভিসের অঞ্চলে থাকতে হবে এবং ডিপ্লয় করা পরিচয়ের দ্বারা ব্যবহারযোগ্য হতে হবে।

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-র ভিতরে কানেক্টরের বরাদ্দকৃত রেঞ্জ গ্রহণ করতে হবে, আপনার অফিসের ঠিকানা বা সার্ভিসের পাবলিক ইগ্রেস ঠিকানা নয়। একটি নিয়ম লেখার আগেই কনসোলে সেই রেঞ্জ খুঁজে নিন।

আরও দুটি জায়গায় একমত হতে হবে। VPC রুট টেবিলে দূরবর্তী ডেটাবেস নেটওয়ার্কের জন্য একটি রুট দরকার, আর দূরবর্তী পক্ষের কানেক্টর রেঞ্জের জন্য ফেরত রুট দরকার। টানেল যদি ট্রাফিক সিলেক্টর ব্যবহার করে, তবে নিশ্চিত করুন কানেক্টর রেঞ্জটি সমঝোতাকৃত পরিধির ভিতরে আছে। কেবল দূরবর্তী থেকে স্থানীয় দিকে থাকা রুট সাধারণ ভুল, এবং এটি পিং পাস করায় কিন্তু কখনো TCP হ্যান্ডশেক সম্পূর্ণ করে না।

যে টানেল কেবল একটি VM সাবনেট গ্রহণ করে তা কানেক্টরের প্যাকেটগুলো কোনো কাজের ত্রুটি বার্তা ছাড়াই ফেলে দেবে, এজন্য ডেটাবেসের টাইমআউটকে ক্রেডেনশিয়াল সমস্যার মতো দেখায়।

DNS আলাদা পথে চলে

একটি প্রাইভেট ডেটাবেস হোস্টনেমকে কানেক্টর যে নেটওয়ার্কে পৌঁছায় তার ভিতরে রিজলভ হতে হবে, Cloud DNS পিয়ারিং বা VPC ব্যবহার করতে পারে এমন ফরওয়ার্ডিং জোনের মাধ্যমে। আপনার ওয়ার্কস্টেশনে এটি রিজলভ করলে ডিপ্লয় করা সার্ভিস সম্পর্কে কিছুই প্রমাণ হয় না, কারণ আপনার ল্যাপটপ ওই রিজলভার ব্যবহার করছে না।

VPC-র ভিতর থেকে নামটি যদি পাবলিক ঠিকানায় রিজলভ হয়, তবে আপনি ভুল ফায়ারওয়াল ডিবাগ করতে যাচ্ছেন।

URL Fetch কানেক্টর ব্যবহার করে না

ইগ্রেস সেটিং রানটাইমের স্বাভাবিক বহির্গামী সকেটগুলো কভার করে, আর পুরোনো URL Fetch সার্ভিস ওই পথের অংশ নয়। urlfetch-এর মাধ্যমে পাঠানো রিকোয়েস্ট কনফিগারেশন যা-ই বলুক কানেক্টরকে উপেক্ষা করে। যখন ব্যর্থ কলটি এমন পুরোনো লাইব্রেরিতে থাকে যা এখনো URL Fetch ব্যবহার করে, তখন সমাধান হলো সেই কলটিকে স্ট্যান্ডার্ড HTTP ক্লায়েন্টে সরানো।

ডেটাবেস ড্রাইভারের জন্য এটি বিরলভাবে সমস্যা, তবে একই সার্ভিস থেকে একটি এন্ডপয়েন্ট কাজ করা আর অন্যটি না করার এটি ক্লাসিক কারণ।

একটি সংকীর্ণ কোয়েরি দিয়ে যাচাই করুন

ডিপ্লয় করুন, তারপর দূরবর্তী দিকটি লক্ষ্য রেখে ডিপ্লয় করা সংস্করণ থেকে একটি অনুমোদিত ডেটাবেস অপারেশন চালান। ডেটাবেস বা VPN গেটওয়ে যে সোর্স ঠিকানা লগ করে তা কানেক্টরের হওয়া উচিত। যদি না হয়, রিকোয়েস্টটি কখনো VPC-তে ঢোকেনি এবং কোনো টানেল কনফিগারেশনই তা ঠিক করবে না। কনসোলে আপনি যে রেঞ্জ খুঁজেছিলেন তার সঙ্গে তুলনা করুন; অমিল সাধারণত বোঝায় একটি দ্বিতীয় কানেক্টর সংস্করণটিকে সেবা দিচ্ছে।

VPC-র ভিতরের একটি VM থেকে সফল কোয়েরি প্রমাণ করে রুটটি আছে। এটি প্রমাণ করে না যে সার্ভিসটি সেটিই বেছে নিয়েছে।

সম্পর্কিত নিবন্ধ