ক্লাউড এসকিউএল-এর সাথে সংযুক্ত হচ্ছে: কম্পিউট ইঞ্জিন, প্রাইভেট আইপি এবং ক্লাউড এসকিউএল প্রক্সি

1. ভূমিকা

শেষ আপডেট: 2021-05-06

সংযোগ সম্পর্কে চিন্তা

সেখানে অনেক ধরনের অ্যাপ্লিকেশন এবং ফ্রেমওয়ার্ক রয়েছে। এই কোডল্যাবে, আমরা ক্লাউড এসকিউএল প্রক্সি ব্যবহার করে একটি অভ্যন্তরীণ ব্যক্তিগত আইপি ঠিকানার মাধ্যমে Google কম্পিউট ইঞ্জিনের একটি পরিচালিত ভার্চুয়াল মেশিনে চালিত একটি অ্যাপ্লিকেশন থেকে ক্লাউড SQL-এর সাথে সংযোগ কভার করব৷ এটি ক্লাউডে একটি রাষ্ট্রীয় অ্যাপ্লিকেশন চালানোর জন্য একটি অবিশ্বাস্যভাবে নিরাপদ উপায়। আপনি শুধুমাত্র একটি ব্যক্তিগত আইপি ব্যবহার করে এবং আপনার জন্য SSL কানেক্টিভিটি পরিচালনা করে এমন SQL প্রক্সি ব্যবহার করে ইন্টারনেটে আপনার এক্সপোজার কমিয়ে আনছেন।

এর জন্য একটি সাধারণ ব্যবহার-কেস হবে, উদাহরণস্বরূপ, একটি অন-প্রিমিস অ্যাপ্লিকেশন যা স্থানীয়ভাবে পরিবর্তে ক্লাউডে চালানোর জন্য স্থানান্তরিত করা হয়েছে।

আপনি কি নির্মাণ করবেন

এই কোডল্যাবটি খুবই সংক্ষিপ্ত। ধারণাটি হল অ্যাপ্লিকেশন সম্পর্কে খুব বেশি চিন্তা না করে সংযোগের অংশের বাদাম এবং বোল্টের মধ্য দিয়ে আপনাকে হাঁটা। একটি নিখুঁত বিশ্বে, ক্লাউড এসকিউএল-এর সাথে সংযোগ করা একটি SQL ডাটাবেসের অন্য যেকোন উদাহরণের সাথে সংযোগ করার মতোই, তাই আপনি এই কোডল্যাবে যা তৈরি করেন তা নিতে এবং যেকোনো উত্পাদন অ্যাপ্লিকেশনে এটি প্রয়োগ করতে সক্ষম হওয়া উচিত।

নির্দেশাবলীতে জিসিপি কনসোলে কাজ করার জন্য ওয়াক-থ্রু উভয়ই অন্তর্ভুক্ত থাকবে, সেইসাথে সিএলআই বা অটোমেশন ব্যবহারের জন্য জিক্লাউড কমান্ডের সমতুল্য অন্তর্ভুক্ত থাকবে।

স্বতন্ত্র পদক্ষেপগুলি হল:

  • ক্লাউড SQL দৃষ্টান্তে সংযোগ সক্ষম করতে একটি ন্যূনতম পরিষেবা অ্যাকাউন্ট তৈরি করুন৷
  • গুগল কম্পিউট ইঞ্জিনে (GCE) একটি VM তৈরি করুন
  • একটি ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করুন (এই টিউটোরিয়ালটি পোস্টগ্রেস ব্যবহার করে, কিন্তু মাইএসকিউএল বা এসকিউএল সার্ভারের জন্য একইভাবে কাজ করে)
  • GCE দৃষ্টান্তে ক্লাউড SQL প্রক্সি ডাউনলোড করুন এবং চালান

আপনি কি প্রয়োজন হবে

  • একটি GCP অ্যাকাউন্ট যেটিতে আপনার API সক্ষম করার এবং পরিষেবা তৈরি করার অনুমতি রয়েছে৷

2. একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

আপনার GCP প্রকল্পের মধ্যে বিভিন্ন পরিষেবা ব্যবহার করার অনুমতি দেওয়ার জন্য পরিষেবা অ্যাকাউন্টগুলি ব্যবহার করা হয়। এই কোডল্যাবের জন্য, ক্লাউড এসকিউএল প্রক্সিকে আমাদের ক্লাউড এসকিউএল ইন্সট্যান্সের সাথে সংযোগ করার অনুমতি দেওয়ার জন্য আমাদের একটি প্রয়োজন।

