প্রাইভেট সার্ভিস কানেক্ট: ভিপিসি পিয়ারিং টু প্রাইভেট সার্ভিস কানেক্ট মাইগ্রেশন

1. ভূমিকা

ভিপিসি পিয়ারিং হল প্রযোজকদের জন্য তাদের ব্যবহারকারীদের পরিষেবা খরচ অফার করার একটি সাধারণ পদ্ধতি। যাইহোক, ভিপিসি পিয়ারিং ব্যবহারের সাথে অনেক রাউটিং জটিলতা আসে যেমন নন-ট্রানজিটিভ ভিপিসি পিয়ারিং, বড় আইপি অ্যাড্রেস খরচ এবং পিয়ারড ভিপিসিতে রিসোর্সের অতিরিক্ত এক্সপোজার।

প্রাইভেট সার্ভিস কানেক্ট (PSC) হল একটি কানেক্টিভিটি পদ্ধতি যা প্রযোজকদের একটি একক এন্ডপয়েন্টের উপর একটি পরিষেবা প্রকাশ করতে দেয় যা একটি কাজের লোড VPC-তে ভোক্তার বিধান। এটি ভিপিসি পিয়ারিংয়ের সাথে ব্যবহারকারীদের মুখোমুখি হওয়া অনেক সমস্যা দূর করে। যদিও PSC এর সাথে অনেক নতুন পরিষেবা তৈরি করা হচ্ছে, এখনও অনেক পরিষেবা রয়েছে যা VPC পিয়ারিং পরিষেবা হিসাবে বিদ্যমান।

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

দ্রষ্টব্য: এই স্থানান্তর পথটি শুধুমাত্র সেই পরিষেবাগুলির জন্য যেখানে প্রযোজক এবং ভোক্তা একই Google ক্লাউড সংস্থার মধ্যে বিদ্যমান৷ যেকোন Google ক্লাউড পরিষেবা বা তৃতীয় পক্ষের পরিষেবাগুলির জন্য যেগুলি VPC পিয়ারিং ব্যবহার করে, তারা একই ধরনের মাইগ্রেশন পদ্ধতি ব্যবহার করবে, তবে এটি পরিষেবার জন্যই কাস্টমাইজ করা হবে৷ এই ধরনের পরিষেবাগুলির জন্য মাইগ্রেশন পথ সম্পর্কে অনুসন্ধান করতে অনুগ্রহ করে উপযুক্ত পক্ষের সাথে যোগাযোগ করুন৷

আপনি কি শিখবেন

  • কিভাবে একটি VPC পিয়ারিং ভিত্তিক পরিষেবা সেট আপ করবেন
  • কিভাবে একটি PSC ভিত্তিক পরিষেবা সেট আপ করবেন
  • অভ্যন্তরীণ-রেঞ্জ এপিআই ব্যবহার করে ভিপিসি পিয়ারিং-এ সাবনেট মাইগ্রেশন সঞ্চালনের জন্য একটি ভিপিসি পিয়ারিং থেকে পিএসসি পরিষেবা মাইগ্রেশন অর্জন করা।
  • পরিষেবা মাইগ্রেশনের জন্য কখন ডাউনটাইম ঘটতে হবে তা বোঝা
  • মাইগ্রেশন পরিষ্কারের ধাপ

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

  • মালিকের অনুমতি সহ Google ক্লাউড প্রকল্প

2. কোডল্যাব টপোলজি

সরলতার জন্য, এই কোডল্যাব একটি একক প্রকল্পে সমস্ত সংস্থান কেন্দ্রীভূত করে। কোডল্যাবে উল্লেখ করা হবে যে প্রযোজকের পক্ষ থেকে কী কী ক্রিয়া সম্পাদন করা দরকার এবং প্রযোজক এবং ভোক্তারা বিভিন্ন প্রকল্পে থাকা অবস্থায় ভোক্তার পক্ষ থেকে কী কী ক্রিয়া সম্পাদন করা দরকার।

এই কোডল্যাবে 4টি রাজ্য থাকবে।

7dbf27cf215f9703.png

