অভ্যন্তরীণ TCP/UDP লোড ব্যালেন্সারের জন্য ক্লাউড ডিএনএস রাউটিং নীতি এবং স্বাস্থ্য পরীক্ষা ব্যবহার করে মাল্টি-রিজিয়ন ফেইলওভার

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৷

সেট আপ নীচে দেখানো হয়েছে -

d0a91d3d3698f544.png

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

  • কীভাবে একটি ব্যর্থতা রাউটিং নীতি তৈরি করবেন
  • DNS ফেইলওভার ট্রিগার করুন
  • ব্যাকআপ সেটে ট্র্যাফিক কীভাবে কমানো যায়

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

  • DNS এর প্রাথমিক জ্ঞান
  • গুগল কম্পিউট ইঞ্জিনের প্রাথমিক জ্ঞান
  • L4 অভ্যন্তরীণ লোড ব্যালেন্সারের প্রাথমিক জ্ঞান

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

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

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 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

পরবর্তী পদক্ষেপ

  1. যদি SDK সংস্করণ 401.0.0 বা উচ্চতর হয়, তাহলে পরবর্তী বিভাগে যান।
  2. যদি 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 ইনস্ট্যান্স"-এ নেভিগেট করুন

5c824940bf414501.png

কনসোল থেকে ক্লায়েন্ট-ইনস্ট্যান্সে লগইন করতে SSH বোতামে ক্লিক করুন।

b916eb32c60a4156.png

এখন যেহেতু আমরা ক্লায়েন্ট 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