১. ভূমিকা
ক্লাউড ডিএনএস পরিষেবা একটি উচ্চ-কর্মক্ষমতাসম্পন্ন, স্থিতিস্থাপক এবং বৈশ্বিক ডোমেইন নেম সিস্টেম (ডিএনএস) সমাধান প্রদান করে, যা আপনাকে নিজস্ব ডিএনএস পরিকাঠামোর প্রয়োজন ছাড়াই জোন এবং রেকর্ড প্রকাশ করার ক্ষমতা দেয়।
সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো, ক্লাউড ডিএনএস তার এক্সটার্নাল এন্ডপয়েন্টগুলোর রাউটিং পলিসির মধ্যে হেলথ চেকিং এবং স্বয়ংক্রিয় ফেইলওভার সক্ষমতা অন্তর্ভুক্ত করে । তবে, অনুগ্রহ করে মনে রাখবেন যে এই এক্সটার্নাল এন্ডপয়েন্টগুলোর হেলথ চেক শুধুমাত্র পাবলিক জোনের মধ্যেই উপলব্ধ, এবং এন্ডপয়েন্টগুলোকে অবশ্যই ইন্টারনেটের মাধ্যমে সর্বজনীনভাবে অ্যাক্সেসযোগ্য হতে হবে।
আপনি যা শিখবেন
- একটি আনম্যানেজড ইনস্ট্যান্স গ্রুপ ব্যবহার করে কীভাবে একটি রিজিওনাল এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালান্সার তৈরি করবেন।
- এক্সটার্নাল ডিএনএস রাউটিংয়ের জন্য ক্লাউড ডিএনএস হেলথ চেক কীভাবে কনফিগার করবেন।
- কীভাবে একটি ফেইলওভার রাউটিং পলিসি তৈরি করতে হয়।
আপনার যা যা লাগবে
- DNS সম্পর্কে প্রাথমিক জ্ঞান।
- গুগল কম্পিউট ইঞ্জিন সম্পর্কে প্রাথমিক জ্ঞান।
- অ্যাপ্লিকেশন লোড ব্যালান্সার সম্পর্কে প্রাথমিক জ্ঞান।
- মালিকের অনুমতি সহ একটি গুগল ক্লাউড প্রজেক্ট
- আপনার মালিকানাধীন একটি পাবলিক ডোমেইন , যার জন্য আপনি একটি ক্লাউড ডিএনএস পাবলিক জোন তৈরি করতে পারেন।
- গুগল ক্লাউড প্রজেক্টের অধীনে বর্তমানে নিম্নলিখিত সাংগঠনিক নীতিমালাগুলো বলবৎ করা হয় না : শিল্ডেড ভিএম এবং ইন্টারনেট নেটওয়ার্ক এন্ডপয়েন্ট গ্রুপ ।
২. কোডল্যাব টপোলজি