রাজ্য 1 হল ভিপিসি পিয়ারিং রাজ্য৷ দুটি ভিপিসি থাকবে, ভোক্তা-ভিপিসি এবং প্রযোজক-ভিপিসি যা একসাথে পিয়ার করা হবে। প্রযোজক-ভিপিসি একটি অভ্যন্তরীণ নেটওয়ার্ক পাসথ্রু লোড ব্যালেন্সারের মাধ্যমে উন্মুক্ত একটি সাধারণ অ্যাপাচি পরিষেবা থাকবে। Consumer-vpc-এর পরীক্ষার উদ্দেশ্যে একটি একক ভোক্তা-ভিএম থাকবে।

7f64427c0e59d417.png

রাজ্য 2 হল PSC পরীক্ষার রাজ্য। আমরা একটি নতুন ফরওয়ার্ডিং নিয়ম তৈরি করব এবং আমাদের পরিষেবা সংযুক্তির সাথে যুক্ত করতে এই নিয়মটি ব্যবহার করব৷ তারপরে আমরা গ্রাহক-ভিপিসি-তে একটি পরীক্ষামূলক PSC এন্ডপয়েন্ট তৈরি করব যাতে আমাদের PSC পরিষেবা প্রত্যাশা অনুযায়ী কাজ করছে।

98c324c59c1fbf68.png

রাজ্য 3 হল মাইগ্রেশন স্টেট। আমরা প্রোডিউসার-ভিপিসি-তে সাবনেট রেঞ্জ রিজার্ভ করব যেখানে ভিপিসি পিয়ারিং ভিত্তিক পরিষেবা ভোক্তা-ভিপিসি-তে ব্যবহার করার জন্য স্থাপন করা হয়েছিল। আমরা তারপর প্রযোজক-ভিপিসি-তে পূর্ব-বিদ্যমান ফরওয়ার্ডিং নিয়মের মতো একই IP ঠিকানা সহ একটি নতুন PSC এন্ডপয়েন্ট তৈরি করব।

a64ab7b69132c722.png

রাজ্য 4 চূড়ান্ত PSC রাজ্য। আমরা পরীক্ষা PSC এন্ডপয়েন্ট পরিষ্কার করব এবং ভোক্তা-vpc এবং প্রযোজক-vpc-এর মধ্যে VPC পিয়ারিং মুছে ফেলব।

3. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল শুরু করুন

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।

Google ক্লাউড কনসোল থেকে, উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

55efc1aaa7a4d3ad.png

পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে। এটি সমাপ্ত হলে, আপনি এই মত কিছু দেখতে হবে:

7ffe5cbb04455448.png

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারে করা যেতে পারে। আপনার কিছু ইন্সটল করার দরকার নেই।

4. আপনি শুরু করার আগে

এপিআই সক্ষম করুন

ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রকল্প সেট আপ করা হয়েছে এবং ভেরিয়েবলগুলি কনফিগার করুন।

gcloud auth login
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectid=[YOUR-PROJECT-ID]
export region=us-central1
export zone=$region-a
echo $projectid
echo $region
echo $zone

সমস্ত প্রয়োজনীয় পরিষেবা সক্রিয় করুন

gcloud services enable compute.googleapis.com
gcloud services enable networkconnectivity.googleapis.com
gcloud services enable dns.googleapis.com

5. প্রযোজক ভিপিসি নেটওয়ার্ক তৈরি করুন (প্রযোজক কার্যকলাপ)

ভিপিসি নেটওয়ার্ক

ক্লাউড শেল থেকে

gcloud compute networks create producer-vpc \
    --subnet-mode=custom

সাবনেট তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute networks subnets create producer-service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

gcloud compute networks subnets create producer-fr-subnet \
        --network=producer-vpc \
        --range=192.168.0.0/28 \
        --region=$region

প্রযোজক ক্লাউড রাউটার এবং ক্লাউড NAT তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute routers create $region-cr \
   --network=producer-vpc \
   --region=$region

gcloud compute routers nats create $region-nat \
    --router=$region-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

প্রযোজক নেটওয়ার্ক ফায়ারওয়াল নীতি এবং ফায়ারওয়াল নিয়ম তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

IAP কে আপনার VM দৃষ্টান্তের সাথে সংযোগ করার অনুমতি দিতে, একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:

  • আপনি IAP ব্যবহার করে অ্যাক্সেসযোগ্য হতে চান এমন সমস্ত VM দৃষ্টান্তগুলিতে প্রযোজ্য।
  • IP পরিসর 35.235.240.0/20 থেকে ট্র্যাফিক প্রবেশের অনুমতি দেয়। এই পরিসরে সমস্ত আইপি ঠিকানা রয়েছে যা IAP TCP ফরওয়ার্ডিংয়ের জন্য ব্যবহার করে।

