ক্লাউড আর্মার সহ রেট লিমিটিং

১. ভূমিকা

বিশ্বজুড়ে গুগল পয়েন্টস অফ প্রেজেন্স (POP)-এ, গুগলের নেটওয়ার্কের প্রান্তে গুগল ক্লাউড HTTP(S) লোড ব্যালান্সিং স্থাপন করা হয়েছে। কোনো HTTP(S) লোড ব্যালান্সারে পাঠানো ব্যবহারকারীর ট্র্যাফিক প্রথমে ব্যবহারকারীর সবচেয়ে কাছের POP-এ প্রবেশ করে এবং তারপর গুগলের গ্লোবাল নেটওয়ার্কের মাধ্যমে পর্যাপ্ত ধারণক্ষমতা সম্পন্ন নিকটতম ব্যাকএন্ডে লোড ব্যালান্স করা হয়।

ক্লাউড আর্মার হলো গুগলের ডিস্ট্রিবিউটেড ডিনায়াল অফ সার্ভিস এবং ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল (WAF) সনাক্তকরণ সিস্টেম। ক্লাউড আর্মার গুগল ক্লাউড এইচটিটিপি লোড ব্যালান্সারের সাথে নিবিড়ভাবে সংযুক্ত এবং এটি আপনাকে অনাকাঙ্ক্ষিত অনুরোধের জন্য আগত ট্র্যাফিক পরীক্ষা করার সুযোগ দেয়। এই পরিষেবার রেট লিমিটিং বৈশিষ্ট্যটি আপনাকে অনুরোধের পরিমাণের উপর ভিত্তি করে ব্যাকএন্ড রিসোর্সগুলিতে ট্র্যাফিক কমাতে সাহায্য করে এবং আপনার ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্কে অনাকাঙ্ক্ষিত ট্র্যাফিককে রিসোর্স ব্যবহার করা থেকে বিরত রাখে।

এই ল্যাবে, আপনি নিচের ডায়াগ্রামে দেখানো অনুযায়ী গ্লোবাল ব্যাকএন্ডসহ একটি HTTP লোড ব্যালেন্সার কনফিগার করবেন। এরপর, আপনি লোড ব্যালেন্সারটির স্ট্রেস টেস্ট করবেন এবং আপনার ব্যাকএন্ড রিসোর্সগুলোতে আসা ট্র্যাফিক সীমিত করার জন্য একটি ক্লাউড আর্মার রেট লিমিটিং পলিসি যোগ করবেন।

2e1b99d22f4f32a.png

আপনি যা শিখবেন

  • যথাযথ হেলথ চেক সহ কীভাবে একটি HTTP লোড ব্যালেন্সার সেট আপ করবেন।
  • কীভাবে একটি ক্লাউড আর্মার রেট লিমিটিং পলিসি তৈরি করবেন।
  • একটি ভিএম থেকে স্ট্রেস টেস্ট চালানোর সময় রেট লিমিটিং পলিসি ট্র্যাফিক ব্লক করছে কিনা, তা কীভাবে যাচাই করবেন।

আপনার যা যা লাগবে

  • বেসিক নেটওয়ার্কিং এবং HTTP সম্পর্কে জ্ঞান
  • ইউনিক্স/লিনাক্স কমান্ড লাইনের প্রাথমিক জ্ঞান

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

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

শুরু করার আগে

ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রজেক্ট আইডি সেট আপ করা আছে।

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

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

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

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

৩. ব্যাকএন্ডগুলিতে HTTP ট্র্যাফিকের অনুমতি দেওয়ার জন্য ফায়ারওয়াল নিয়মগুলি কনফিগার করুন।

গুগল ক্লাউড হেলথ চেক এবং লোড ব্যালেন্সার থেকে ব্যাকএন্ডগুলিতে HTTP ট্র্যাফিকের অনুমতি দেওয়ার জন্য ফায়ারওয়াল নিয়মগুলি কনফিগার করুন।