এই কোডল্যাবে, আপনি এক্সটার্নাল এন্ডপয়েন্টগুলির জন্য ক্লাউড ডিএনএস হেলথ চেক ব্যবহার করে ট্র্যাফিককে একটি ব্যাকআপ রিজিওনাল এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালান্সারে রি-রাউট করবেন, যদি প্রাইমারি লোড ব্যালান্সারের ব্যাকএন্ড আনহেলদি বা অস্বাস্থ্যকর হয়ে পড়ে।
আপনি দুটি অঞ্চলে একটি ওয়েবসাইট তৈরি করবেন, যার প্রতিটির সামনে একটি এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালেন্সার থাকবে । এরপর, আপনি একটি ফেইলওভার রাউটিং পলিসির মাধ্যমে ক্লাউড ডিএনএস হেলথ চেক কনফিগার করবেন।
৩. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে। - আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
- এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড শেল শুরু করুন
যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।
গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনটিতে ক্লিক করুন:

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

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।
৪. শুরু করার আগে
এপিআই সক্ষম করুন
ক্লাউড শেলের ভিতরে, আপনার প্রজেক্টটি সেট আপ করা আছে কিনা তা নিশ্চিত করুন এবং ভেরিয়েবলগুলো কনফিগার করুন।
gcloud auth login
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectid=[YOUR-PROJECT-ID]
# Define variables for regions and the domain
export REGION_A=us-central1
export REGION_B=us-west1
export DNS_ZONE=dnscodelab-zone
Export DNS_DOMAIN=gcp.<yourpublicdomain>.com
echo $projectid
echo $REGION_A
echo $REGION_B
echo $DNS_ZONE
echo $DNS_DOMAIN
সমস্ত প্রয়োজনীয় পরিষেবা সক্রিয় করুন
gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com
৫. ক্লাউড লোড ব্যালান্সিং পরিকাঠামো তৈরি করুন
এই অংশে, আপনি প্রাইমারি এবং ব্যাকআপ লোড ব্যালেন্সারকে সমর্থন করার জন্য দুটি ভিন্ন অঞ্চলে প্রয়োজনীয় VPC, সাবনেট, ফায়ারওয়াল নিয়ম, VM এবং আনম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করবেন।
ভিপিসি নেটওয়ার্ক
ক্লাউড শেল থেকে
gcloud compute networks create external-lb-vpc --subnet-mode=custom
ব্যাকএন্ড ওয়েব সার্ভারগুলো হোস্ট করার জন্য REGION_A (প্রাথমিক) এবং REGION_B (ব্যাকআপ)-এ দুটি সাবনেট তৈরি করুন।
সাবনেট তৈরি করুন
ক্লাউড শেল থেকে
gcloud compute networks subnets create subnet-a --network=external-lb-vpc --region=$REGION_A --range=10.10.1.0/24
gcloud compute networks subnets create subnet-b --network=external-lb-vpc --region=$REGION_B --range=10.20.1.0/24
পরবর্তীতে তৈরি করা হবে এমন সংশ্লিষ্ট আঞ্চলিক এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালান্সারের জন্য প্রতিটি অঞ্চলে প্রক্সি-অনলি সাবনেট তৈরি করুন।
এক্সটার্নাল-এলবি-ভিপিসি নেটওয়ার্কের একই অঞ্চলের মধ্যে স্থাপন করা সমস্ত এনভয়-ভিত্তিক আঞ্চলিক লোড ব্যালান্সারের জন্য এই ডেডিকেটেড প্রক্সি-অনলি সাবনেটটি একটি বাধ্যতামূলক শর্ত। এই প্রক্সিগুলো কার্যকরভাবে ক্লায়েন্টের সংযোগ বিচ্ছিন্ন করে এবং পরবর্তীতে ব্যাকএন্ড পরিষেবাগুলোর সাথে নতুন সংযোগ স্থাপন করে।
ক্লাউড শেল থেকে
gcloud compute networks subnets create proxy-only-subnet-a \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$REGION_A \
--network=external-lb-vpc \
--range=10.129.0.0/23
gcloud compute networks subnets create proxy-only-subnet-b \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$REGION_B \
--network=external-lb-vpc \
--range=10.130.0.0/23
নেটওয়ার্ক ফায়ারওয়াল নিয়ম তৈরি করুন
fw-allow-health-check। এটি একটি ইনগ্রেস রুল, যা লোড ব্যালেন্স করা ইনস্ট্যান্সগুলোর জন্য প্রযোজ্য এবং গুগল ক্লাউড হেলথ চেকিং সিস্টেম (130.211.0.0/22 এবং 35.191.0.0/16-এ অবস্থিত) থেকে সমস্ত TCP ট্র্যাফিককে অনুমতি দেয়। এই উদাহরণে, ফায়ারওয়াল রুলটি যে VM-গুলোর জন্য প্রযোজ্য, সেগুলোকে শনাক্ত করতে `load-balanced-backend` টার্গেট ট্যাগটি ব্যবহার করা হয়েছে।
fw-allow-proxies। এটি একটি ইনগ্রেস রুল, যা লোড ব্যালেন্স করা ইনস্ট্যান্সগুলোর জন্য প্রযোজ্য এবং যা আঞ্চলিক এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালেন্সারের পরিচালিত প্রক্সিগুলো থেকে পোর্ট ৮০-তে TCP ট্র্যাফিকের অনুমতি দেয়। এই উদাহরণে, ফায়ারওয়াল রুলটি যে VM-গুলোর জন্য প্রযোজ্য, সেগুলোকে শনাক্ত করতে 'load-balanced-backend' টার্গেট ট্যাগটি ব্যবহার করা হয়েছে।
ক্লাউড শেল থেকে
gcloud compute firewall-rules create fw-allow-health-check \
--network=external-lb-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=load-balanced-backend \
--rules=tcp
gcloud compute firewall-rules create fw-allow-proxies \
--network=external-lb-vpc \
--action=allow \
--direction=ingress \
--source-ranges=10.129.0.0/23,10.130.0.0/23 \
--target-tags=load-balanced-backend \
--rules=tcp:80
আপনার VM ইনস্ট্যান্সগুলিতে IAP-কে সংযোগ করার অনুমতি দিতে, এমন একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:
- এটি সেই সমস্ত VM ইনস্ট্যান্সের ক্ষেত্রে প্রযোজ্য, যেগুলোকে আপনি IAP ব্যবহার করে অ্যাক্সেসযোগ্য করতে চান।
- 35.235.240.0/20 আইপি রেঞ্জ থেকে ইনগ্রেস ট্র্যাফিকের অনুমতি দেয়। এই রেঞ্জে সেই সমস্ত আইপি অ্যাড্রেস রয়েছে যা IAP টিসিপি ফরওয়ার্ডিংয়ের জন্য ব্যবহার করে।
ক্লাউড শেল থেকে
gcloud compute firewall-rules create allow-ssh \
--allow tcp:22 --network external-lb-vpc \
--source-ranges 35.235.240.0/20 \
--description "SSH with IAP" \
--target-tags=allow-ssh
৬. ক্লাউড ন্যাট এবং ক্লাউড রাউটার তৈরি করুন
প্রাইভেট ভিএমগুলো যাতে ইন্টারনেট থেকে প্যাকেজ ডাউনলোড ও ইনস্টল করতে পারে, তার জন্য আপনার উভয় অঞ্চলে ক্লাউড ন্যাট গেটওয়ে প্রয়োজন।
- আমাদের ওয়েব সার্ভার ভিএমগুলোতে অ্যাপাচি ওয়েব সার্ভার ডাউনলোড ও ইনস্টল করতে হবে।
- ক্লায়েন্ট ভিএম-এ dnsutils প্যাকেজটি ডাউনলোড ও ইনস্টল করতে হবে, যা আমরা আমাদের পরীক্ষার জন্য ব্যবহার করব।
প্রতিটি ক্লাউড NAT গেটওয়ে একটিমাত্র VPC নেটওয়ার্ক, রিজিয়ন এবং ক্লাউড রাউটারের সাথে যুক্ত থাকে। তাই NAT গেটওয়ে তৈরি করার আগে, আমাদের প্রতিটি রিজিয়নে ক্লাউড রাউটার তৈরি করতে হবে।
ক্লাউড রাউটার তৈরি করুন
ক্লাউড শেল থেকে
gcloud compute routers create "$REGION_A-cloudrouter" \
--region $REGION_A --network=external-lb-vpc --asn=65501
gcloud compute routers create "$REGION_B-cloudrouter" \
--region $REGION_B --network=external-lb-vpc --asn=65501
NAT গেটওয়ে তৈরি করুন
ক্লাউড শেল থেকে
gcloud compute routers nats create "$REGION_A-nat-gw" \
--router="$REGION_A-cloudrouter" \
--router-region=$REGION_A \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
gcloud compute routers nats create "$REGION_B-nat-gw" \
--router="$REGION_B-cloudrouter" \
--router-region=$REGION_B \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
ব্যাকএন্ড ভিএম এবং আনম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করুন
প্রতিটি অঞ্চলে ভার্চুয়াল মেশিন তৈরি করুন এবং ওয়েব সার্ভার (যেমন অ্যাপাচি) ইনস্টল করুন:
ক্লাউড শেল থেকে
# Primary (Region A)
gcloud compute instances create vm-a \
--zone=$REGION_A-a \
--image-family=debian-12 --image-project=debian-cloud \
--subnet=subnet-a \
--no-address \
--tags=load-balanced-backend,allow-ssh \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" - $REGION_A Primary Backend |\
tee /var/www/html/index.html
systemctl restart apache2'
# Backup (Region B)
gcloud compute instances create vm-b \
--zone=$REGION_B-a \
--image-family=debian-12 --image-project=debian-cloud \
--subnet=subnet-b \
--no-address \
--tags=load-balanced-backend,allow-ssh \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" - $REGION_B Backup Backend |\
tee /var/www/html/index.html
systemctl restart apache2'
প্রতিটি অঞ্চলের জন্য একটি আনম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করুন এবং তাতে ভিএম ইনস্ট্যান্সটি যুক্ত করুন:
ক্লাউড শেল থেকে
# Primary (Region A)
gcloud compute instance-groups unmanaged create ig-a --zone=$REGION_A-a
gcloud compute instance-groups unmanaged add-instances ig-a --zone=$REGION_A-a --instances=vm-a
# Backup (Region B)
gcloud compute instance-groups unmanaged create ig-b --zone=$REGION_B-a
gcloud compute instance-groups unmanaged add-instances ig-b --zone=$REGION_B-a --instances=vm-b
৭. আঞ্চলিক বাহ্যিক অ্যাপ্লিকেশন লোড ব্যালেন্সার কনফিগার করুন
আপনাকে REGION_A (প্রাথমিক) এবং REGION_B (ব্যাকআপ) উভয় স্থানেই একটি সম্পূর্ণ আঞ্চলিক এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালেন্সার কনফিগার করতে হবে।
স্বাস্থ্য পরীক্ষা এবং ব্যাকএন্ড পরিষেবা তৈরি করুন
আঞ্চলিক এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালেন্সারগুলো এনভয়-ভিত্তিক এবং এগুলোর জন্য আঞ্চলিক হেলথ চেক কনফিগার করা প্রয়োজন।
একটি HTTP হেলথ চেক তৈরি করুন (যা লোড ব্যালেন্সারগুলো ইনস্ট্যান্সের স্বাস্থ্য পরীক্ষা করতে ব্যবহার করে):
ক্লাউড শেলে
gcloud compute health-checks create http http-lb-hc-primary-region \
--port 80 \
--region=$REGION_A
gcloud compute health-checks create http http-lb-hc-backup-region \
--port 80 \
--region=$REGION_B
প্রতিটি অঞ্চলে একটি আঞ্চলিক ব্যাকএন্ড সার্ভিস তৈরি করুন এবং ইনস্ট্যান্স গ্রুপটি সংযুক্ত করুন।
ক্লাউড শেলে
# Primary (Region A)
gcloud compute backend-services create be-svc-a \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--port-name=http \
--health-checks=http-lb-hc-primary-region \
--health-checks-region=$REGION_A \
--region=$REGION_A
gcloud compute backend-services add-backend be-svc-a \
--instance-group=ig-a \
--instance-group-zone=$REGION_A-a \
--region=$REGION_A
# Backup (Region B)
gcloud compute backend-services create be-svc-b \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--port-name=http \
--health-checks=http-lb-hc-backup-region \
--health-checks-region=$REGION_B \
--region=$REGION_B
gcloud compute backend-services add-backend be-svc-b --instance-group=ig-b --instance-group-zone=$REGION_B-a --region=$REGION_B
ফ্রন্টএন্ড কম্পোনেন্ট তৈরি করুন
উভয় অঞ্চলে ইউআরএল ম্যাপ এবং টার্গেট এইচটিটিপি প্রক্সি তৈরি করুন:
ক্লাউড শেলে
#Primary (Region A)
gcloud compute url-maps create url-map-a \
--default-service=be-svc-a \
--region=$REGION_A
gcloud compute target-http-proxies create http-proxy-a \
--url-map=url-map-a \
--url-map-region=$REGION_A \
--region=$REGION_A
#Backup (Region B)
gcloud compute url-maps create url-map-b \
--default-service=be-svc-b \
--region=$REGION_B
gcloud compute target-http-proxies create http-proxy-b \
--url-map=url-map-b \
--url-map-region=$REGION_B \
--region=$REGION_B
ফরওয়ার্ডিং নিয়মগুলির জন্য স্ট্যাটিক আইপি অ্যাড্রেস (বাহ্যিক) সংরক্ষণ করুন:
ক্লাউড শেলে
# Primary IP (Region A)
gcloud compute addresses create rxlb-ip-a --region=$REGION_A
# Backup IP (Region B)
gcloud compute addresses create rxlb-ip-b --region=$REGION_B
দুটি লোড ব্যালান্সারের জন্য ফরওয়ার্ডিং নিয়ম তৈরি করুন:
ক্লাউড শেলে
# Primary (Region A)
gcloud compute forwarding-rules create http-fwd-rule-a \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network=external-lb-vpc \
--region=$REGION_A \
--target-http-proxy-region=$REGION_A \
--address=rxlb-ip-a \
--target-http-proxy=http-proxy-a \
--ports=80
# Backup (Region B)
gcloud compute forwarding-rules create http-fwd-rule-b \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network=external-lb-vpc \
--region=$REGION_B \
--target-http-proxy-region=$REGION_B \
--address=rxlb-ip-b \
--target-http-proxy=http-proxy-b \
--ports=80
ফেইলওভারের জন্য ক্লাউড ডিএনএস কনফিগার করুন
বাহ্যিক এন্ডপয়েন্টগুলির জন্য ক্লাউড ডিএনএস স্বাস্থ্য পরীক্ষা তৈরি করুন
আপনাকে অবশ্যই লোড ব্যালান্সারের পাবলিক আইপি অ্যাড্রেসগুলোর জন্য একটি ডেডিকেটেড গ্লোবাল হেলথ চেক তৈরি করতে হবে। এটি লোড ব্যালান্সারের ইন্টারনাল হেলথ চেক থেকে আলাদা।
প্রথমে ফেইলওভার পলিসি কনফিগার করার জন্য লোড ব্যালেন্সারগুলোর এক্সটার্নাল আইপি অ্যাড্রেসগুলো নির্ধারণ করে সেটিকে একটি ভ্যারিয়েবল হিসেবে এক্সপোর্ট করা যাক।
ক্লাউড শেলে
PRIMARY_IP=$(gcloud compute addresses describe rxlb-ip-a --region=$REGION_A --format='get(address)')
BACKUP_IP=$(gcloud compute addresses describe rxlb-ip-b --region=$REGION_B --format='get(address)')
গ্লোবাল ডিএনএস হেলথ চেক তৈরি করুন (এর জন্য তিনটি সোর্স রিজিয়ন প্রয়োজন):
ক্লাউড শেলে
gcloud beta compute health-checks create http dns-failover-health-check \
--global \
--source-regions=$REGION_A,$REGION_B,europe-west1 \
--request-path=/ \
--check-interval=30s \
--port=80 \
--enable-logging
পাবলিক ম্যানেজড জোন এবং ফেইলওভার রাউটিং পলিসি তৈরি করুন।
একটি পাবলিক ম্যানেজড জোন তৈরি করুন (আপনার নিজের DNS ডোমেইন ব্যবহার করুন):
ক্লাউড শেলে
gcloud dns managed-zones create codelab-publiczone --dns-name=$DNS_DOMAIN --description="Codelab DNS Failover Zone"
একটি ফেইলওভার রাউটিং পলিসি সহ A রেকর্ডটি তৈরি করুন। এই পলিসিটি প্রাইমারি আইপি-কে নির্দেশ করে এবং কখন ব্যাকআপ আইপি-তে ফেইলওভার করতে হবে তা নির্ধারণ করতে হেলথ চেক ব্যবহার করে।
নিচের কমান্ডটি রাউটিং পলিসির জন্য আইপি অ্যাড্রেস উল্লেখ করতে লোড ব্যালেন্সার ফরওয়ার্ডিং রুলের নাম ব্যবহার করে।
gcloud beta dns record-sets create codelab.gcp.axiszulu.com. \
--type=A \
--ttl=5 \
--zone=codelab-publiczone \
--routing_policy_type=FAILOVER \
--routing-policy-primary-data=$PRIMARY_IP \
--routing-policy-backup-data-type=GEO \
--routing-policy-backup-item=location=$REGION_B,external_endpoints=$BACKUP_IP \
--health-check=dns-failover-health-check
৮. আঞ্চলিক ফেইলওভার পরীক্ষা করা
- প্রাথমিক যাচাইকরণ:
digবা ওয়েব ব্রাউজারের মতো কোনো টুল ব্যবহার করে আপনার ডোমেইনটি কোয়েরি করুন। এটি প্রাইমারি আইপি ($PRIMARY_IP)-তে রিজলভ হবে এবং "Region A - Primary Backend" পেজটি রিটার্ন করবে।
dig codelab.gcp.axiszulu.com
OUTPUT
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> codelab.gcp.axiszulu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16096
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;codelab.gcp.axiszulu.com. IN A
;; ANSWER SECTION:
codelab.gcp.axiszulu.com. 5 IN A <PRIMARY_IP>
ব্রাউজার থেকে আউটপুট