ক্লাউড শেল থেকে

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

আমরা আরও দুটি নিয়ম তৈরি করব যা পরিষেবাতে লোড ব্যালেন্সার স্বাস্থ্য পরীক্ষা করার পাশাপাশি ভিএম থেকে নেটওয়ার্ক ট্র্যাফিকের অনুমতি দেয় যা গ্রাহক-ভিপিসি থেকে সংযোগ করবে।

ক্লাউড শেল থেকে

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "LB healthchecks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:80  \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 3000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from consumer-vpc" \
    --direction INGRESS \
    --src-ip-ranges 10.0.1.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

6. প্রযোজক পরিষেবা সেট আপ (প্রযোজক কার্যকলাপ)

আমরা একটি Apache ওয়েব সার্ভার চালানোর একটি একক VM সহ একটি প্রযোজক পরিষেবা তৈরি করব যা একটি আঞ্চলিক অভ্যন্তরীণ নেটওয়ার্ক পাসথ্রু লোড ব্যালেন্সারের সাথে ফ্রন্টযুক্ত একটি অম্যানেজড ইনস্ট্যান্স গ্রুপে যুক্ত করা হবে।

VM এবং Unmanaged Instance Group তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute instances create producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

ক্লাউড শেল থেকে

gcloud compute instance-groups unmanaged create prod-uig \
  --zone=$zone

gcloud compute instance-groups unmanaged add-instances prod-uig \
  --zone=$zone \
  --instances=producer-service-vm

আঞ্চলিক অভ্যন্তরীণ নেটওয়ার্ক পাসথ্রু লোড ব্যালেন্সার তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute health-checks create http producer-hc \
        --region=$region

gcloud compute backend-services create producer-bes \
  --load-balancing-scheme=internal \
  --protocol=tcp \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

gcloud compute backend-services add-backend producer-bes \
  --region=$region \
  --instance-group=prod-uig \
  --instance-group-zone=$zone

gcloud compute addresses create producer-fr-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.2

gcloud compute forwarding-rules create producer-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

7. কনজিউমার ভিপিসি নেটওয়ার্ক তৈরি করুন (ভোক্তা কার্যকলাপ)

ভিপিসি নেটওয়ার্ক

ক্লাউড শেল থেকে

gcloud compute networks create consumer-vpc \
    --subnet-mode=custom

সাবনেট তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute networks subnets create consumer-vm-subnet \
    --network=consumer-vpc \
    --range=10.0.1.0/28 \
    --region=$region

কনজিউমার নেটওয়ার্ক ফায়ারওয়াল নীতি এবং ফায়ারওয়াল নিয়ম তৈরি করুন

আমরা ভোক্তা-ভিপিসির জন্য আরেকটি নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করব।

ক্লাউড শেল থেকে

gcloud compute network-firewall-policies create consumer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy consumer-vpc-policy \
    --network consumer-vpc \
    --name network-consumer-vpc \
    --global-firewall-policy

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy consumer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

8. ভিপিসি পিয়ার তৈরি করুন

প্রযোজক কার্যকলাপ

ক্লাউড শেল থেকে

gcloud compute networks peerings create producer-vpc-peering \
    --network=producer-vpc \
    --peer-project=$projectid \
    --peer-network=consumer-vpc

ভোক্তা কার্যকলাপ

ক্লাউড শেল থেকে

gcloud compute networks peerings create consumer-vpc-peering \
    --network=consumer-vpc \
    --peer-project=$projectid \
    --peer-network=producer-vpc

কনজিউমার-ভিপিসি-তে রুটের তালিকা চেক করে পিয়ারিং প্রতিষ্ঠিত হয়েছে তা নিশ্চিত করুন। আপনার ভোক্তা-ভিপিসি এবং প্রযোজক-ভিপিসি উভয়ের জন্য রুট দেখা উচিত।

ভোক্তা কার্যকলাপ

ক্লাউড শেল থেকে

gcloud compute routes list --filter="network=consumer-vpc"