আমরা আপনার প্রজেক্টে তৈরি করা ডিফল্ট VPC নেটওয়ার্কটি ব্যবহার করব। ব্যাকএন্ডগুলোতে HTTP ট্র্যাফিক অনুমোদনের জন্য একটি ফায়ারওয়াল রুল তৈরি করুন। হেলথ চেক নির্ধারণ করে যে একটি লোড ব্যালান্সারের কোন ইনস্ট্যান্সগুলো নতুন কানেকশন গ্রহণ করতে পারবে। HTTP লোড ব্যালান্সিংয়ের জন্য, আপনার লোড ব্যালান্সড ইনস্ট্যান্সগুলোতে হেলথ চেক প্রোবগুলো 130.211.0.0/22 ​​এবং 35.191.0.0/16 রেঞ্জের অ্যাড্রেসগুলো থেকে আসে। আপনার VPC ফায়ারওয়াল রুলগুলোকে অবশ্যই এই কানেকশনগুলোর অনুমতি দিতে হবে। এছাড়াও, লোড ব্যালান্সারগুলো একই IP রেঞ্জে ব্যাকএন্ডের সাথে যোগাযোগ করে।

  1. ক্লাউড কনসোলে, নেভিগেশন মেনুতে যান ( mainmenu.png ) > ভিপিসি নেটওয়ার্ক > ফায়ারওয়াল

dbdf491e6d7863f3.png

  1. বিদ্যমান ICMP , ইন্টারনাল , RDP এবং SSH ফায়ারওয়াল নিয়মগুলো লক্ষ্য করুন। প্রতিটি গুগল ক্লাউড প্রজেক্ট ডিফল্ট নেটওয়ার্ক এবং এই ফায়ারওয়াল নিয়মগুলো দিয়ে শুরু হয়।
  2. ফায়ারওয়াল নিয়ম তৈরি করুন- এ ক্লিক করুন।
  3. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

নাম

ডিফল্ট-অনুমতি-স্বাস্থ্য-পরীক্ষা

নেটওয়ার্ক

ডিফল্ট

লক্ষ্য

নির্দিষ্ট লক্ষ্য ট্যাগ

লক্ষ্য ট্যাগ

http-সার্ভার

উৎস ফিল্টার

আইপি রেঞ্জ

উৎস আইপি পরিসীমা

১৩০.২১১.০.০/২২, ৩৫.১৯১.০.০/১৬

প্রোটোকল এবং পোর্ট

নির্দিষ্ট প্রোটোকল ও পোর্টগুলো ঠিক করুন, এবং তারপর টিসিপি (TCP) পরীক্ষা করুন

  1. তৈরি করুন- এ ক্লিক করুন।

বিকল্পভাবে, যদি আপনি gcloud কমান্ড লাইন ব্যবহার করেন। নিচে কমান্ডটি দেওয়া হলো -

gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=http-server

৪. ইনস্ট্যান্স টেমপ্লেট কনফিগার করুন এবং পরিচালিত ইনস্ট্যান্স গ্রুপ তৈরি করুন

একটি ম্যানেজড ইনস্ট্যান্স গ্রুপ একই ধরনের ইনস্ট্যান্সের একটি গ্রুপ তৈরি করতে একটি ইনস্ট্যান্স টেমপ্লেট ব্যবহার করে। HTTP লোড ব্যালান্সারের ব্যাকএন্ড তৈরি করতে এগুলো ব্যবহার করুন।

ইনস্ট্যান্স টেমপ্লেটগুলি কনফিগার করুন

ইনস্ট্যান্স টেমপ্লেট হলো একটি এপিআই রিসোর্স যা আপনি ভিএম ইনস্ট্যান্স এবং ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করতে ব্যবহার করেন। ইনস্ট্যান্স টেমপ্লেট মেশিন টাইপ, বুট ডিস্ক ইমেজ, সাবনেট, লেবেল এবং অন্যান্য ইনস্ট্যান্স প্রোপার্টি নির্ধারণ করে। us-east1- এর জন্য একটি এবং europe-west1- এর জন্য একটি ইনস্ট্যান্স টেমপ্লেট তৈরি করুন।

  1. ক্লাউড কনসোলে, নেভিগেশন মেনুতে যান ( mainmenu.png ) > Compute Engine > Instance templates-এ যান এবং তারপর Create instance template-এ ক্লিক করুন।
  2. Name- এর জন্য us-east1-template টাইপ করুন।
  3. সিরিজের জন্য, N1 নির্বাচন করুন।
  4. নেটওয়ার্কিং, ডিস্ক, নিরাপত্তা, ব্যবস্থাপনা, একক মালিকানা-তে ক্লিক করুন।

b60e2a44c3e4d50e.png

  1. ম্যানেজমেন্ট বিভাগে যান -

ee57f20ce55298fd.png

  1. মেটাডেটা-এর অধীনে, আইটেম যোগ করুন-এ ক্লিক করুন এবং নিম্নলিখিতগুলি নির্দিষ্ট করুন:

চাবি

মূল্য

স্টার্টআপ-স্ক্রিপ্ট-ইউআরএল