- ফেলওভার অনুকরণ করুন: প্রাথমিক ভিএম (
vm-a)-এ লগ ইন করুন এবং একটি বিভ্রাট অনুকরণ করতে অ্যাপাচি বন্ধ করুন:
ক্লাউড শেলে
gcloud compute ssh vm-a --zone=$REGION_A-a --command="sudo systemctl stop apache2"
- অস্বাস্থ্যকর অবস্থা যাচাই করুন: ডিএনএস স্বাস্থ্য পরীক্ষা দ্বারা প্রাথমিক এন্ডপয়েন্টটিকে অস্বাস্থ্যকর হিসেবে চিহ্নিত করার জন্য ২-৩ মিনিট অপেক্ষা করুন।
# check health status
gcloud compute backend-services get-health be-svc-a --region=${REGION_A}
Output:
backend: https://www.googleapis.com/compute/v1/projects/precise-airship-466617-c3/zones/us-central1-a/instanceGroups/ig-a
status:
healthStatus:
- healthState: UNHEALTHY
instance: https://www.googleapis.com/compute/v1/projects/precise-airship-466617-c3/zones/us-central1-a/instances/vm-a
ipAddress: 10.10.1.2
port: 80
kind: compute#backendServiceGroupHealth
- ফেলওভার যাচাই করুন: আপনার ডোমেইনটি পুনরায় কোয়েরি করুন। এটি এখন ব্যাকআপ আইপি (
$BACKUP_IP)-তে রিজলভ হবে এবং "রিজিওন বি - ব্যাকআপ ব্যাকএন্ড" পেজটি ফেরত দেবে।
dig codelab.gcp.axiszulu.com
OUTPUT
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> codelab.gcp.axiszulu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16096
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;codelab.gcp.axiszulu.com. IN A
;; ANSWER SECTION:
codelab.gcp.axiszulu.com. 5 IN A <BACKUP_IP>
ব্রাউজার থেকে আউটপুট