প্রত্যাশিত আউটপুট

NAME: default-route-49dda7094977e231
NETWORK: consumer-vpc
DEST_RANGE: 0.0.0.0/0
NEXT_HOP: default-internet-gateway
PRIORITY: 1000

NAME: default-route-r-10d65e16cc6278b2
NETWORK: consumer-vpc
DEST_RANGE: 10.0.1.0/28
NEXT_HOP: consumer-vpc
PRIORITY: 0

NAME: peering-route-496d0732b4f11cea
NETWORK: consumer-vpc
DEST_RANGE: 192.168.0.0/28
NEXT_HOP: consumer-vpc-peering
PRIORITY: 0

NAME: peering-route-b4f9d3acc4c08d55
NETWORK: consumer-vpc
DEST_RANGE: 10.0.0.0/28
NEXT_HOP: consumer-vpc-peering
PRIORITY: 0

9. DNS জোন তৈরি করুন (ভোক্তা কার্যকলাপ)

আমরা একটি ক্লাউড ডিএনএস প্রাইভেট জোন তৈরি করব যাতে আরও বাস্তবসম্মত উদাহরণ দেখানোর জন্য একটি ব্যক্তিগত আইপি ঠিকানার মাধ্যমে না করে ডিএনএসের মাধ্যমে প্রযোজক পরিষেবাকে কল করা যায়।

আমরা পূর্বে তৈরি করা নেটওয়ার্ক পাসথ্রু লোড ব্যালেন্সার ফরওয়ার্ডিং নিয়ম IP ঠিকানায় example.com ডোমেইন পয়েন্টিং service.example.com-এ একটি A রেকর্ড যুক্ত করব। সেই ফরোয়ার্ডিং নিয়মের আইপি ঠিকানা হল 192.168.0.2।

ক্লাউড শেল থেকে

gcloud dns managed-zones create "producer-service" \
   --dns-name=example.com \
   --description="producer service dns" \
   --visibility=private \
   --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="producer-service"

gcloud dns record-sets transaction add 192.168.0.2 \
   --name=service.example.com \
   --ttl=300 \
   --type=A \
   --zone="producer-service"

gcloud dns record-sets transaction execute \
   --zone="producer-service"

10. ভিপিসি পিয়ারের মাধ্যমে প্রযোজক পরিষেবা পরীক্ষা করুন (ভোক্তা কার্যকলাপ)

এই মুহুর্তে, রাজ্য 1 আর্কিটেকচার তৈরি করা হয়েছে।

ভোক্তা-ক্লায়েন্ট VM তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute instances create consumer-client \
   --zone=$zone \
   --subnet=consumer-vm-subnet \
   --no-address

কানেক্টিভিটি পরীক্ষা করুন

ক্লাউড শেল থেকে

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

ভোক্তা-ক্লায়েন্ট VM থেকে

curl service.example.com

প্রত্যাশিত আউটপুট

I am a Producer Service. 

ভোক্তা-ক্লায়েন্ট VM থেকে

exit

11. ব্যক্তিগত পরিষেবা সংযোগের জন্য পরিষেবা প্রস্তুত করুন (প্রযোজক কার্যকলাপ)

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

সাবনেট তৈরি করুন যেখানে নতুন লোড ব্যালেন্সার ফরওয়ার্ডিং নিয়ম আইপি হোস্ট করা হবে।

ক্লাউড শেল থেকে

gcloud compute networks subnets create producer-psc-fr-subnet \
    --network=producer-vpc \
    --range=10.0.2.64/28 \
    --region=$region

লোড ব্যালেন্সার ফরওয়ার্ডিং নিয়ম অভ্যন্তরীণ আইপি ঠিকানা তৈরি করুন।

ক্লাউড শেল থেকে

gcloud compute addresses create producer-psc-ip \
  --region $region \
  --subnet producer-psc-fr-subnet \
  --addresses 10.0.2.66

নতুন লোড ব্যালেন্সার ফরওয়ার্ডিং নিয়ম তৈরি করুন। এই নিয়মটি একই ব্যাকএন্ড পরিষেবা এবং স্বাস্থ্য পরীক্ষাগুলি ব্যবহার করার জন্য কনফিগার করা হয়েছে যা আমরা পূর্বে কনফিগার করেছি৷

ক্লাউড শেল থেকে