gs://cloud-training/gcpnet/httplb/startup.sh

  1. নেটওয়ার্কিং-এ ক্লিক করুন।
  2. নিম্নলিখিত মানগুলি সেট করুন এবং অন্য সমস্ত মান তাদের ডিফল্ট অবস্থায় রাখুন -

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

নেটওয়ার্ক (নেটওয়ার্ক ইন্টারফেসের অধীনে)

ডিফল্ট

সাবনেট (নেটওয়ার্ক ইন্টারফেসের অধীনে)

ডিফল্ট (us-east1)

নেটওয়ার্ক ট্যাগ

http-সার্ভার

  1. তৈরি করুন- এ ক্লিক করুন।
  2. ইনস্ট্যান্স টেমপ্লেটটি তৈরি হওয়া পর্যন্ত অপেক্ষা করুন।

এখন us-east1-template কপি করে সাবনেট-b এর জন্য আরেকটি ইনস্ট্যান্স টেমপ্লেট তৈরি করুন:

  1. us-east1-template- এ ক্লিক করুন এবং তারপর উপরের Copy অপশনটিতে ক্লিক করুন।
  2. Name- এর জন্য europe-west1-template টাইপ করুন।
  3. নেটওয়ার্কিং, ডিস্ক, নিরাপত্তা, ব্যবস্থাপনা, একক মালিকানা-তে ক্লিক করুন।
  4. নেটওয়ার্কিং-এ ক্লিক করুন।
  5. নেটওয়ার্ক ইন্টারফেসের অধীনে, ডিফল্ট ইন্টারফেসটি সম্পাদনা করুন। সাবনেটের জন্য, ডিফল্ট (europe-west1) নির্বাচন করুন।
  6. তৈরি করুন- এ ক্লিক করুন।

পরিচালিত ইনস্ট্যান্স গ্রুপগুলি তৈরি করুন

us-east1 এবং europe-west1- এ একটি করে ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করুন।

  1. Compute Engine- এ থাকা অবস্থায়, বাম দিকের মেনুতে Instance groups- এ ক্লিক করুন।

72319de055de3942.png

  1. ইনস্ট্যান্স গ্রুপ তৈরি করুন -এ ক্লিক করুন। নতুন পরিচালিত ইনস্ট্যান্স গ্রুপ (স্টেটলেস) নির্বাচন করুন।
  2. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

নাম

us-east1-mig

অবস্থান

একাধিক অঞ্চল

অঞ্চল

us-east1

ইনস্ট্যান্স টেমপ্লেট

us-east1-টেমপ্লেট

অটোস্কেলিং > অটোস্কেলিং পলিসি > পেন্সিল আইকনে ক্লিক করুন > মেট্রিক টাইপ

সিপিইউ ব্যবহার

লক্ষ্য সিপিইউ ব্যবহার

৮০, সম্পন্ন ক্লিক করুন।

শীতল হওয়ার সময়কাল

৪৫

ন্যূনতম সংখ্যক দৃষ্টান্ত

সর্বাধিক সংখ্যক দৃষ্টান্ত

  1. তৈরি করুন- এ ক্লিক করুন।

এখন europe-west1-এ europe-west1 -mig- এর জন্য একটি দ্বিতীয় ইনস্ট্যান্স গ্রুপ তৈরি করতে একই পদ্ধতিটি পুনরাবৃত্তি করুন:

  1. ইনস্ট্যান্স গ্রুপ তৈরি করুন -এ ক্লিক করুন।
  2. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

নাম

ইউরোপ-পশ্চিম১-মিগ

অবস্থান

একাধিক অঞ্চল

অঞ্চল

ইউরোপ-পশ্চিম১

ইনস্ট্যান্স টেমপ্লেট

ইউরোপ-পশ্চিম১-টেমপ্লেট

অটোস্কেলিং > অটোস্কেলিং পলিসি > পেন্সিল আইকনে ক্লিক করুন > মেট্রিক টাইপ

সিপিইউ ব্যবহার

লক্ষ্য সিপিইউ ব্যবহার

৮০, সম্পন্ন ক্লিক করুন।

শীতল হওয়ার সময়কাল

৪৫

ন্যূনতম সংখ্যক দৃষ্টান্ত

সর্বাধিক সংখ্যক দৃষ্টান্ত

  1. তৈরি করুন- এ ক্লিক করুন।

৫. HTTP লোড ব্যালেন্সার কনফিগার করুন