কনসোলে

IAM পরিষেবা অ্যাকাউন্ট পৃষ্ঠাতে যান এবং ক্লিক করুন f8393a08b37a422c.png পৃষ্ঠার শীর্ষে বোতাম।

আপনার পরিষেবা অ্যাকাউন্টকে একটি অনন্য নাম এবং আইডি দিন এবং তৈরি করুন ক্লিক করুন৷

পরবর্তী পৃষ্ঠায়, একটি ভূমিকা নির্বাচন করার জন্য ড্রপ-ডাউনে ক্লিক করুন। "ক্লাউড SQL" এর জন্য ফিল্টার করুন এবং ক্লাউড SQL ক্লায়েন্ট ভূমিকা নির্বাচন করুন৷ CONTIUE এ ক্লিক করুন।

সম্পন্ন ক্লিক করুন.

জিক্লাউড ব্যবহার করে

পরিষেবা অ্যাকাউন্ট তৈরি করুন:

gcloud iam service-accounts create <SERVICE_ACCOUNT_NAME> --display-name "<SERVICE_ACCOUNT_NAME> service account"

এটি পরিষেবা অ্যাকাউন্ট তৈরি করে, কিন্তু বর্তমানে এটিতে কোনো ভূমিকা/অনুমতি দেওয়া নেই। উপযুক্ত ভূমিকা বরাদ্দ করতে, চালান:

gcloud projects add-iam-policy-binding <GCP PROJECT ID> --member serviceAccount:<SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com --role roles/cloudsql.client

যেমন আপনার পরিষেবা অ্যাকাউন্টটি তৈরি করার সময় যদি sa-test নামে পরিচিত হয় এবং আপনার প্রকল্পটি হয় my-project-test তাহলে কমান্ডটি হবে:

gcloud projects add-iam-policy-binding my-project-test --member serviceAccount:sa-test@my-project-test.iam.gserviceaccount.com --role roles/cloudsql.client
gcloud iam service-accounts keys create service-account.json --iam-account <SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com

3. কম্পিউট ইঞ্জিন VM তৈরি করা

Google Compute Engine হল পরিচালিত পরিষেবা যেখানে ভার্চুয়াল মেশিন চলবে যা আমাদের অ্যাপ্লিকেশনটিকে ধরে রাখবে যা থেকে আমরা সংযোগ করতে চাই৷ এই কোডল্যাবে, আমরা একটি অ্যাপ্লিকেশন তৈরি করছি না, তবে আমরা psql চালানোর মাধ্যমে সংযোগ নিশ্চিত করব।

কনসোলে

গুগল কম্পিউট ইঞ্জিন পৃষ্ঠায় যান এবং ক্লিক করুন 77c46cd1f51bed5c.png বোতাম

এখানে অনেকগুলি বিকল্প রয়েছে, শুধুমাত্র আপনাকে যা করতে হবে তা হল:

  1. আপনার উদাহরণ একটি নাম দিন
  2. Machine type f1-micro পরিবর্তন করুন
  3. আইডেন্টিটি এবং এপিআই অ্যাক্সেসের অধীনে, Default compute service account থেকে Service account জন্য ড্রপডাউনটি পরিবর্তন করুন যা আপনি আগের ধাপে তৈরি করেছেন।
  4. পৃষ্ঠার নীচে সমস্ত উপায় তৈরি করুন ক্লিক করুন

জিক্লাউড ব্যবহার করে

পরিষেবা অ্যাকাউন্টটি আপনার আগে তৈরি করা পরিষেবা অ্যাকাউন্টের পুরো নাম, তাই এটি ফর্ম্যাটে থাকবে: <NAME>@<PROJECT>.iam.gserviceaccount.com

gcloud compute instances create <INSTANCE NAME> --machine-type=f1-micro --zone=us-central1-b --service-account=<SERVICE ACCOUNT FULL NAME>
gcloud compute zones list

4. ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করা

Cloud SQL হল আমাদের পরিচালিত রিলেশনাল ডাটাবেস অফার। এটি MySQL, PostgreSQL এবং SQL সার্ভার সমর্থন করে। এই কোডল্যাবের জন্য, আমরা একটি Postgres ডাটাবেস তৈরি করব, কিন্তু নির্দেশাবলী তিনটির জন্যই একই রকম।

কনসোলে

ক্লাউড এসকিউএল পৃষ্ঠায় যান এবং ক্লিক করুন 241836b315e11bf5.png বোতাম