gcloud compute forwarding-rules create psc-service-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-psc-fr-subnet \
  --address=producer-psc-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

নেটওয়ার্ক ঠিকানা অনুবাদের উদ্দেশ্যে পিএসসি-ন্যাট-সাবনেট পিএসসি পরিষেবা সংযুক্তির সাথে যুক্ত হবে। উৎপাদন ব্যবহারের ক্ষেত্রে, সংযুক্ত এন্ডপয়েন্টের সংখ্যা সমর্থন করার জন্য এই সাবনেটটিকে যথাযথভাবে আকার দিতে হবে। আরও তথ্যের জন্য PSC NAT সাবনেট সাইজিং ডকুমেন্টেশন দেখুন।

ক্লাউড শেল থেকে

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --range=10.100.100.0/28 \
    --region=$region \
    --purpose=PRIVATE_SERVICE_CONNECT

এখন psc-nat-subnet থেকে ট্রাফিকের অনুমতি দিতে আমাদের নেটওয়ার্ক ফায়ারওয়াল নীতিতে একটি অতিরিক্ত ফায়ারওয়াল নিয়ম যোগ করতে হবে। PSC-এর মাধ্যমে পরিষেবা অ্যাক্সেস করার সময়, psc-nat-subnet হল যেখানে ট্র্যাফিক উৎস হবে।

ক্লাউড শেল থেকে

gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow PSC NAT subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.100.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

পরিষেবা সংযুক্তি তৈরি করুন এবং পরবর্তী বিভাগে PSC এন্ডপয়েন্ট কনফিগার করতে পরিষেবা সংযুক্তি URI নোট করুন।

ক্লাউড শেল থেকে

gcloud compute service-attachments create producer-sa \
    --region=$region \
    --producer-forwarding-rule=psc-service-fr  \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$projectid=5 \
    --nat-subnets=psc-nat-subnet

ক্লাউড শেল থেকে

gcloud compute service-attachments describe producer-sa --region=$region

নমুনা আউটপুট

connectionPreference: ACCEPT_MANUAL
consumerAcceptLists:
- connectionLimit: 5
  projectIdOrNum: $projectid
creationTimestamp: '2025-04-24T11:23:09.886-07:00'
description: ''
enableProxyProtocol: false
fingerprint: xxx
id: 'xxx'
kind: compute#serviceAttachment
name: producer-sa
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxx'
  low: 'xxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/producer-sa
targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/forwardingRules/psc-service-fr

12. "পরীক্ষা" উপভোক্তা PSC এন্ডপয়েন্টকে প্রযোজক পরিষেবা এবং পরীক্ষার সাথে সংযুক্ত করুন (ভোক্তা কার্যকলাপ)

স্থাপত্যটি এখন রাজ্য 2-এ রয়েছে।

এই মুহুর্তে, ভিপিসি পিয়ারিং-এ প্রকাশিত বিদ্যমান প্রযোজক পরিষেবাটি এখনও লাইভ এবং একটি প্রোডাকশন পরিস্থিতিতে সঠিকভাবে কাজ করছে। বর্তমান ভিপিসি পিয়ারিং সাবনেটকে ভোক্তা ভিপিসিতে স্থানান্তর করার জন্য আমরা একটি বিভ্রাট সময় শুরু করার আগে উন্মুক্ত পরিষেবা সংযুক্তি সঠিকভাবে কাজ করছে তা নিশ্চিত করার জন্য আমরা একটি "পরীক্ষা" PSC এন্ডপয়েন্ট তৈরি করব। VPC পিয়ারিং ভিত্তিক পরিষেবার জন্য বর্তমান ফরওয়ার্ডিং নিয়মের মতো একই IP ঠিকানা সহ আমাদের শেষ রাজ্য সংযোগ একটি PSC এন্ডপয়েন্ট হবে।

PSC এন্ডপয়েন্ট তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute addresses create test-psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-vm-subnet \
    --addresses 10.0.1.3

নিচের টার্গেট সার্ভিসটি হবে সার্ভিস অ্যাটাচমেন্ট URI যা আপনি শেষ ধাপে উল্লেখ করেছেন।

ক্লাউড শেল থেকে

gcloud compute forwarding-rules create test-psc-endpoint \
  --region=$region \
  --network=consumer-vpc \
  --address=test-psc-endpoint-ip \
  --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa

"পরীক্ষা" PSC এন্ডপয়েন্ট পরীক্ষা করুন

ক্লাউড শেল থেকে

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

ভোক্তা-ক্লায়েন্ট থেকে

curl 10.0.1.3

প্রত্যাশিত আউটপুট

I am a Producer Service. 

ভোক্তা-ক্লায়েন্ট থেকে

exit

13. বিদ্যমান প্রযোজক ফরওয়ার্ডিং নিয়ম সাবনেট স্থানান্তর করুন৷

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

অভ্যন্তরীণ পরিসর API-এর জন্য প্রয়োজন যে আপনি বিদ্যমান ভিপিসি পিয়ারিং ফরওয়ার্ডিং নিয়ম সাবনেট (উৎপাদক-fr-সাবনেট, 192.168.0.0/28) সংরক্ষণ করুন এবং গ্রাহক-ভিপিসি (ভোক্তা-পিএসসি-সাবনেট) এ একটি টার্গেট সাবনেট নাম নির্ধারণ করুন৷ আমরা কয়েক ধাপে এই নাম দিয়ে ভোক্তা-ভিপিসি-তে একটি নতুন সাবনেট তৈরি করি।

মাইগ্রেশনের জন্য প্রযোজক-fr-সাবনেট রিজার্ভ করুন

প্রযোজক কার্যকলাপ

ক্লাউড শেল থেকে

gcloud network-connectivity internal-ranges create producer-peering-internal-range \
    --ip-cidr-range=192.168.0.0/28 \
    --network=producer-vpc \
    --usage=FOR_MIGRATION \
    --migration-source=projects/$projectid/regions/$region/subnetworks/producer-fr-subnet \
    --migration-target=projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet

সাবনেটের অবস্থা দেখার জন্য আমরা যে অভ্যন্তরীণ-পরিসীমা তৈরি করেছি তার উপর একটি বর্ণনা চালান।

প্রযোজক কার্যকলাপ

ক্লাউড শেল থেকে

gcloud network-connectivity internal-ranges describe producer-peering-internal-range

নমুনা আউটপুট

createTime: '2025-04-24T19:26:10.589343291Z'
ipCidrRange: 192.168.0.0/28
migration:
  source: projects/$projectid/regions/$region/subnetworks/producer-fr-subnet
  target: projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
name: projects/$projectid/locations/global/internalRanges/producer-peering-internal-range
network: https://www.googleapis.com/compute/v1/projects/$project/global/networks/producer-vpc
peering: FOR_SELF
updateTime: '2025-04-24T19:26:11.521960016Z'
usage: FOR_MIGRATION

ভিপিসি পিয়ারিং ভিত্তিক ফরওয়ার্ডিং নিয়ম এবং সাবনেট মুছুন

প্রযোজক কার্যকলাপ

ক্লাউড শেল থেকে

gcloud compute forwarding-rules delete producer-fr --region=$region

gcloud compute addresses delete producer-fr-ip --region=$region

gcloud compute networks subnets delete producer-fr-subnet --region=$region

সাবনেট মাইগ্রেট করুন

আমরা আগে যে অভ্যন্তরীণ-পরিসীমা তৈরি করেছি তা ব্যবহার করে একটি নতুন সাবনেট তৈরি করে গ্রাহক-ভিপিসি-তে সাবনেট স্থানান্তর করুন। এই সাবনেটের নাম অবশ্যই একই নাম হতে হবে যা আমরা আগে লক্ষ্য করেছি (গ্রাহক-পিএসসি-সাবনেট)। PEER_MIGRATION-এর নির্দিষ্ট উদ্দেশ্য উল্লেখ করে যে সাবনেটটি পিয়ারড VPCগুলির মধ্যে সাবনেট মাইগ্রেশনের জন্য সংরক্ষিত। এই উদ্দেশ্য পতাকা সহ, এই সাবনেটে শুধুমাত্র সংরক্ষিত স্ট্যাটিক আইপি ঠিকানা এবং PSC এন্ডপয়েন্ট থাকতে পারে।

ভোক্তা কার্যকলাপ

ক্লাউড শেল থেকে

gcloud compute networks subnets create consumer-psc-subnet \
  --purpose=PEER_MIGRATION \
  --network=consumer-vpc \
  --range=192.168.0.0/28 \
  --region=$region