নেটওয়ার্ক ডায়াগ্রামে দেখানো অনুযায়ী, দুটি ব্যাকএন্ডের ( us-east1-এ us-east1-mig এবং europe-west1-এ europe-west1-mig ) মধ্যে ট্র্যাফিক ভারসাম্য বজায় রাখতে HTTP লোড ব্যালেন্সারটি কনফিগার করুন:

2e1b99d22f4f32a.png

কনফিগারেশন শুরু করুন

  1. ক্লাউড কনসোলে, নেভিগেশন মেনুতে ক্লিক করুন ( mainmenu.png ) > নেটওয়ার্ক সার্ভিসেস > লোড ব্যালেন্সিং-এ ক্লিক করুন, এবং তারপর ক্রিয়েট লোড ব্যালেন্সার-এ ক্লিক করুন।
  2. HTTP(S) লোড ব্যালেন্সিং- এর অধীনে, স্টার্ট কনফিগারেশন- এ ক্লিক করুন।

8197d8f041e8eafd.png

  1. ইন্টারনেট থেকে আমার ভিএম-এ (From Internet to my VMs) , ক্লাসিক HTTP(S) লোড ব্যালেন্সার (Classic HTTP(S) Load Balancer) নির্বাচন করুন এবং চালিয়ে যান (Continue ) ক্লিক করুন।
  2. নামটি http-lb তে সেট করুন।

ব্যাকএন্ড কনফিগার করুন

ব্যাকএন্ড সার্ভিসগুলো আগত ট্র্যাফিককে এক বা একাধিক সংযুক্ত ব্যাকএন্ডে প্রেরণ করে। প্রতিটি ব্যাকএন্ড একটি ইনস্ট্যান্স গ্রুপ এবং অতিরিক্ত পরিষেবা প্রদানের সক্ষমতার মেটাডেটা দ্বারা গঠিত।

  1. ব্যাকএন্ড কনফিগারেশন- এ ক্লিক করুন।
  2. ব্যাকএন্ড সার্ভিস ও ব্যাকএন্ড বাকেট- এর জন্য, 'Create a backend service'-এ ক্লিক করুন।
  3. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট বিকল্প নির্বাচন করুন)

নাম

http-ব্যাকএন্ড

দৃষ্টান্ত গোষ্ঠী

us-east1-mig

বন্দর নম্বর

৮০

ভারসাম্য মোড

রেট

সর্বোচ্চ আরপিএস

৫০ (প্রতিটি ক্ষেত্রে)

ধারণক্ষমতা

১০০

  1. সম্পন্ন ক্লিক করুন।
  2. ব্যাকএন্ড যোগ করুন- এ ক্লিক করুন।
  3. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট বিকল্প নির্বাচন করুন)

দৃষ্টান্ত গোষ্ঠী

ইউরোপ-পশ্চিম১-মিগ

বন্দর নম্বর

৮০

ভারসাম্য মোড

ব্যবহার

সর্বোচ্চ ব্যাকএন্ড ব্যবহার

৮০

ধারণক্ষমতা

১০০

  1. সম্পন্ন ক্লিক করুন।
  2. স্বাস্থ্য পরীক্ষা করার জন্য, ‘একটি স্বাস্থ্য পরীক্ষা তৈরি করুন ’ নির্বাচন করুন।

199239806577ceac.png

  1. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট বিকল্প নির্বাচন করুন)

নাম

http-স্বাস্থ্য-পরীক্ষা

প্রোটোকল

টিসিপি

বন্দর

৮০

20f7af9fce140475.png

  1. সংরক্ষণ করুন- এ ক্লিক করুন।
  2. লগিং সক্ষম করুন বক্সটি চেক করুন।
  3. স্যাম্পল রেট ১-এ সেট করুন:

dab4b15c13917786.png

  1. ব্যাকএন্ড সার্ভিস তৈরি করতে Create-এ ক্লিক করুন।

2db64614f855f239.png

ফ্রন্টএন্ড কনফিগার করুন

হোস্ট এবং পাথ রুলগুলো নির্ধারণ করে আপনার ট্র্যাফিক কীভাবে পরিচালিত হবে। উদাহরণস্বরূপ, আপনি ভিডিও ট্র্যাফিক একটি ব্যাকএন্ডে এবং স্ট্যাটিক ট্র্যাফিক অন্য একটি ব্যাকএন্ডে পাঠাতে পারেন। তবে, এই ল্যাবে আপনি হোস্ট এবং পাথ রুলগুলো কনফিগার করছেন না।

  1. ফ্রন্টএন্ড কনফিগারেশন- এ ক্লিক করুন।
  2. নিম্নলিখিতগুলি নির্দিষ্ট করুন, এবং অন্যান্য সমস্ত মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

