1. ভূমিকা
শেষ আপডেট: 2022-09-22
একটি DNS রাউটিং নীতি কি?
ক্লাউড ডিএনএস রাউটিং নীতিগুলি ব্যবহারকারীদের ওজন, জিও অবস্থান বা স্বাস্থ্য পরীক্ষার মতো নির্দিষ্ট মানদণ্ডের উপর নির্ভর করে ডিএনএস ভিত্তিক ট্র্যাফিক স্টিয়ারিং কনফিগার করতে সক্ষম করে।
Cloud DNS নিম্নলিখিত রাউটিং নীতিগুলি সমর্থন করে:
- ওজনযুক্ত রাউন্ড রবিন রাউটিং নীতি
- ভূ-অবস্থান রাউটিং নীতি
- জিওফেন্সড রাউটিং নীতি
- ফেইলওভার রাউটিং নীতি
এই ল্যাবে আপনি ফেইলওভার রাউটিং নীতি কনফিগার এবং পরীক্ষা করবেন।
ফেইলওভার রাউটিং নীতি
ক্লাউড ডিএনএস অভ্যন্তরীণ TCP/UDP লোড ব্যালেন্সারগুলির জন্য স্বাস্থ্য পরীক্ষা সমর্থন করে যেগুলি বিশ্বব্যাপী অ্যাক্সেস সক্ষম। একটি ফেইলওভার রাউটিং নীতির সাথে, আপনি একটি রিসোর্স রেকর্ডের জন্য প্রাথমিক এবং ব্যাকআপ আইপি কনফিগার করতে পারেন। স্বাভাবিক ক্রিয়াকলাপে, ক্লাউড ডিএনএস প্রাথমিক সেটে প্রবিধান করা আইপি ঠিকানাগুলির সাথে প্রশ্নের উত্তর দেবে। যখন প্রাথমিক সেটের সমস্ত আইপি ঠিকানা ব্যর্থ হয় (স্বাস্থ্যের অবস্থা অস্বাস্থ্যকর হয়ে যায়), তখন ক্লাউড ডিএনএস ব্যাকআপ সেটে আইপি ঠিকানাগুলি পরিবেশন করা শুরু করে।
স্বাস্থ্য পরীক্ষা
DNS রাউটিং নীতি নেটিভ ইন্টারনাল লোড ব্যালেন্সার ইউনিফাইড হেলথ চেক (UHC) এর উপর নির্ভর করবে। একটি অভ্যন্তরীণ লোড ব্যালেন্সারকে স্বাস্থ্যকর বলে মনে করা হয় যদি 20% (বা তার বেশি) ব্যাকএন্ড সুস্থ থাকে। অভ্যন্তরীণ TCP/UDP এবং অভ্যন্তরীণ HTTP(S) লোড ব্যালেন্সারের জন্য স্বাস্থ্য পরীক্ষা বিভিন্ন তথ্য প্রদান করে। একটি অভ্যন্তরীণ HTTP(S) লোড ব্যালেন্সারের জন্য, UHC সমস্ত এনভয় প্রক্সির স্বাস্থ্যের অবস্থা প্রদান করে, কিন্তু একটি অভ্যন্তরীণ TCP/UDP লোড ব্যালেন্সারের জন্য, ক্লাউড ডিএনএস পৃথক ব্যাকএন্ড উদাহরণ থেকে সরাসরি স্বাস্থ্য সংকেত পায়। স্বাস্থ্য পরীক্ষার বিস্তারিত এখানে পাওয়া যাবে।
আপনি কি নির্মাণ করবেন
এই কোডল্যাবে, আপনি 2টি অঞ্চলে চলমান একটি ওয়েবসাইট তৈরি করতে যাচ্ছেন এবং এটির সাথে একটি ব্যর্থতা ডিএনএস রাউটিং নীতি যুক্ত করতে যাচ্ছেন। সেট আপে থাকবে:
সক্রিয় সম্পদ -
- REGION_1 এ L4 অভ্যন্তরীণ লোড ব্যালেন্সার৷
- REGION_1 এ Apache ওয়েব সার্ভার চলমান একটি VM৷
ব্যাকআপ সম্পদ -
- REGION_2-এ L4 অভ্যন্তরীণ লোড ব্যালেন্সার৷
- REGION_2 এ Apache ওয়েব সার্ভার চালানোর একটি VM৷
সেট আপ নীচে দেখানো হয়েছে -
আপনি কি শিখবেন
- কীভাবে একটি ব্যর্থতা রাউটিং নীতি তৈরি করবেন
- DNS ফেইলওভার ট্রিগার করুন
- ব্যাকআপ সেটে ট্র্যাফিক কীভাবে কমানো যায়
আপনি কি প্রয়োজন হবে
- DNS এর প্রাথমিক জ্ঞান
- গুগল কম্পিউট ইঞ্জিনের প্রাথমিক জ্ঞান
- L4 অভ্যন্তরীণ লোড ব্যালেন্সারের প্রাথমিক জ্ঞান
2. সেটআপ এবং প্রয়োজনীয়তা
- Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি যে কোনো সময় এটি আপডেট করতে পারেন.
- সমস্ত Google ক্লাউড প্রজেক্ট জুড়ে প্রোজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত করা হয়)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন এবং এটি উপলব্ধ কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান রয়েছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে এই টিউটোরিয়ালের বাইরে আপনার বিলিং খরচ না হয়, আপনি আপনার তৈরি করা রিসোর্স মুছে ফেলতে পারেন বা পুরো প্রোজেক্ট মুছে ফেলতে পারেন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ক্লাউড শেল শুরু করুন
যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।
Google ক্লাউড কনসোল থেকে, উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:
পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে। এটি সমাপ্ত হলে, আপনি এই মত কিছু দেখতে হবে:
এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারে করা যেতে পারে। আপনার কিছু ইন্সটল করার দরকার নেই।
3. Google Cloud SDK সংস্করণ
লেখার সময়, 401.0.0
হল সর্বশেষ Google Cloud SDK সংস্করণ। এই ল্যাবের সমস্ত কমান্ড Google ক্লাউড SDK-এর সর্বশেষ সংস্করণ ব্যবহার করে পরীক্ষা করা হয়েছে৷ এগিয়ে যাওয়ার আগে, দয়া করে নিশ্চিত করুন যে ক্লাউড শেল SDK-এর সর্বশেষ সংস্করণ ব্যবহার করছে।
SDK সংস্করণ পরীক্ষা করা হচ্ছে
SDK সংস্করণ পরীক্ষা করতে gcloud version
কমান্ড ব্যবহার করুন। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
আদেশ
gcloud version | grep "Google Cloud SDK"
আউটপুট উদাহরণ
Google Cloud SDK 401.0.0
পরবর্তী পদক্ষেপ
- যদি SDK সংস্করণ
401.0.0
বা উচ্চতর হয়, তাহলে পরবর্তী বিভাগে যান। - যদি SDK সংস্করণটি
401.0.0
এর চেয়ে কম হয়, তাহলে SDK আপডেট করতে নীচে তালিকাভুক্ত কমান্ডটি চালান৷
ঐচ্ছিক কমান্ড
sudo apt-get update && sudo apt-get install google-cloud-sdk
4. আপনি শুরু করার আগে
আমরা উপরে ব্যাখ্যা করা আর্কিটেকচারটি স্থাপন করা শুরু করার আগে, আসুন নিশ্চিত করি যে ক্লাউড শেল সঠিকভাবে কনফিগার করা হয়েছে এবং সমস্ত প্রয়োজনীয় API সক্রিয় করা আছে।
প্রজেক্ট আইডি সেট আপ করুন
ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রকল্প আইডি সেট আপ করা আছে। যদি আপনার ক্লাউড শেল প্রম্পটটি নীচের আউটপুটের মতো দেখায় এবং আপনি প্রকল্প আইডি পরিবর্তন করার পরিকল্পনা না করেন, তাহলে আপনি পরবর্তী ধাপে যেতে পারেন (পরিবেশ ভেরিয়েবল সেট করুন)।
USER@cloudshell:~ (PROJECT_ID)$
আপনি যদি এখনও প্রকল্প আইডি পরিবর্তন করতে চান তবে নীচে তালিকাভুক্ত কমান্ডটি ব্যবহার করুন, ক্লাউড শেল প্রম্পট (PROJECT_ID)
থেকে (YOUR-PROJECT-ID)
তে পরিবর্তিত হবে
ঐচ্ছিক কমান্ড
gcloud config set project [YOUR-PROJECT-ID]
আউটপুট উদাহরণ
Updated property [core/project]. USER@cloudshell:~ (YOUR-PROJECT-ID)$
এনভায়রনমেন্ট ভেরিয়েবল সেট করুন
এনভায়রনমেন্ট ভেরিয়েবল সেট করুন
আমরা পরিবেশের ভেরিয়েবল সেট করতে export
কমান্ড ব্যবহার করব। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
কমান্ড
export REGION_1=us-west1
export REGION_1_ZONE=us-west1-a
export REGION_2=us-east4
export REGION_2_ZONE=us-east4-a
যাচাই করুন
এখন যেহেতু এনভায়রনমেন্ট ভেরিয়েবল সেট করা আছে, আসুন echo
কমান্ড ব্যবহার করে যাচাই করি। প্রতিটি কমান্ডের আউটপুট সেই মান হওয়া উচিত যা আমরা উপরে export
কমান্ড ব্যবহার করে কনফিগার করেছি। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
কমান্ড
echo $REGION_1
echo $REGION_1_ZONE
echo $REGION_2
echo $REGION_2_ZONE
সমস্ত প্রয়োজনীয় পরিষেবা সক্রিয় করুন
কম্পিউট এবং ডিএনএস এপিআই সক্ষম করতে gcloud services enable
কমান্ড ব্যবহার করুন। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
Compute API সক্রিয় করুন
আদেশ
gcloud services enable compute.googleapis.com
DNS API সক্ষম করুন
আদেশ
gcloud services enable dns.googleapis.com
যাচাই করুন
এখন যেহেতু পরিষেবাগুলি সক্ষম করা হয়েছে, আসুন সমস্ত সক্ষম API তালিকাভুক্ত করতে gcloud services list
কমান্ড ব্যবহার করে যাচাই করি৷
আদেশ
gcloud services list | grep -E 'compute|dns'
আউটপুট উদাহরণ
NAME: compute.googleapis.com NAME: dns.googleapis.com
5. ভিপিসি নেটওয়ার্ক, সাবনেট এবং ফায়ারওয়াল নিয়ম তৈরি করুন
এই বিভাগে, আমরা ভিপিসি নেটওয়ার্ক, দুটি সাবনেট (প্রতিটি অঞ্চলে একটি) এবং প্রয়োজনীয় ফায়ারওয়াল নিয়ম তৈরি করব।
ভিপিসি নেটওয়ার্ক তৈরি করুন
VPC নেটওয়ার্ক তৈরি করতে gcloud compute networks create
কমান্ড ব্যবহার করুন। আমরা সাবনেট মোডটিকে কাস্টম হিসাবে সেট করছি কারণ আমরা পরবর্তী ধাপে আমাদের নিজস্ব সাবনেট তৈরি করব। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান।
আদেশ
gcloud compute networks create my-vpc --subnet-mode custom
সাবনেট তৈরি করুন
দুটি সাবনেট তৈরি করতে gcloud compute networks subnets create
কমান্ড ব্যবহার করুন, একটি REGION_1 এবং একটি REGION_2-এ৷ ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
REGION_1 সাবনেট
আদেশ
gcloud compute networks subnets create ${REGION_1}-subnet \ --network my-vpc \ --range 10.1.0.0/24 \ --region $REGION_1
REGION_2 সাবনেট
আদেশ
gcloud compute networks subnets create ${REGION_2}-subnet \ --network my-vpc \ --range 10.2.0.0/24 \ --region $REGION_2
ফায়ারওয়াল নিয়ম তৈরি করুন
আপনাকে ভিপিসি সাবনেট এবং লোড ব্যালেন্সার হেলথ চেক আইপি রেঞ্জ থেকে পোর্ট 80-এ ট্র্যাফিকের অনুমতি দিতে হবে।
এটি ছাড়াও, ক্লায়েন্ট ভিএমগুলিতে SSH ট্র্যাফিকের অনুমতি দেওয়ার জন্য আপনাকে ফায়ারওয়াল নিয়ম তৈরি করতে হবে।
ফায়ারওয়াল নিয়ম তৈরি করতে gcloud compute firewall-rules create
কমান্ড ব্যবহার করুন। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
পোর্ট 80 এ ট্রাফিকের অনুমতি দিন
আদেশ
gcloud compute firewall-rules create allow-http-lb-hc \ --allow tcp:80 --network my-vpc \ --source-ranges 10.1.0.0/24,10.2.0.0/24,35.191.0.0/16,130.211.0.0/22 \ --target-tags=allow-http
ক্লায়েন্ট ভিএম-এ SSH ট্রাফিকের অনুমতি দিন
আদেশ
gcloud compute firewall-rules create allow-ssh \ --allow tcp:22 --network my-vpc \ --source-ranges 0.0.0.0/0 \ --target-tags=allow-ssh
6. ক্লাউড NAT তৈরি করুন
ইন্টারনেট থেকে প্যাকেজ ডাউনলোড এবং ইনস্টল করতে সক্ষম হওয়ার জন্য ব্যক্তিগত VM-এর জন্য আপনার উভয় অঞ্চলে ক্লাউড NAT গেটওয়ের প্রয়োজন।
- আমাদের ওয়েব সার্ভার VM গুলিকে Apache ওয়েব সার্ভার ডাউনলোড এবং ইনস্টল করতে হবে৷
- ক্লায়েন্ট VM-কে dnsutils প্যাকেজ ডাউনলোড এবং ইনস্টল করতে হবে যা আমরা আমাদের পরীক্ষার জন্য ব্যবহার করব।
প্রতিটি ক্লাউড NAT গেটওয়ে একটি একক VPC নেটওয়ার্ক, অঞ্চল এবং ক্লাউড রাউটারের সাথে যুক্ত। তাই NAT গেটওয়ে তৈরি করার আগে আমাদের প্রতিটি অঞ্চলে ক্লাউড রাউটার তৈরি করতে হবে।
ক্লাউড রাউটার তৈরি করুন
us-west1 এবং us-east4 অঞ্চলে ক্লাউড রাউটার তৈরি করতে gcloud compute routers create
কমান্ড ব্যবহার করুন। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান।
অঞ্চল_1 ক্লাউড রাউটার
কমান্ড
gcloud compute routers create "${REGION_1}-cloudrouter" \ --region $REGION_1 --network=my-vpc --asn=65501
Region_2 ক্লাউড রাউটার
কমান্ড
gcloud compute routers create "${REGION_2}-cloudrouter" \ --region $REGION_2 --network=my-vpc --asn=65501
NAT গেটওয়ে তৈরি করুন
us-west1 এবং us-east4 অঞ্চলে NAT গেটওয়ে তৈরি করতে gcloud compute routers nat create
কমান্ড ব্যবহার করুন। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান।
অঞ্চল_1 NAT গেটওয়ে
কমান্ড
gcloud compute routers nats create "${REGION_1}-nat-gw" \ --router="${REGION_1}-cloudrouter" \ --router-region=$REGION_1 \ --nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
Region_2 NAT গেটওয়ে
কমান্ড
gcloud compute routers nats create "${REGION_2}-nat-gw" \ --router="${REGION_2}-cloudrouter" \ --router-region=$REGION_2 \ --nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
7. কম্পিউট ইঞ্জিন VM তৈরি করুন
এই বিভাগে, আপনি ওয়েব সার্ভার, ওয়েব সার্ভার এবং ক্লায়েন্ট VM-এর জন্য অব্যবস্থাপিত উদাহরণ গোষ্ঠী তৈরি করবেন।
ওয়েব সার্ভার VM তৈরি করুন
ওয়েব সার্ভার তৈরি করতে gcloud compute instances create
কমান্ড ব্যবহার করুন। আমাদের দুটি ওয়েব সার্ভার তৈরি করতে হবে, একটি REGION_1 এ এবং আরেকটি REGION_2 এ। আমরা ওয়েব সার্ভারে অ্যাপাচি ইনস্টল এবং কনফিগার করতে স্টার্টআপ স্ক্রিপ্ট ব্যবহার করছি।
REGION_1 ওয়েব সার্ভার
ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান
আদেশ
gcloud compute instances create "${REGION_1}-instance" \ --image-family=debian-11 --image-project=debian-cloud \ --zone=$REGION_1_ZONE \ --network-interface=network=my-vpc,subnet=${REGION_1}-subnet,no-address \ --tags=allow-http \ --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://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
REGION_2 ওয়েব সার্ভার
ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান
আদেশ
gcloud compute instances create "${REGION_2}-instance" \ --image-family=debian-11 --image-project=debian-cloud \ --zone=$REGION_2_ZONE \ --network-interface=network=my-vpc,subnet=${REGION_2}-subnet,no-address \ --tags=allow-http \ --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://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
অনিয়ন্ত্রিত উদাহরণ গোষ্ঠী তৈরি করুন
এই বিভাগে, আমরা দুটি অব্যবস্থাপিত উদাহরণ গ্রুপ তৈরি করি। ILB ব্যাকএন্ড পরিষেবাগুলি কনফিগার করতে আমরা পরবর্তী বিভাগে এই উদাহরণ গোষ্ঠীগুলি ব্যবহার করব। একবার ইনস্ট্যান্স গ্রুপ তৈরি হয়ে গেলে, আমরা এই ইনস্ট্যান্স গ্রুপগুলিতে ওয়েব সার্ভার VM যোগ করব।
আনম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করুন
gcloud compute instance-groups unmanaged create
কমান্ড ব্যবহার করে দুটি অব্যবস্থাপিত উদাহরণ গ্রুপ তৈরি করুন, একটি us-west1 ওয়েব সার্ভারের জন্য এবং একটি us-east4 ওয়েব সার্ভারের জন্য।
Region_1 ইনস্ট্যান্স গ্রুপ
কমান্ড
gcloud compute instance-groups unmanaged create \ "${REGION_1}-instance-group" --zone=$REGION_1_ZONE
Region_2 ইনস্ট্যান্স গ্রুপ
কমান্ড
gcloud compute instance-groups unmanaged create \ "${REGION_2}-instance-group" --zone=$REGION_2_ZONE
ইনস্ট্যান্স গ্রুপে VM যোগ করুন
আমরা এইমাত্র তৈরি করা ইনস্ট্যান্স গ্রুপগুলিতে দৃষ্টান্তগুলি যোগ করতে gcloud compute instance-groups unmanaged add-instances
কমান্ড ব্যবহার করুন। REGION_1 ইনস্ট্যান্স গ্রুপে REGION_1 ওয়েব সার্ভার এবং REGION_2 ইনস্ট্যান্স গ্রুপে REGION_2 ওয়েব সার্ভার যোগ করুন
Region_1 ইনস্ট্যান্স গ্রুপ
কমান্ড
gcloud compute instance-groups unmanaged add-instances \ "${REGION_1}-instance-group" --instances $REGION_1-instance \ --zone=$REGION_1_ZONE
Region_2 ইনস্ট্যান্স গ্রুপ
কমান্ড
gcloud compute instance-groups unmanaged add-instances \ "${REGION_2}-instance-group" --instances $REGION_2-instance \ --zone=$REGION_2_ZONE
একটি ক্লায়েন্ট VM তৈরি করুন
আমরা পরীক্ষা চালাতে এবং আমাদের DNS কনফিগারেশন যাচাই করতে এই VM ব্যবহার করব। আমরা dnsutils প্যাকেজ ইনস্টল করার জন্য একটি স্টার্টআপ স্ক্রিপ্ট ব্যবহার করছি। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান।
আদেশ
gcloud compute instances create client-instance --image-family=debian-11 \ --image-project=debian-cloud \ --zone=$REGION_1_ZONE \ --network-interface=network=my-vpc,subnet=${REGION_1}-subnet,no-address \ --tags=allow-ssh \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install dnsutils -y'
8. L4 অভ্যন্তরীণ লোড ব্যালেন্সার তৈরি করুন
L4 ILB তৈরি করতে, আমাদের একটি স্বাস্থ্য পরীক্ষা, একটি ব্যাকএন্ড পরিষেবা এবং একটি ফরওয়ার্ডিং নিয়ম তৈরি করতে হবে।
স্বাস্থ্য পরীক্ষা তৈরি করুন
স্বাস্থ্য পরীক্ষা তৈরি করতে gcloud compute health-checks create
কমান্ড ব্যবহার করুন। আমরা একটি বেসিক http হেলথ চেক তৈরি করছি এবং টার্গেট পোর্ট হল পোর্ট 80। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
আদেশ
gcloud compute health-checks create http http-hc --port 80
ব্যাকএন্ড পরিষেবাগুলি কনফিগার করুন
ব্যাকএন্ড পরিষেবা তৈরি করতে gcloud compute backend-services create
কমান্ড ব্যবহার করুন। ব্যাকএন্ড পরিষেবাগুলি তৈরি হয়ে গেলে, আমরা gcloud compute backend-services add-backend
কমান্ড ব্যবহার করে ব্যাকএন্ড পরিষেবাগুলিতে অব্যবস্থাপিত উদাহরণ গোষ্ঠীগুলি যুক্ত করব। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান।
ব্যাকএন্ড পরিষেবা তৈরি করুন
কমান্ড
gcloud compute backend-services create $REGION_1-backend-service \ --load-balancing-scheme=INTERNAL --protocol=TCP \ --health-checks=http-hc --region=$REGION_1
gcloud compute backend-services create $REGION_2-backend-service \ --load-balancing-scheme=INTERNAL --protocol=TCP \ --health-checks=http-hc --region=$REGION_2
ব্যাকএন্ড যোগ করুন
আদেশ
gcloud compute backend-services add-backend $REGION_1-backend-service \ --instance-group=$REGION_1-instance-group \ --region=$REGION_1 \ --instance-group-zone=$REGION_1_ZONE
gcloud compute backend-services add-backend $REGION_2-backend-service \ --instance-group=$REGION_2-instance-group \ --region=$REGION_2 \ --instance-group-zone=$REGION_2_ZONE
ফরওয়ার্ড করার নিয়ম তৈরি করুন
উভয় অঞ্চলে ফরওয়ার্ডিং নিয়ম তৈরি করতে gcloud compute forwarding-rules create
কমান্ড ব্যবহার করুন। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
REGION_1 ফরওয়ার্ড করার নিয়ম
কমান্ড
gcloud compute forwarding-rules create $REGION_1-ilb \ --region=$REGION_1 \ --load-balancing-scheme=internal \ --network=my-vpc \ --subnet=$REGION_1-subnet \ --ip-protocol=TCP \ --ports=80 \ --backend-service=$REGION_1-backend-service \ --backend-service-region=$REGION_1 \ --allow-global-access
REGION_2 ফরওয়ার্ড করার নিয়ম
gcloud compute forwarding-rules create $REGION_2-ilb \ --region=$REGION_2 \ --load-balancing-scheme=internal \ --network=my-vpc \ --subnet=$REGION_2-subnet \ --ip-protocol=TCP \ --ports=80 \ --backend-service=$REGION_2-backend-service \ --backend-service-region=$REGION_2 \ --allow-global-access
9. DNS কনফিগার করুন
এই বিভাগে, আমরা ফেইলওভার রাউটিং নীতি সহ ব্যক্তিগত জোন এবং একটি DNS রেকর্ড তৈরি করব।
একটি ব্যক্তিগত DNS জোন তৈরি করুন
example.com-এর জন্য একটি ব্যক্তিগত জোন তৈরি করতে gcloud dns managed-zones create
কমান্ড ব্যবহার করুন। আমরা এই জোনটি ফেইলওভার রাউটিং নীতি সহ একটি রিসোর্স রেকর্ড তৈরি করতে ব্যবহার করব। ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান
কমান্ড
gcloud dns managed-zones create example-com \ --dns-name example.com. --description="My private zone" \ --visibility=private --networks my-vpc
ফেইলওভার রাউটিং নীতি সহ একটি DNS রেকর্ড তৈরি করুন
ফেইলওভার রাউটিং নীতির সাথে একটি DNS রেকর্ড তৈরি করতে gcloud dns record-sets create
কমান্ড ব্যবহার করুন। প্রাথমিক লক্ষ্য হল REGION_1-এ লোড ব্যালেন্সার৷ ক্লাউড DNS শুধুমাত্র ভূ-ভিত্তিক ব্যাকআপ লক্ষ্যগুলিকে সমর্থন করে, ব্যাকআপ সেট হল একটি ভূ-অবস্থান নীতি যার লক্ষ্য REGION_1 এবং REGION_2 উভয়ের জন্যই REGION_2 লোড ব্যালেন্সার। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান
আদেশ
gcloud dns record-sets create failover.example.com --ttl 5 --type A \ --routing-policy-type=FAILOVER \ --routing-policy-primary-data=$REGION_1-ilb \ --routing-policy-backup-data="${REGION_1}=${REGION_2}-ilb;${REGION_2}=${REGION_2}-ilb" \ --routing-policy-backup-data-type=GEO \ --zone=example-com \ --enable-health-checking
আউটপুট উদাহরণ
NAME: failover.example.com. TYPE: A TTL: 5 DATA: Primary: "10.1.0.4, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-west1, regionalL4ilb" Backup: us-west1: "10.2.0.3, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-east4, regionalL4ilb";us-east4: "10.2.0.3, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-east4, regionalL4ilb"
10. DNS রেজোলিউশন পরীক্ষা করুন
আমাদের ফেইলওভার সেটআপ পরীক্ষা করার আগে, আসুন উভয় অভ্যন্তরীণ লোড ব্যালেন্সারের জন্য আইপি ঠিকানাগুলির একটি নোট তৈরি করি। ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি চালান।
আদেশ
gcloud compute forwarding-rules list --filter="name:($REGION_1-ilb $REGION_2-ilb)"
আউটপুট উদাহরণ
এই উদাহরণে, us-west1-ilb
এর একটি IP ঠিকানা 10.1.0.4
এবং us-east4-ilb
এর একটি IP ঠিকানা 10.2.0.3
রয়েছে
NAME: us-west1-ilb REGION: us-west1 IP_ADDRESS: 10.1.0.4 IP_PROTOCOL: TCP TARGET: us-west1/backendServices/us-west1-backend-service NAME: us-east4-ilb REGION: us-east4 IP_ADDRESS: 10.2.0.3 IP_PROTOCOL: TCP TARGET: us-east4/backendServices/us-east4-backend-service
এখন আমরা ক্লায়েন্ট-ইনস্ট্যান্সে লগ ইন করব এবং ডিএনএস রেজোলিউশন পরীক্ষা করব। ওয়েব কনসোলে, "কম্পিউট ইঞ্জিন | VM ইনস্ট্যান্স"-এ নেভিগেট করুন
কনসোল থেকে ক্লায়েন্ট-ইনস্ট্যান্সে লগইন করতে SSH বোতামে ক্লিক করুন।
এখন যেহেতু আমরা ক্লায়েন্ট VM-এ আছি, failover.example.com
ডোমেন নামটি সমাধান করতে dig
কমান্ডটি ব্যবহার করুন।
লুপটি 6 সেকেন্ডের স্লিপ টাইমার সহ দশবার কমান্ড চালানোর জন্য কনফিগার করা হয়েছে।
আদেশ
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
যেহেতু DNS রেকর্ডে TTL 5 সেকেন্ডে সেট করা হয়েছে, তাই 6 সেকেন্ডের একটি স্লিপ টাইমার যোগ করা হয়েছে। স্লিপ টাইমার নিশ্চিত করবে যে আপনি প্রতিটি ডিএনএস অনুরোধের জন্য একটি ক্যাশড ডিএনএস প্রতিক্রিয়া পাবেন। এই কমান্ডটি কার্যকর করতে প্রায় এক মিনিট সময় লাগবে।
আউটপুটে আপনি রিসোর্স রেকর্ডের প্রাথমিক সেটে লোড ব্যালেন্সারের আইপি ঠিকানা দেখতে পাবেন। আমাদের সেটআপে এটি us-west1 অঞ্চলে লোড ব্যালেন্সারের IP হবে।
11. টেস্ট ফেইলওভার
আমরা REGION_1 VM থেকে নেটওয়ার্ক ট্যাগ সরিয়ে একটি ব্যর্থতা অনুকরণ করব৷ এটি পোর্ট 80-এ অ্যাক্সেস ব্লক করবে এবং ফলস্বরূপ, স্বাস্থ্য পরীক্ষা ব্যর্থ হতে শুরু করবে।
নেটওয়ার্ক ট্যাগ সরান
VM থেকে নেটওয়ার্ক ট্যাগ সরাতে gcloud compute instances remove-tags
কমান্ড ব্যবহার করুন। ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান
আদেশ
gcloud compute instances remove-tags $REGION_1-instance \ --zone=$REGION_1_ZONE --tags=allow-http
স্বাস্থ্য পরীক্ষা 10 সেকেন্ডের মধ্যে ব্যর্থ হবে। আবার DNS রেজোলিউশন পরীক্ষা চালান।
DNS রেজোলিউশন
ক্লায়েন্ট-ইনস্ট্যান্স থেকে নিম্নলিখিত কমান্ডটি চালান
আদেশ
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
আউটপুটে আপনি রিসোর্স রেকর্ডের ব্যাকআপ সেটে লোড ব্যালেন্সারের আইপি ঠিকানা দেখতে পাবেন। আমাদের সেটআপে এটি হবে US-east4 অঞ্চলে লোড ব্যালেন্সারের IP।
12. ট্রাফিক ট্রিকলিং পরীক্ষা করুন
ডিফল্টরূপে, ব্যর্থতা নীতি সমস্ত DNS অনুরোধের জন্য প্রাথমিক শেষ পয়েন্ট আইপি ফেরত দেয় এবং প্রাথমিক স্বাস্থ্য পরীক্ষায় ব্যর্থ হলে শুধুমাত্র ব্যাকআপ আইপি ফেরত দেয়। ক্লাউড ডিএনএস ব্যবহারকারীদের ট্রিকল রেশিও কনফিগার করতে দেয় যা ক্লাউড ডিএনএসকে ট্রাফিকের একটি অংশ ব্যাকআপ লক্ষ্যগুলিতে পাঠাতে দেয়, এমনকি প্রাথমিক লক্ষ্যগুলি সুস্থ থাকা সত্ত্বেও। রেশন অবশ্যই 0
এবং 1
এর মধ্যে একটি মান হতে হবে। ডিফল্ট মান 0
এটি পরীক্ষা করার জন্য, চলুন নেটওয়ার্ক ট্যাগটি আবার REGION_1 ওয়েব সার্ভারে যোগ করি৷
নেটওয়ার্ক ট্যাগ যোগ করুন
প্রাথমিক অঞ্চল VM-এ http ট্র্যাফিকের অনুমতি দিতে ওয়েব সার্ভার VM-এ ট্যাগটি আবার যোগ করুন। ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
আদেশ
gcloud compute instances add-tags $REGION_1-instance \ --zone $REGION_1_ZONE --tags allow-http
স্বাস্থ্য পরীক্ষা 10 সেকেন্ডের মধ্যে পাস হবে
DNS রেজোলিউশন প্রাথমিক লোড ব্যালেন্সারকে নির্দেশ করে তা যাচাই করুন। আমাদের সেটআপে এটি হবে us-west1 অঞ্চলে লোড ব্যালেন্সারের IP ঠিকানা।
ক্লায়েন্ট-ইনস্ট্যান্স থেকে নিম্নলিখিত কমান্ডটি চালান
আদেশ
dig +short failover.example.com
DNS রেকর্ড আপডেট করুন
এখন, আমরা failover.example.com
এর DNS রেকর্ড পরিবর্তন করব যাতে প্রাথমিক স্বাস্থ্যকর থাকা সত্ত্বেও ব্যাকআপ সেটে ট্রাফিকের 30% ট্রিকল করা যায়। ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান
আদেশ
gcloud dns record-sets update failover.example.com --ttl 30 --type A \ --routing-policy-type=FAILOVER \ --routing-policy-primary-data=$REGION_1-ilb \ --routing-policy-backup-data="${REGION_1}=${REGION_2}-ilb;${REGION_2}=${REGION_2}-ilb" \ --routing-policy-backup-data-type=GEO \ --zone=example-com --enable-health-checking \ --backup-data-trickle-ratio=0.3
DNS রেজোলিউশন
ক্লায়েন্ট VM থেকে নিম্নলিখিত কমান্ডটি চালান। আপনি লক্ষ্য করবেন যে DNS রেকর্ড failover.example.com
প্রাথমিক লোড ব্যালেন্সার আইপি প্রায় সমাধান করবে। 70% সময় এবং ব্যাকআপ লোড ব্যালেন্সার আইপি প্রায়। সময়ের 30%।
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
13. পরিষ্কার করার পদক্ষেপ
এই ল্যাবে ব্যবহৃত সংস্থানগুলি পরিষ্কার করার জন্য, CloudShell থেকে নিম্নলিখিত কমান্ডগুলি চালান
gcloud dns record-sets delete failover.example.com --type=A \ --zone=example-com --quiet gcloud dns managed-zones delete example-com --quiet gcloud compute forwarding-rules delete $REGION_1-ilb \ --region=$REGION_1 --quiet gcloud compute forwarding-rules delete $REGION_2-ilb \ --region=$REGION_2 --quiet gcloud compute backend-services delete $REGION_1-backend-service \ --region=$REGION_1 --quiet gcloud compute backend-services delete $REGION_2-backend-service \ --region=$REGION_2 --quiet gcloud compute health-checks delete http-hc --quiet gcloud compute instances delete client-instance --zone=$REGION_1_ZONE --quiet gcloud compute instance-groups unmanaged delete $REGION_1-instance-group \ --zone=$REGION_1_ZONE --quiet gcloud compute instance-groups unmanaged delete $REGION_2-instance-group \ --zone=$REGION_2_ZONE --quiet gcloud compute instances delete $REGION_1-instance \ --zone=$REGION_1_ZONE --quiet gcloud compute instances delete $REGION_2-instance \ --zone=$REGION_2_ZONE --quiet gcloud compute routers nats delete $REGION_1-nat-gw \ --router=$REGION_1-cloudrouter --region=$REGION_1 --quiet gcloud compute routers nats delete $REGION_2-nat-gw \ --router=$REGION_2-cloudrouter --region=$REGION_2 --quiet gcloud compute routers delete $REGION_1-cloudrouter \ --region=$REGION_1 --quiet gcloud compute routers delete $REGION_2-cloudrouter \ --region=$REGION_2 --quiet gcloud compute firewall-rules delete allow-ssh allow-http-lb-hc --quiet gcloud compute networks subnets delete $REGION_1-subnet \ --region=$REGION_1 --quiet gcloud compute networks subnets delete $REGION_2-subnet \ --region=$REGION_2 --quiet gcloud compute networks delete my-vpc --quiet
14. অভিনন্দন
অভিনন্দন, আপনি সফলভাবে ক্লাউড ডিএনএস ফেইলওভার রাউটিং নীতি স্থাপন ও পরীক্ষা করেছেন
আমরা কভার করেছি কি
- ক্লাউড ডিএনএস ফেইলওভার রাউটিং নীতি কীভাবে কনফিগার করবেন
- পরীক্ষা DNS ব্যর্থতা
- ব্যাকআপ সেটে ট্র্যাফিক কীভাবে কমানো যায়
এরপর কি?
- সক্রিয় এবং ব্যাকআপ সেটের জন্য একাধিক আইপি সেট আপ করার চেষ্টা করুন
- আপনার অনিয়ন্ত্রিত উদাহরণ গোষ্ঠীতে একাধিক ব্যাকএন্ড VM যোগ করার চেষ্টা করুন
- ব্যাকআপ সেটে ভৌগলিক অবস্থান নীতির জন্য বিভিন্ন অঞ্চলে একাধিক লোড ব্যালেন্সার সেট আপ করার চেষ্টা করুন।
আরও জানুন
https://cloud.google.com/dns/docs/zones/manage-routing-policies