আমি যেমন উল্লেখ করেছি, এই কোডল্যাবের বেশিরভাগই যেকোন SQL স্বাদের জন্য জেনেরিক, কিন্তু এই কোডল্যাবের জন্য, PostgreSQL বেছে নিন।

  1. আপনার উদাহরণ একটি আইডি দিন
  2. ডিফল্ট ব্যবহারকারীর জন্য একটি পাসওয়ার্ড লিখুন (ব্যবহারকারীর নামটি নির্বাচিত ডিবি-র জন্য ডিফল্ট হবে, যেমন MySQL-এর জন্য root বা PostgreSQL-এর জন্য postgres )
  3. আপনি যদি আপনার কম্পিউট দৃষ্টান্তের অঞ্চল পরিবর্তন করেন, তাহলে আপনাকে এখানে অঞ্চলটি মেলে পরিবর্তন করতে হবে।
  4. নীচে স্ক্রোল করুন এবং show configuration options ক্লিক করুন
  5. Connectivity বিভাগটি প্রসারিত করুন
  6. Public IP বিকল্পটি আনচেক করুন এবং Private IP চেকবক্সটি চেক করুন
  7. প্রাইভেট আইপি চেক করার সময় ড্রপডাউনে default নির্বাচন করা হয়েছে তা নিশ্চিত করুন
  8. নীচে স্ক্রোল করুন এবং তৈরি করুন ক্লিক করুন

উদাহরণটি সাধারণত শুরু হতে কয়েক মিনিট সময় নেয়।

জিক্লাউড ব্যবহার করে

যেহেতু এখান থেকে এপিআই সক্ষম করার জন্য আমাদের কাছে কোন সুন্দর প্রম্পট নেই, তাই আমাদের এটি ম্যানুয়ালি করতে হবে

gcloud services enable servicenetworking.googleapis.com

এর পরে, আমাদের ডিফল্ট VPC নেটওয়ার্কে ব্যক্তিগত পরিষেবা সংযোগ সক্ষম করতে হবে। এটি করার প্রথম ধাপ হল আমাদের উদাহরণের জন্য ব্যবহার করার জন্য IP ঠিকানাগুলির একটি নামকৃত পরিসর বরাদ্দ করা।

gcloud compute addresses create sql-codelab-allocation --global --purpose=VPC_PEERING --prefix-length=24 --network=default

পরবর্তীতে আমাদের অভ্যন্তরীণ পরিষেবাগুলিতে সেই পরিসরের আইপি বরাদ্দ করা হচ্ছে (এতে প্রায় এক মিনিট সময় লাগে)।

gcloud services vpc-peerings update --service=servicenetworking.googleapis.com  --network=default     --project=<PROJECT ID> --ranges=sql-codelab-allocation --force

এবং অবশেষে, নিজেই উদাহরণ তৈরি করা শুধুমাত্র বিটা সংস্করণের সাথে উপলব্ধ। --no-assign-ip এবং --network=default এর সংমিশ্রণ ব্যক্তিগত IP সংযোগ সক্ষম করে। এই সময়ে, একই সময়ে প্রাইভেট আইপি এবং পাবলিক আইপি উভয়ই সক্ষম করার কোন উপায় নেই, তাই আপনার যদি সর্বজনীন অ্যাক্সেসের প্রয়োজন হয়, তাহলে আপনাকে পোস্ট-সৃষ্টির উদাহরণটি সম্পাদনা করতে হবে। এটি সম্পূর্ণ হতে কয়েক মিনিট সময় নেয়।

gcloud beta sql instances create test-sql-codelab-00 --no-assign-ip --database-version=POSTGRES_11 --tier=db-f1-micro --region=us-central1 --network=default --root-password=<PASSWORD>

5. ক্লাউড এসকিউএল প্রক্সি সেটআপ করুন এবং চালান৷

একবার আমরা VM এর সাথে সংযুক্ত হয়ে গেলে, আমাদের একটি উদাহরণ সংযোগ স্ট্রিং প্রয়োজন হবে। প্রথমে আমরা এটি ধরব, তারপর আমরা SSH এর মাধ্যমে VM এর সাথে সংযোগ করব। এই টুকরোগুলির জন্য নির্দেশাবলী কনসোল বনাম জিক্লাউডের জন্য তাদের নিজ নিজ বিভাগে থাকবে, এবং তারপর বাকিগুলি তার নিজস্ব বিভাগে VM-এর শেল থেকে চালিত কমান্ড হবে।