প্রোটোকল

HTTP

আইপি সংস্করণ

IPv4

আইপি ঠিকানা

ক্ষণস্থায়ী

বন্দর

৮০

  1. সম্পন্ন ক্লিক করুন।
  2. ফ্রন্টএন্ড আইপি এবং পোর্ট যোগ করুন -এ ক্লিক করুন।
  3. নিম্নলিখিতগুলি নির্দিষ্ট করুন, এবং অন্যান্য সমস্ত মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

প্রোটোকল

HTTP

আইপি সংস্করণ

IPv6

আইপি ঠিকানা

ক্ষণস্থায়ী

বন্দর

৮০

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

HTTP লোড ব্যালেন্সার পর্যালোচনা করুন এবং তৈরি করুন

  1. পর্যালোচনা করুন এবং চূড়ান্ত করুন -এ ক্লিক করুন।

2c88715aa5f22800.png

  1. ব্যাকএন্ড ও ফ্রন্টএন্ড সার্ভিসগুলো পর্যালোচনা করুন।

b2fffef90be309f0.png

  1. তৈরি করুন -এ ক্লিক করুন।
  2. লোড ব্যালেন্সার তৈরি হওয়া পর্যন্ত অপেক্ষা করুন।
  3. লোড ব্যালান্সারের নামে ( http-lb ) ক্লিক করুন।
  4. পরবর্তী কাজের জন্য লোড ব্যালান্সারের IPv4 এবং IPv6 অ্যাড্রেসগুলো নোট করে নিন। এগুলোকে যথাক্রমে [LB_IP_v4] এবং [LB_IP_v6] হিসাবে উল্লেখ করা হবে।

৬. HTTP লোড ব্যালেন্সার পরীক্ষা করুন

এখন যেহেতু আপনি আপনার ব্যাকএন্ডগুলোর জন্য HTTP লোড ব্যালেন্সার তৈরি করেছেন, যাচাই করুন যে ট্র্যাফিক ব্যাকএন্ড সার্ভিসে ফরোয়ার্ড করা হচ্ছে।

HTTP লোড ব্যালেন্সার অ্যাক্সেস করুন

HTTP লোড ব্যালান্সারে IPv4 অ্যাক্সেস পরীক্ষা করতে, আপনার ব্রাউজারে একটি নতুন ট্যাব খুলুন এবং http://[LB_IP_v4] -এ যান। [LB_IP_v4] -এর জায়গায় লোড ব্যালান্সারের IPv4 অ্যাড্রেসটি বসিয়ে নিতে ভুলবেন না।

আপনার যদি একটি স্থানীয় IPv6 ঠিকানা থাকে, তাহলে http://[LB_IP_v6] -এ গিয়ে HTTP লোড ব্যালেন্সারের IPv6 ঠিকানাটি ব্যবহার করে দেখুন। [LB_IP_v6] -এর জায়গায় লোড ব্যালেন্সারের IPv6 ঠিকানাটি বসিয়ে নিতে ভুলবেন না।

812d1fc75d9dfb3c.png

HTTP লোড ব্যালেন্সারের স্ট্রেস টেস্ট করুন

siege ব্যবহার করে HTTP লোড ব্যালান্সারের উপর লোড অনুকরণ করতে একটি নতুন VM তৈরি করুন। তারপর, লোড বেশি হলে উভয় ব্যাকএন্ড জুড়ে ট্র্যাফিক ভারসাম্যপূর্ণ হচ্ছে কিনা তা নির্ধারণ করুন।

  1. কনসোলে, নেভিগেশন মেনুতে যান ( mainmenu.png ) > কম্পিউট ইঞ্জিন > ভিএম ইনস্ট্যান্সসমূহ
  2. ইনস্ট্যান্স তৈরি করুন -এ ক্লিক করুন।
  3. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

নাম

অবরোধ-ভিএম

অঞ্চল

আমাদের-পশ্চিম১

অঞ্চল

ইউএস-ওয়েস্ট১-সি

সিরিজ

এন১

  1. তৈরি করুন- এ ক্লিক করুন।
  2. siege-vm ইনস্ট্যান্সটি তৈরি হওয়ার জন্য অপেক্ষা করুন।
  3. siege-vm এর জন্য, একটি টার্মিনাল চালু করতে SSH-এ ক্লিক করুন এবং সংযোগ স্থাপন করুন।
  4. siege ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