14. শেষ রাজ্য PSC এন্ডপয়েন্ট তৈরি করুন (ভোক্তা কার্যকলাপ)

এই মুহুর্তে, প্রযোজক পরিষেবা এখনও বন্ধ রয়েছে। আমরা যে সাবনেটটি তৈরি করেছি তা এখনও লক করা আছে এবং শুধুমাত্র মাইগ্রেশনের নির্দিষ্ট উদ্দেশ্যে ব্যবহার করা যেতে পারে। আপনি এই সাবনেটে একটি VM তৈরি করার চেষ্টা করে এটি পরীক্ষা করতে পারেন। VM সৃষ্টি ব্যর্থ হবে।

ক্লাউড শেল থেকে

gcloud compute instances create test-consumer-vm \
    --zone=$zone \
    --subnet=consumer-psc-subnet \
    --no-address

প্রত্যাশিত আউটপুট

ERROR: (gcloud.compute.instances.create) Could not fetch resource:
 - Subnetwork must have purpose=PRIVATE.

আমরা শুধুমাত্র একটি PSC এন্ডপয়েন্ট তৈরি করতে এই সাবনেট ব্যবহার করতে পারি। মনে রাখবেন যে আমরা যে আইপি ঠিকানা তৈরি করি সেটি ফরওয়ার্ডিং নিয়মের মতো একই আইপি ব্যবহার করে যা আমাদের প্রযোজক পরিষেবা VPC পিয়ারে ব্যবহার করে।

ক্লাউড শেল থেকে

gcloud compute addresses create psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-psc-subnet \
    --addresses 192.168.0.2

আবার, আপনাকে অবশ্যই একই পরিষেবা সংযুক্তি URI ব্যবহার করতে হবে যা আপনি আগে উল্লেখ করেছেন এবং এটি "পরীক্ষা" PSC এন্ডপয়েন্ট তৈরি করতেও ব্যবহৃত হয়েছিল।

ক্লাউড শেল থেকে

gcloud compute forwarding-rules create psc-endpoint \
    --region=$region \
    --network=consumer-vpc \
    --address=psc-endpoint-ip \
    --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa

15. শেষ রাজ্য PSC এন্ডপয়েন্ট পরীক্ষা করুন (ভোক্তা কার্যকলাপ)

এই মুহুর্তে, আপনি স্টেট 3 আর্কিটেকচারে আছেন।

ক্লাউড শেল থেকে

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

ভোক্তা-ক্লায়েন্ট VM থেকে

curl service.example.com

প্রত্যাশিত আউটপুট

I am a Producer Service. 

ভোক্তা-ক্লায়েন্ট VM থেকে

exit

এই মুহুর্তে, বিভ্রাট শেষ হয়েছে এবং পরিষেবা আবার লাইভ হয়েছে। মনে রাখবেন যে আমাদের বিদ্যমান DNS-এ কোনো পরিবর্তন করতে হবে না। কোন ভোক্তা-সাইড ক্লায়েন্ট পরিবর্তন করা প্রয়োজন. অ্যাপ্লিকেশনগুলি শুধুমাত্র স্থানান্তরিত পরিষেবাতে ক্রিয়াকলাপ পুনরায় শুরু করতে পারে৷

16. মাইগ্রেশন ক্লিন-আপ

মাইগ্রেশন চূড়ান্ত করার জন্য, আমাদের কিছু পরিচ্ছন্ন পদক্ষেপ করতে হবে। আমাদের অবশ্যই সম্পদ মুছে ফেলতে হবে এবং আনলক করতে হবে।

ইন্টারনাল রেঞ্জ সাবনেট আনলক করুন

এটি স্থানান্তরিত সাবনেটটিকে আনলক করবে যাতে এর উদ্দেশ্য "PEER_MIGRATION" থেকে "প্রাইভেট" এ পরিবর্তিত হতে পারে৷

প্রযোজক কার্যকলাপ

ক্লাউড শেল থেকে

gcloud network-connectivity internal-ranges delete producer-peering-internal-range

ভোক্তা কার্যকলাপ

ক্লাউড শেল থেকে

gcloud compute networks subnets update consumer-psc-subnet \
    --region=$region \
    --purpose=PRIVATE