- ফেইলব্যাক অনুকরণ (ঐচ্ছিক): প্রাইমারি ভিএম-এ SSH করে অ্যাপাচি চালু করুন এবং DNS হেলথ চেক প্রাইমারি এন্ডপয়েন্টকে হেলদি হিসেবে চিহ্নিত করা পর্যন্ত অপেক্ষা করুন। ট্র্যাফিক স্বয়ংক্রিয়ভাবে প্রাইমারি আইপি-তে ফিরে যাবে।
- ঐচ্ছিক: ক্লাউড শেলে নিচের কমান্ডটি চালিয়ে আপনি ক্লাউড ডিএনএস হেলথ চেক লগিং বিশ্লেষণ করতে পারেন।
gcloud logging read "logName=projects/${projectid}/logs/compute.googleapis.com%2Fhealthchecks" \
--limit=10 \
--project=${projectid} \
--freshness=1d \
--format="table(timestamp:label=TIME, \
jsonPayload.healthCheckProbeResult.ipAddress:label=BACKEND_IP, \
jsonPayload.healthCheckProbeResult.previousDetailedHealthState:label=PREVIOUS_STATE, \
jsonPayload.healthCheckProbeResult.detailedHealthState:label=CURRENT_STATE, \
jsonPayload.healthCheckProbeResult.probeResultText:label=RESULT_TEXT)"
৯. পরিষ্কার করার পদক্ষেপ
অতিরিক্ত চার্জ এড়াতে সমস্ত উপাদান মুছে ফেলুন।
ক্লাউড শেল থেকে
# Delete VMs
gcloud compute instances delete vm-a --zone=$REGION_A-a --quiet
gcloud compute instances delete vm-b --zone=$REGION_B-a --quiet
# Delete Load Balancer Components (Primary)
gcloud compute forwarding-rules delete http-fwd-rule-a --region=$REGION_A --quiet
gcloud compute target-http-proxies delete http-proxy-a --region=$REGION_A --quiet
gcloud compute url-maps delete url-map-a --region=$REGION_A --quiet
gcloud compute backend-services delete be-svc-a --region=$REGION_A --quiet
gcloud compute addresses delete rxlb-ip-a --region=$REGION_A --quiet
# Delete Load Balancer Components (Backup)
gcloud compute forwarding-rules delete http-fwd-rule-b --region=$REGION_B --quiet
gcloud compute target-http-proxies delete http-proxy-b --region=$REGION_B --quiet
gcloud compute url-maps delete url-map-b --region=$REGION_B --quiet
gcloud compute backend-services delete be-svc-b --region=$REGION_B --quiet
gcloud compute addresses delete rxlb-ip-b --region=$REGION_B --quiet
# Delete Instance Groups and LB Health Checks
gcloud compute instance-groups unmanaged delete ig-a --zone=$REGION_A-a --quiet
gcloud compute instance-groups unmanaged delete ig-b --zone=$REGION_B-a --quiet
gcloud compute health-checks delete http-lb-hc-primary-region --region=$REGION_A --quiet
gcloud compute health-checks delete http-lb-hc-backup-region --region=$REGION_B --quiet
# Delete Cloud DNS Records Zone and DNS Heath Checks
gcloud dns record-sets delete $DNS_DOMAIN --type=A --zone=codelab-publiczone --quiet
gcloud dns managed-zones delete codelab-publiczone --quiet
gcloud compute health-checks delete dns-failover-health-check --global --quiet
# Delete Cloud NAT and Cloud Routers
gcloud compute routers nats delete $REGION_A-nat-gw \
--router=$REGION_A-cloudrouter --region=$REGION_A --quiet
gcloud compute routers nats delete $REGION_B-nat-gw \
--router=$REGION_B-cloudrouter --region=$REGION_B --quiet
gcloud compute routers delete $REGION_A-cloudrouter \
--region=$REGION_A --quiet
gcloud compute routers delete $REGION_B-cloudrouter \
--region=$REGION_B --quiet
# Delete Subnets and Firewall Rules
gcloud compute firewall-rules delete fw-allow-health-check --quiet
gcloud compute firewall-rules delete fw-allow-proxies --quiet
gcloud compute firewall-rules delete allow-ssh --quiet
gcloud compute networks subnets delete subnet-a \
--region=$REGION_A --quiet
gcloud compute networks subnets delete subnet-b \
--region=$REGION_B --quiet
gcloud compute networks subnets delete proxy-only-subnet-a \
--region=$REGION_A --quiet
gcloud compute networks subnets delete proxy-only-subnet-b \
--region=$REGION_B --quiet
gcloud compute networks delete external-lb-vpc --quiet
১০. অভিনন্দন!
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।
- আপনি ক্লাউড ডিএনএস হেলথ চেক এবং রিজিওনাল এক্সটার্নাল অ্যাপ্লিকেশন লোড ব্যালেন্সার ব্যবহার করে সফলভাবে একটি মাল্টি-রিজিওন অ্যাক্টিভ-প্যাসিভ ফেইলওভার কনফিগার এবং ভ্যালিডেট করেছেন।