sudo apt-get -y install siege
  1. HTTP লোড ব্যালেন্সারের IPv4 অ্যাড্রেসটি একটি এনভায়রনমেন্ট ভেরিয়েবলে সংরক্ষণ করতে, নিম্নলিখিত কমান্ডটি চালান এবং [LB_IP_v4]-এর জায়গায় IPv4 অ্যাড্রেসটি বসান:
export LB_IP=[LB_IP_v4]
  1. লোড সিমুলেট করতে, নিম্নলিখিত কমান্ডটি চালান:
siege -c 250 http://$LB_IP

আউটপুটটি দেখতে এইরকম হবে ( কপি করবেন না; এটি একটি উদাহরণ আউটপুট ):

New configuration template added to /home/student/.siege
Run siege -C to view the current settings in that file
** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...
  1. ক্লাউড কনসোলে, নেভিগেশন মেনুতে ক্লিক করুন ( mainmenu.png ), নেটওয়ার্ক সার্ভিসেস > লোড ব্যালান্সিং-এ ক্লিক করুন।
  2. http-lb তে ক্লিক করুন।
  3. মনিটরিং ট্যাবে ক্লিক করুন। ২ থেকে ৩ মিনিটের জন্য উত্তর আমেরিকা এবং দুটি ব্যাকএন্ডের মধ্যেকার ট্র্যাফিক পর্যবেক্ষণ করুন।

প্রাথমিকভাবে, ট্র্যাফিক শুধু us-east1-mig- এ পাঠানো উচিত, কিন্তু RPS বাড়ার সাথে সাথে ট্র্যাফিক europe-west1-mig- এও পাঠানো হয়।

ead1e6d5c1f4cc4b.png

এর থেকে বোঝা যায় যে, ডিফল্টরূপে ট্র্যাফিক নিকটতম ব্যাকএন্ডে পাঠানো হয়, কিন্তু লোড খুব বেশি হলে ট্র্যাফিক বিভিন্ন ব্যাকএন্ডের মধ্যে ভাগ করে দেওয়া যেতে পারে।

e5c6a657706c832c.png

  1. siege-vm- এর SSH টার্মিনালে ফিরে যান।
  2. অবরোধ বন্ধ করতে CTRL+C চাপুন।

৭. ক্লাউড আর্মার রেট লিমিটিং পলিসি তৈরি করুন

এই অংশে, আপনি ক্লাউড আর্মার ব্যবহার করে একটি রেট লিমিটিং পলিসি সেট করার মাধ্যমে siege-vm- কে HTTP লোড ব্যালেন্সার অ্যাক্সেস করা থেকে বিরত রাখবেন।

  1. ক্লাউড শেলে (ক্লাউড শেল কীভাবে ব্যবহার করতে হয় তার নির্দেশাবলীর জন্য " সেটআপ এবং প্রয়োজনীয়তা "-এর অধীনে " ক্লাউড শেল শুরু করুন " অংশটি দেখুন), gcloud-এর মাধ্যমে নিরাপত্তা নীতি তৈরি করুন:
gcloud compute security-policies create rate-limit-siege \
    --description "policy for rate limiting"
  1. এরপর, একটি হার সীমিতকরণ নিয়ম যোগ করুন:
gcloud beta compute security-policies rules create 100 \
    --security-policy=rate-limit-siege     \
    --expression="true" \
    --action=rate-based-ban                   \
    --rate-limit-threshold-count=50           \
    --rate-limit-threshold-interval-sec=120   \
    --ban-duration-sec=300           \
    --conform-action=allow           \
    --exceed-action=deny-404         \
    --enforce-on-key=IP
  1. ব্যাকএন্ড সার্ভিস http-backend-এর সাথে নিরাপত্তা নীতিটি সংযুক্ত করুন:
gcloud compute backend-services update http-backend \
    --security-policy rate-limit-siege –-global
  1. কনসোলে, নেভিগেশন মেনু > নেটওয়ার্ক সিকিউরিটি > ক্লাউড আর্মার- এ যান।
  2. রেট-লিমিট-সিজ-এ ক্লিক করুন । আপনার পলিসিটি নিম্নলিখিতের অনুরূপ হওয়া উচিত:

8be87aa31c2ed74e.png

নিরাপত্তা নীতি যাচাই করুন

  1. siege-vm-এর SSH টার্মিনালে ফিরে যান।
  2. আপনি এখনও LB IP-তে সংযোগ করতে পারছেন কিনা তা যাচাই করতে সেটিতে একটি curl কমান্ড চালান, একটি 200 রেসপন্স পাওয়ার কথা।