কনসোলে

এখানে যান এবং আপনার ক্লাউড এসকিউএল ইনস্ট্যান্সের নামে ক্লিক করুন।

একটু নিচে স্ক্রোল করুন, এবং পরে ব্যবহারের জন্য Connection name কোথাও অনুলিপি করুন।

Google Compute Engine দৃষ্টান্ত তালিকা পৃষ্ঠাতে যান এবং আপনার VM সহ সারিটি খুঁজুন।

Connect কলামে, SSH বোতামে ক্লিক করুন এবং এটি একটি পৃথক উইন্ডো খুলবে যা ভার্চুয়াল মেশিনের সাথে সুরক্ষিতভাবে সংযোগ করে।

বাকি নির্দেশাবলীর জন্য Using gcloud বিভাগে যান কারণ এটি উভয়ের জন্য একই।

জিক্লাউড ব্যবহার করে

আপনার ক্লাউড SQL উদাহরণের নামের সাথে <INSTANCE NAME> প্রতিস্থাপন করুন:

gcloud sql instances describe <INSTANCE NAME> | grep connectionName

পরে ব্যবহারের জন্য উদাহরণ সংযোগের নাম সংরক্ষণ করুন।

আপনাকে <ZONE> সেই জোন দিয়ে প্রতিস্থাপন করতে হবে যেটি আপনি ইন্সট্যান্স তৈরি করার সময় ব্যবহার করেছিলেন। আপনি যদি এটি পরিবর্তন না করেন, তাহলে এটি us-central1-b এ সেট করা হয়েছে। এবং <INSTANCE_NAME> কে প্রতিস্থাপন করুন যা আপনি আগে উল্লেখ করেছেন।

gcloud compute ssh --zone <ZONE> <INSTANCE_NAME>

একবার VM এর সাথে সংযুক্ত

প্রথমত, আমাদের প্রক্সি ডাউনলোড করতে হবে। আপনার অপারেটিং সিস্টেমের উপর নির্ভর করে। আপনি যদি ভিএম তৈরিতে ওএস পরিবর্তন না করেন তবে এটি লিনাক্স হবে এবং আপনি ব্যবহার করতে পারেন:

wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxy

আপনি যদি অপারেটিং সিস্টেম স্যুইচ করে থাকেন, তাহলে আপনার OS-এর জন্য প্রক্সি পেতে সঠিক কমান্ডের জন্য আপনি এখানে যেতে পারেন।

প্রক্সি চালানোর জন্য, <INSTANCE_CONNECTION_NAME> প্রতিস্থাপন করতে ক্লাউড SQL ইনস্ট্যান্স বিশদ থেকে কপি করা ইন্সট্যান্স সংযোগের নামটি ধরুন। এছাড়াও মনে রাখবেন, আপনি যদি Postgres db ব্যবহার না করেন, অথবা আপনি যে ডিফল্ট পোর্টটি শুনছেন সেটি পরিবর্তন করে থাকেন তাহলে tcp পোর্ট নম্বর পরিবর্তন হতে পারে।

./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &

6. সংযোগ পরীক্ষা এবং মোড়ানো আপ

পূর্বে উল্লিখিত হিসাবে, আপনার যদি এমন একটি অ্যাপ্লিকেশন থাকে যা আপনি পরীক্ষা করার জন্য GCE উদাহরণে দাঁড়াতে চান, তবে অবশ্যই এটিও ঠিক আছে। এই কোডল্যাবের জন্য, আমরা psql ইন্সটল করব এবং সেই ক্লায়েন্টটি ব্যবহার করে যাচাই করব যে আমরা আমাদের ডাটাবেসের সাথে সংযোগ করতে পারি।

VM-তে SSH সেশন থেকে:

sudo apt-get install postgresql-client
psql "host=127.0.0.1 port=5432 sslmode=disable user=postgres"

তারপর ক্লাউড SQL দৃষ্টান্ত তৈরি করার সময় আপনি যে ডিফল্ট ব্যবহারকারীর পাসওয়ার্ড সেট আপ করেছেন তা নির্দিষ্ট করুন৷

অভিনন্দন! সবকিছু ঠিকঠাক থাকলে, আপনার পোস্টগ্রেস প্রম্পট থাকা উচিত এবং আপনার ডাটাবেসের বিরুদ্ধে কমান্ড চালাতে পারে।

এরপর কি?

এই কোডল্যাবগুলির কিছু পরীক্ষা করে দেখুন...

রেফারেন্স ডক্স