gcloud compute networks subnets describe consumer-psc-subnet --region=$region

নমুনা আউটপুট

creationTimestamp: '2025-04-24T12:29:33.883-07:00'
fingerprint: xxx
gatewayAddress: 192.168.0.1
id: 'xxx'
ipCidrRange: 192.168.0.0/28
kind: compute#subnetwork
name: consumer-psc-subnet
network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc
privateIpGoogleAccess: false
privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS
purpose: PRIVATE
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet

ভিপিসি পিয়ার্স মুছুন

প্রযোজক কার্যকলাপ

ক্লাউড শেল থেকে

gcloud compute networks peerings delete producer-vpc-peering \
    --network=producer-vpc

ভোক্তা কার্যকলাপ

ক্লাউড শেল থেকে

gcloud compute networks peerings delete consumer-vpc-peering \
        --network=consumer-vpc

"পরীক্ষা" PSC এন্ডপয়েন্ট মুছুন

ভোক্তা-ক্রিয়াকলাপ

ক্লাউড শেল থেকে

gcloud compute forwarding-rules delete test-psc-endpoint --region=$region
gcloud compute addresses delete test-psc-endpoint-ip --region=$region

17. মাইগ্রেশন ক্লিন আপের পরে চূড়ান্ত পরীক্ষা (ভোক্তা কার্যকলাপ)

এই মুহুর্তে, রাজ্য 4 আর্কিটেকচার (চূড়ান্ত অবস্থা) অর্জন করা হয়েছে।

মাইগ্রেশন ক্লিন আপ থেকে কোন বিরূপ প্রভাব পরিলক্ষিত হচ্ছে না তা নিশ্চিত করতে আবার PSC এন্ডপয়েন্ট সংযোগ পরীক্ষা করুন।

ক্লাউড শেল থেকে

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

ভোক্তা-ক্লায়েন্ট VM থেকে

curl service.example.com

প্রত্যাশিত আউটপুট

I am a Producer Service. 

ভোক্তা-ক্লায়েন্ট VM থেকে

exit

সাফল্য!

18. পরিচ্ছন্নতার পদক্ষেপ

ক্লাউড শেল থেকে

gcloud compute forwarding-rules delete psc-endpoint --region=$region -q

gcloud compute addresses delete psc-endpoint-ip --region=$region -q

gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q

gcloud dns record-sets delete service.example.com --zone="producer-service" --type=A -q

gcloud dns managed-zones delete "producer-service" -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy  --name=network-consumer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q

gcloud compute networks subnets delete consumer-psc-subnet --region=$region -q

gcloud compute networks subnets delete consumer-vm-subnet --region=$region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute service-attachments delete producer-sa --region=$region -q

gcloud compute forwarding-rules delete psc-service-fr --region=$region -q

gcloud compute addresses delete producer-psc-ip --region=$region -q

gcloud compute backend-services delete producer-bes --region=$region -q

gcloud compute health-checks delete producer-hc --region=$region -q

gcloud compute instance-groups unmanaged delete prod-uig --zone=$zone -q

gcloud compute instances delete producer-service-vm --zone=$zone --project=$projectid -q

gcloud compute network-firewall-policies rules delete 3000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute routers nats delete $region-nat --router=$region-cr --region=$region -q

gcloud compute routers delete $region-cr --region=$region -q

gcloud compute networks subnets delete psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks subnets delete producer-service-subnet --region=$region -q

gcloud compute networks delete producer-vpc -q

19. অভিনন্দন!

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন।

আমরা কভার করেছি কি

  • কিভাবে একটি VPC পিয়ারিং ভিত্তিক পরিষেবা সেট আপ করবেন
  • কিভাবে একটি PSC ভিত্তিক পরিষেবা সেট আপ করবেন
  • অভ্যন্তরীণ-রেঞ্জ এপিআই ব্যবহার করে ভিপিসি পিয়ারিং-এ সাবনেট মাইগ্রেশন সঞ্চালনের জন্য একটি ভিপিসি পিয়ারিং থেকে পিএসসি পরিষেবা মাইগ্রেশন অর্জন করা।
  • পরিষেবা মাইগ্রেশনের জন্য কখন ডাউনটাইম ঘটতে হবে তা বোঝা
  • মাইগ্রেশন পরিষ্কারের ধাপ