curl http://$LB_IP
  1. siege-vm-এর SSH টার্মিনালে লোড সিমুলেট করার জন্য, নিম্নলিখিত কমান্ডটি চালান:
siege -c 250 http://$LB_IP

আউটপুটটি দেখতে এইরকম হবে (কপি করবেন না; এটি একটি উদাহরণ আউটপুট):

** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...
  1. এই ট্র্যাফিকটিও ব্লক করা হয়েছে কিনা তা নির্ধারণ করতে নিরাপত্তা নীতি লগগুলো খতিয়ে দেখুন।
  2. কনসোলে, নেভিগেশন মেনু > নেটওয়ার্ক সিকিউরিটি > ক্লাউড আর্মার- এ যান।
  3. ক্লিক রেট-লিমিট-সিজ .
  4. ক্লিক লগ

f8be7c01c3d7c8f5.png

  1. পলিসি লগ দেখতে ক্লিক করুন।
  2. লগিং পেজে, কোয়েরি প্রিভিউ-এর সমস্ত লেখা মুছে ফেলতে ভুলবেন না।
  3. রিসোর্স হিসেবে ক্লাউড এইচটিটিপি লোড ব্যালেন্সার > http-lb-forwarding-rule > http-lb নির্বাচন করুন, তারপর অ্যাড (Add ) ক্লিক করুন। বিকল্পভাবে, নিচে MQL (মনিটরিং কোয়েরি ল্যাঙ্গুয়েজ) কোয়েরিটি দেওয়া হলো, আপনি এটি কপি করে কোয়েরি এডিটরে পেস্ট করতে পারেন -
resource.type="http_load_balancer" resource.labels.forwarding_rule_name="http-lb-forwarding-rule" resource.labels.url_map_name="http-lb"
  1. এখন রান কোয়েরি-তে ক্লিক করুন।
  2. কোয়েরির ফলাফলে একটি লগ এন্ট্রি বিস্তারিত করুন।
  3. httpRequest প্রসারিত করুন। অনুরোধটি siege-vm IP ঠিকানা থেকে আসা উচিত। যদি তা না হয়, অন্য একটি লগ এন্ট্রি প্রসারিত করুন।
  4. jsonPayload প্রসারিত করুন।
  5. বলবৎ নিরাপত্তা নীতি প্রসারিত করুন।

151f575ba7b3bde9.png

লক্ষ্য করুন যে, কনফিগারডঅ্যাকশন (configuratedAction) RATE_BASED_BAN- এ সেট করা আছে এবং এর নাম rate-limit-siege

  1. অতিরিক্ত যাচাই হিসেবে, নেভিগেশন মেনুতে যান ( mainmenu.png ), নেটওয়ার্ক সার্ভিসেস > লোড ব্যালান্সিং -এ ক্লিক করুন। http-lb-তে ক্লিক করুন। মনিটরিং ট্যাবে ক্লিক করুন।

ab9a8a66573a5ebd.png

আপনি গ্রাফগুলোতে সিজ ট্র্যাফিক দেখতে পাবেন। আপনি আরও লক্ষ্য করবেন যে, রেট লিমিটেড ট্র্যাফিক ব্যাকএন্ডে পৌঁছায় না এবং ক্লাউড আর্মার পলিসি দ্বারা ব্লক হয়ে যায়।

অভিনন্দন! আপনি ক্লাউড আর্মার ব্যবহার করে রেট লিমিটিং-এর উপর এই ল্যাবটি সফলভাবে সম্পন্ন করেছেন।

©২০২০ গুগল এলএলসি। সর্বস্বত্ব সংরক্ষিত। গুগল এবং গুগল লোগো হলো গুগল এলএলসি-এর ট্রেডমার্ক। অন্য সকল কোম্পানি ও পণ্যের নাম তাদের সংশ্লিষ্ট কোম্পানিগুলোর ট্রেডমার্ক হতে পারে।

৮. ল্যাব পরিষ্কার করা

  1. নেটওয়ার্ক সিকিউরিটি >> ক্লাউড আর্মার >> %পলিসির নাম% -এ যান এবং ডিলিট নির্বাচন করুন -

eeafa7cafa11c4c7.png

  1. Networking >> Network services >> Load Balancing-এ যান। আপনার তৈরি করা লোড ব্যালেন্সারটি নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন।

3886458f25cfbd36.png

মুছে ফেলার জন্য অতিরিক্ত রিসোর্স হিসেবে ব্যাকএন্ড সার্ভিস এবং হেলথ চেক নির্বাচন করুন -

a0193e91b2f4cb6f.png

  1. নেভিগেশন মেনুতে যান ( mainmenu.png ) > কম্পিউট ইঞ্জিন > ইনস্ট্যান্স গ্রুপ। উভয় ম্যানেজড ইনস্ট্যান্স গ্রুপ নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন -

5027d56977997f70.png

টেক্সটবক্সে 'delete' টাইপ করে মুছে ফেলার বিষয়টি নিশ্চিত করুন।

ম্যানেজড ইনস্ট্যান্স গ্রুপগুলো ডিলিট হওয়া পর্যন্ত অপেক্ষা করুন। এর ফলে গ্রুপের অন্তর্ভুক্ত ইনস্ট্যান্সগুলোও ডিলিট হয়ে যাবে। ইনস্ট্যান্স গ্রুপ ডিলিট হয়ে যাওয়ার পরেই কেবল আপনি টেমপ্লেটগুলো ডিলিট করতে পারবেন।

  1. বাম পাশের প্যানেল থেকে ইনস্ট্যান্স টেমপ্লেট -এ যান। উভয় ইনস্ট্যান্স টেমপ্লেট নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন।

8d88abacd32c11ce.png

  1. বাম পাশের প্যানেল থেকে ভিএম ইনস্ট্যান্স -এ যান। siege-vm ইনস্ট্যান্সটির পাশে থাকা এলিপসিস (ellipsis) নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন।

2b58ab43695836e9.png

  1. নেভিগেশন মেনুতে যান ( mainmenu.png ) > VPC নেটওয়ার্ক > ফায়ারওয়াল । default-allow-health-check নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন -

561d5e771d36d85.png

৯. অভিনন্দন!

আপনি ক্লাউড আর্মার ব্যবহার করে সফলভাবে রেট লিমিটিং প্রয়োগ করেছেন। আপনি us-east1 এবং europe-west1-এ ব্যাকএন্ড সহ একটি HTTP লোড ব্যালেন্সার কনফিগার করেছেন। এরপর, আপনি একটি VM দিয়ে লোড ব্যালেন্সারটির স্ট্রেস টেস্ট করেছেন এবং ক্লাউড আর্মারের রেট লিমিটিং ব্যবহার করে আইপি অ্যাড্রেসটিকে ডিনাইলিস্ট করেছেন। ট্র্যাফিক কেন ব্লক করা হয়েছিল তা শনাক্ত করার জন্য আপনি সিকিউরিটি পলিসি লগগুলো খতিয়ে দেখতে সক্ষম হয়েছেন।

আমরা যা আলোচনা করেছি

  • ইনস্ট্যান্স টেমপ্লেট কীভাবে সেট আপ করবেন এবং ম্যানেজড ইনস্ট্যান্স গ্রুপ কীভাবে তৈরি করবেন
  • কীভাবে একটি HTTP লোড ব্যালেন্সার সেট আপ করবেন।
  • কীভাবে একটি ক্লাউড আর্মার রেট লিমিটিং পলিসি তৈরি করবেন।
  • রেট লিমিটিং পলিসিটি উদ্দেশ্য অনুযায়ী কাজ করছে কিনা, তা কীভাবে যাচাই করবেন।

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

  • সোর্স আইপি রেঞ্জের উপর ভিত্তি করে একটি রেট লিমিটিং পলিসি সেট আপ করার চেষ্টা করুন। নিচে নমুনা কমান্ড দেওয়া হলো -
gcloud alpha compute security-policies rules create 105 \
    --security-policy sec-policy     \
    --src-ip-ranges "1.2.3.0/24"     \
    --action throttle                \
    --rate-limit-threshold-count 100 \
    --rate-limit-threshold-interval-sec 60 \
    --conform-action allow           \
    --exceed-action deny-429         \
    --enforce-on-key IP
  • অঞ্চল কোডের উপর ভিত্তি করে একটি রেট লিমিটিং পলিসি সেট আপ করার চেষ্টা করুন। নিচে নমুনা কমান্ড দেওয়া হলো -
gcloud alpha compute security-policies rules create 101 \
    --security-policy sec-policy     \
    --expression "origin.region_code == 'US'" \
    --action rate-based-ban                 \
    --rate-limit-threshold-count 10         \
    --rate-limit-threshold-interval-sec 60  \
    --ban-duration-sec 300           \
    --ban-threshold-count 1000       \
    --ban-threshold-interval-sec 600 \
    --conform-action allow           \
    --exceed-action deny-403         \
    --enforce-on-key IP