অ্যাডভান্সড ট্রাফিক ম্যানেজমেন্ট (এনভয়) কোডল্যাবের সাথে এক্সটার্নাল HTTPs LB

1. ভূমিকা

অ্যাডভান্সড ট্র্যাফিক ম্যানেজমেন্ট (দূত) কোডল্যাব সহ এক্সটার্নাল HTTPs LB-তে আপনাকে স্বাগতম!

অ্যাডভান্সড ট্র্যাফিক ম্যানেজমেন্ট সহ HTTP(S) এক্সটার্নাল লোড ব্যালেন্সারের সর্বশেষ সংস্করণটিতে আমাদের বিদ্যমান ক্লাসিক গ্লোবাল এক্সটার্নাল HTTP(S) লোড ব্যালেন্সারের সমস্ত বৈশিষ্ট্য রয়েছে, তবে উন্নত ট্র্যাফিক ম্যানেজমেন্ট ক্ষমতার একটি ক্রমবর্ধমান তালিকা রয়েছে। এই ক্ষমতাগুলির মধ্যে কিছু আমাদের লোড ব্যালেন্সারগুলিতে নতুন, এবং কিছু বিদ্যমান ক্ষমতাগুলিতে উন্নত বৈশিষ্ট্য সরবরাহ করে। এই ক্ষমতাগুলির একটি আংশিক তালিকার মধ্যে রয়েছে:

  • ওয়েটেড ট্র্যাফিক স্প্লিটিং
  • মিররিংয়ের অনুরোধ করুন
  • আউটলায়ার ডিটেকশন
  • পুনরায় চেষ্টা করার অনুরোধ করুন
  • ফল্ট ইনজেকশন
  • অতিরিক্ত ব্যাকএন্ড সেশন অ্যাফিনিটি বিকল্প
  • অতিরিক্ত হেডার রূপান্তর বিকল্প
  • ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS)
  • নতুন লোড ব্যালেন্সিং অ্যালগরিদম

তুমি কি শিখবে

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

তোমার যা লাগবে

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

কোডল্যাব টপোলজি এবং ব্যবহারের ক্ষেত্রে

dd8bd5e8e1341878.png সম্পর্কে

চিত্র ১ - HTTP লোড ব্যালেন্সার রাউটিং টপোলজি

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

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

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

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

অনুসরণ

a99b7ace416376c4.png সম্পর্কে

5e3ff691252acf41.png সম্পর্কে

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

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

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

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

55efc1aaa7a4d3ad.png সম্পর্কে

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

অনুসরণ

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

শুরু করার আগে

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

জিক্লাউড কনফিগারেশন তালিকা প্রকল্প

gcloud কনফিগারেশন সেট প্রকল্প [আপনার-প্রকল্প-নাম]

প্রকল্প_আইডি=[আপনার প্রকল্পের নাম]

$PROJECT_ID প্রতিধ্বনি করুন

API গুলি সক্ষম করুন

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

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

৩. ভিপিসি নেটওয়ার্ক তৈরি করুন

একটি VPC নেটওয়ার্ক তৈরি করুন

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

gcloud compute networks create httplbs --subnet-mode=auto

আউটপুট

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs].
NAME: httplbs
SUBNET_MODE: AUTO
BGP_ROUTING_MODE: REGIONAL
IPV4_RANGE:
GATEWAY_IPV4:

VPC ফায়ারওয়াল নিয়ম তৈরি করুন

VPC তৈরি করার পর, এখন আপনি একটি ফায়ারওয়াল নিয়ম তৈরি করবেন। ফায়ারওয়াল নিয়মটি সমস্ত আইপিকে http ট্র্যাফিকের জন্য পোর্ট 80-এ টেস্ট অ্যাপ্লিকেশনের ওয়েবসাইটের বহিরাগত আইপি অ্যাক্সেস করার অনুমতি দেওয়ার জন্য ব্যবহার করা হবে।

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

gcloud compute firewall-rules create httplb-allow-http-rule \
--allow tcp:80 \
--network httplbs \
--source-ranges 0.0.0.0/0 \
--priority 700

আউটপুট

Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule].
Creating firewall...done.
NAME: httplb-allow-http-rule
NETWORK: httplbs
DIRECTION: INGRESS
PRIORITY: 700
ALLOW: tcp:80
DENY:
DISABLED: False

৪. পরিচালিত ইনস্ট্যান্স গ্রুপ সেট আপ করুন

আপনাকে ম্যানেজড ইনস্ট্যান্স গ্রুপ সেট আপ করতে হবে যার মধ্যে HTTP লোড ব্যালেন্সার দ্বারা ব্যবহৃত ব্যাকএন্ড রিসোর্সের প্যাটার্ন অন্তর্ভুক্ত থাকবে। প্রথমে আমরা ইনস্ট্যান্স টেমপ্লেট তৈরি করব যা প্রতিটি অঞ্চলের জন্য তৈরি করা VM-এর কনফিগারেশন নির্ধারণ করবে। এরপর, প্রতিটি অঞ্চলে একটি ব্যাকএন্ডের জন্য, আমরা একটি ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করব যা একটি ইনস্ট্যান্স টেমপ্লেট উল্লেখ করবে।

পরিচালিত ইনস্ট্যান্স গ্রুপগুলি আঞ্চলিক বা আঞ্চলিক হতে পারে। এই ল্যাব অনুশীলনের জন্য আমরা তিনটি আঞ্চলিক পরিচালিত ইনস্ট্যান্স গ্রুপ তৈরি করব, একটি মার্কিন-পূর্বে, একটি মার্কিন-পশ্চিমে এবং একটি মার্কিন-মধ্যমে।

এই বিভাগে, আপনি একটি পূর্বে তৈরি স্টার্টআপ স্ক্রিপ্ট দেখতে পাবেন যা ইনস্ট্যান্স তৈরির সময় উল্লেখ করা হবে। এই স্টার্টআপ স্ক্রিপ্টটি ওয়েব সার্ভারের ক্ষমতা ইনস্টল এবং সক্ষম করে যা আমরা একটি ওয়েব অ্যাপ্লিকেশন অনুকরণ করতে ব্যবহার করব। এই স্ক্রিপ্টটি অন্বেষণ করতে দ্বিধা করবেন না।

পূর্ব, পশ্চিম এবং কেন্দ্রীয় ইনস্ট্যান্স টেমপ্লেট তৈরি করুন

প্রথম ধাপ হল us-east-1 ইনস্ট্যান্স টেমপ্লেট তৈরি করা।

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

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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'

আউটপুট

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-east1-template].
NAME: us-east1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:02:37.511-08:00

পরবর্তী ধাপ হল us-west-1 ইনস্ট্যান্স টেমপ্লেট তৈরি করা।

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

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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'

আউটপুট

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-west1-template].
NAME: us-west1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:08.577-08:00

পরবর্তী ধাপ হল us-central-1 ইনস্ট্যান্স টেমপ্লেট তৈরি করা।

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

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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'

আউটপুট

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-central1-template].
NAME: us-central1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:44.179-08:00

আপনি এখন নিম্নলিখিত gcloud কমান্ড ব্যবহার করে আমাদের ইনস্ট্যান্স টেমপ্লেটগুলি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করতে পারেন:

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

gcloud compute instance-templates list

আউটপুট

NAME                  MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
us-central1-template   n1-standard-1         2021-11-09T09:25:37.263-08:00
us-east1-template      n1-standard-1         2021-11-09T09:24:35.275-08:00
us-west1-template      n1-standard-1         2021-11-09T09:25:08.016-08:00

পূর্ব, পশ্চিম এবং কেন্দ্রীয় পরিচালিত ইনস্ট্যান্স গ্রুপ তৈরি করুন

আমাদের এখন আগে তৈরি করা ইনস্ট্যান্স টেমপ্লেটগুলি থেকে একটি পরিচালিত ইনস্ট্যান্স গ্রুপ তৈরি করতে হবে।

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

gcloud compute instance-groups managed create us-east1-mig \
--base-instance-name=us-east1-mig \
--size=1 \
--template=us-east1-template \
--zone=us-east1-b 

আউটপুট

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-mig].
NAME: us-east1-mig
LOCATION: us-east1-b
SCOPE: zone
BASE_INSTANCE_NAME: us-east1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-east1-template
AUTOSCALED: no

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

gcloud compute instance-groups managed create us-west1-mig \
--base-instance-name=us-west1-mig \
--size=1 \
--template=us-west1-template \
--zone=us-west1-a  

আউটপুট

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroupManagers/us-west1-mig].
NAME: us-west1-mig
LOCATION: us-west1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-west1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-west1-template
AUTOSCALED: no

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

gcloud compute instance-groups managed create us-central1-mig \
--base-instance-name=us-central1-mig \
--size=1 \
--template=us-central1-template \
--zone=us-central1-a 

আউটপুট

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-central1-a/instanceGroupManagers/us-central1-mig].
NAME: us-central1-mig
LOCATION: us-central1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-central1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-central1-template
AUTOSCALED: no

আমরা নিম্নলিখিত gcloud কমান্ড ব্যবহার করে আমাদের ইনস্ট্যান্স গ্রুপগুলি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করতে পারি:

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

gcloud compute instance-groups list

আউটপুট

NAME                  LOCATION      SCOPE   NETWORK         MANAGED INSTANCES
us-central1-mig       us-central1   zone    httplbs          Yes      1
us-west1-mig          us-west1      zone    httplbs          Yes      1
us-east1-mig          us-east1      zone    httplbs          Yes      1

ওয়েব সার্ভারের কার্যকারিতা যাচাই করুন

প্রতিটি ইনস্ট্যান্স একটি সাধারণ PHP স্ক্রিপ্ট সহ একটি Apache ওয়েব-সার্ভার চালানোর জন্য কনফিগার করা হয়েছে যা রেন্ডার করে:

c87ca81d3125ac61.png সম্পর্কে

আপনার ওয়েব সার্ভারগুলি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে, Compute Engine -> VM instances এ যান। নিশ্চিত করুন যে আপনার নতুন instances (যেমন us-east1-mig-xxx) তাদের instance group সংজ্ঞা অনুসারে তৈরি করা হয়েছে।

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

অথবা, আপনার ব্রাউজারে, http://<IP_Address> এ নেভিগেট করুন।

৫. লোড ব্যালেন্সার সেট আপ করুন

স্বাস্থ্য পরীক্ষা তৈরি করুন

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

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

gcloud compute health-checks create http http-basic-check \
    --port 80

বাহ্যিক আইপি ঠিকানা সংরক্ষণ করুন

এই ধাপের জন্য আপনাকে বিশ্বব্যাপী উপলব্ধ একটি স্ট্যাটিক আইপি ঠিকানা সংরক্ষণ করতে হবে যা পরে লোড ব্যালেন্সারের সাথে সংযুক্ত করা হবে।

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

gcloud compute addresses create lb-ipv4-2 \
    --ip-version=IPV4 \
    --global

সংরক্ষিত IP ঠিকানাটি অবশ্যই মনে রাখবেন।

gcloud compute addresses describe lb-ipv4-2 \
    --format="get(address)" \
    --global

ব্যাকএন্ড পরিষেবা তৈরি করুন

এখন আমাদের আগে তৈরি প্রতিটি পরিচালিত ইনস্ট্যান্স গ্রুপের জন্য একটি ব্যাকএন্ড পরিষেবা তৈরি করতে হবে। পূর্ব, পশ্চিম এবং মধ্যের জন্য একটি।

পূর্ব পরিচালিত ইনস্ট্যান্স গ্রুপের জন্য একটি ব্যাকএন্ড পরিষেবা তৈরি করা।

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

gcloud compute backend-services create east-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

পশ্চিম পরিচালিত ইনস্ট্যান্স গ্রুপের জন্য একটি ব্যাকএন্ড পরিষেবা তৈরি করা।

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

gcloud compute backend-services create west-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

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

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

gcloud compute backend-services create central-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

ব্যাকএন্ড পরিষেবাগুলিতে MIG যোগ করুন

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

ব্যাকএন্ড পরিষেবাতে পূর্ব এমআইজি যোগ করুন।

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

gcloud compute backend-services add-backend east-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-east1-mig \
    --instance-group-zone=us-east1-b \
    --global

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

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

gcloud compute backend-services add-backend west-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-west1-mig \
    --instance-group-zone=us-west1-a \
    --global

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

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

gcloud compute backend-services add-backend central-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-central1-mig \
    --instance-group-zone=us-central1-a \
    --global

URL ম্যাপ তৈরি করুন

এই ল্যাবের জন্য উন্নত ট্র্যাফিক ব্যবস্থাপনা বৈশিষ্ট্যগুলি URL ম্যাপে থাকবে। আমাদের একটি .yaml ফাইল তৈরি করতে হবে যাতে কনফিগারেশন থাকবে। .yaml ফাইলের মধ্যে আমরা /roundrobbin-এ একটি প্রিফিক্স ম্যাচ তৈরি করেছি, তাই শুধুমাত্র /roundrobbin ট্র্যাফিক ম্যাচিং এই কনফিগারেশনগুলির দ্বারা প্রভাবিত হবে। আমরা নির্দিষ্ট করেছি যে ৫০% ট্র্যাফিক পূর্ব-ব্যাকএন্ড-সার্ভিসে এবং ৫০% ট্র্যাফিক পশ্চিম-ব্যাকএন্ড-সার্ভিসে যেতে হবে। আমরা অতিরিক্তভাবে একটি প্রতিক্রিয়া শিরোনাম মান:{test} যোগ করেছি যা সমস্ত প্রতিক্রিয়াতে উপস্থিত থাকবে। অবশেষে, আমরা যোগ করেছি যে সমস্ত ট্র্যাফিক কেন্দ্রীয়-ব্যাকএন্ড-সার্ভিসে মিরর করা উচিত। ট্র্যাফিকটি ডুপ্লিকেট করা হয়েছে এবং শুধুমাত্র পরীক্ষার উদ্দেশ্যে এখানে পাঠানো হয়েছে।

আপনার মেশিনে .yaml ফাইল হিসেবে উদাহরণটি সংরক্ষণ করুন।

defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
kind: compute #urlMap
name: web-map-http
hostRules:
- hosts:
  - '*'
  pathMatcher: matcher1
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
  name: matcher1
  routeRules:
  - matchRules:
    - prefixMatch: /roundrobbin
    priority: 2
    headerAction:
        responseHeadersToAdd:
          - headerName: test
            headerValue: value
            replace: True
    routeAction:
        weightedBackendServices:
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
          weight: 50
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/west-backend-service
          weight: 50
        retryPolicy:
            retryConditions: ['502', '504']
            numRetries: 3
            perTryTimeout:
                seconds: 1
                nanos: 50
        requestMirrorPolicy:
          backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/central-backend-service

আপনার মেশিন থেকে ডকুমেন্টটি আমদানি করে URL ম্যাপ তৈরি করুন। মনে রাখবেন, আপনি .yaml ফাইলটি কোথায় সংরক্ষণ করবেন তার উপর নির্ভর করে উৎস পথটি ভিন্ন হবে।

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

gcloud compute url-maps import web-map-http \
   --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \
   --global

HTTP ফ্রন্টএন্ড তৈরি করুন

লোড ব্যালেন্সার তৈরির শেষ ধাপ হল ফ্রন্টএন্ড তৈরি করা। এটি আপনার তৈরি করা লোড ব্যালেন্সার URL ম্যাপের সাথে আপনার আগে সংরক্ষিত IP ঠিকানাটি ম্যাপ করবে।

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

gcloud compute target-http-proxies create http-lb-proxy-adv \
    --url-map=web-map-http

এরপর আপনাকে একটি গ্লোবাল ফরওয়ার্ডিং নিয়ম তৈরি করতে হবে যা পূর্বে সংরক্ষিত IP ঠিকানাটি HTTP প্রক্সিতে ম্যাপ করবে।

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

gcloud compute forwarding-rules create http-content-rule \
    --load-balancing-scheme EXTERNAL_MANAGED \
    --address=lb-ipv4-2 \
    --global \
    --target-http-proxy=http-lb-proxy-adv \
    --ports=80

৬. উন্নত ট্র্যাফিক বৈশিষ্ট্যগুলি কাজ করছে কিনা তা যাচাই করুন।

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

SSH ফায়ারওয়াল রুলকে অনুমতি দিন তৈরি করুন

আপনার কাছ থেকে ট্র্যাফিক তৈরি করা VM-এ SSH করার জন্য প্রথমে একটি ফায়ারওয়াল নিয়ম তৈরি করতে হবে যা VM-এ SSH ট্র্যাফিকের অনুমতি দেবে।

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

gcloud compute firewall-rules create fw-allow-ssh \
    --network=httplbs \
    --action=allow \
    --direction=ingress \
    --target-tags=allow-ssh \
    --rules=tcp:22

আউটপুট

NAME          NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
fw-allow-ssh  httplbs  INGRESS    1000      tcp:22        False

সিজ-ভিএম তৈরি করুন

এখন আপনি siege-vm তৈরি করবেন যা আপনি লোড তৈরি করতে ব্যবহার করবেন

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

gcloud compute instances create siege-vm \
    --network=httplbs \
    --zone=us-east4-c \
    --machine-type=e2-medium \
    --tags=allow-ssh,http-server \
    --metadata=startup-script='sudo apt-get -y install siege'

আউটপুট

NAME     ZONE        MACHINE_TYPE INTERNAL_IP  EXTERNAL_IP    STATUS
siege-vm us-east4-c  e2-medium    10.150.0.3   34.85.218.119  RUNNING

এরপর আপনি আপনার তৈরি VM-এ SSH করতে পারবেন। এটি তৈরি হয়ে গেলে SSH-এ ক্লিক করে একটি টার্মিনাল চালু করুন এবং সংযোগ করুন।

একবার সংযুক্ত হয়ে গেলে, লোড তৈরি করতে নিম্নলিখিত কমান্ডটি চালান। বহিরাগত http লোড ব্যালেন্সারের জন্য আপনি আগে যে IP ঠিকানাটি সংরক্ষণ করেছিলেন তা ব্যবহার করুন।

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

siege -c 250 http://[$lb-ipv4-2]/roundrobbin

আউটপুট

New configuration template added to /home/cloudcurriculumdeveloper/.siege
Run siege -C to view the current settings in that file
[alert] Zip encoding disabled; siege requires zlib support to enable it: No such file or directory
** SIEGE 4.0.2
** Preparing 250 concurrent users for battle.
The server is now under siege...

লোড বিতরণ পরীক্ষা করুন

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

ক্লাউড কনসোলে, নেভিগেশন মেনুতে, নেটওয়ার্ক সার্ভিসেস > লোড ব্যালেন্সিং এ ক্লিক করুন। লোড ব্যালেন্সার ওয়েব-ম্যাপ-http নির্বাচন করুন। মনিটরিং ট্যাবে নেভিগেট করুন এবং আপনি নীচের চার্টটি দেখতে সক্ষম হবেন।

f4d6803db44be253.png সম্পর্কে

আপনি এই MIG-তে রিয়েল টাইমে ট্র্যাফিক বিভাজন দেখতে সক্ষম হবেন। আপনি 50/50 রাউন্ড রবিন স্প্লিট কনফিগার করার পর থেকে ট্র্যাফিক সমানভাবে বিভক্ত।

আপনার তৈরি করা ট্র্যাফিক মিররিং নীতিটি কাজ করছে কিনা তা পরীক্ষা করার জন্য আপনাকে central-backend-service পরিচালিত ইনস্ট্যান্স গ্রুপের ব্যবহার পরীক্ষা করতে হবে। এটি করার জন্য, compute, compute engine, instance groups-এ নেভিগেট করুন এবং us-central1-mig নির্বাচন করুন। এরপর, monitoring ট্যাবে নেভিগেট করুন।

cf25e44d511529e7.png সম্পর্কে

আপনি চার্টগুলি দেখতে পাবেন যা দেখায় যে ট্র্যাফিক এই পরিচালিত ইনস্ট্যান্স গ্রুপে প্রতিফলিত হয়েছে।

অবরোধ বন্ধ করুন

এখন যেহেতু আপনি দেখিয়েছেন যে উন্নত ট্র্যাফিক বিভাজন কাজ করছে, এখন সময় এসেছে সিজ বন্ধ করার। এটি করতে siege-vm এর SSH টার্মিনালে ফিরে যান এবং সিজ বন্ধ করতে CTRL+C টিপুন।

পাঠানো প্রতিক্রিয়া শিরোনাম যাচাই করুন

পরিষ্কার করার আগে আপনি দ্রুত যাচাই করতে পারবেন যে http লোড ব্যালেন্সার দ্বারা উপযুক্ত প্রতিক্রিয়া হেডার পাঠানো হচ্ছে। আপনি এটি কনটেন্ট মান সহ হেডার পরীক্ষা পাঠানোর জন্য কনফিগার করেছিলেন। ক্লাউড শেল থেকে কার্ল কমান্ড চালানো প্রত্যাশিত প্রতিক্রিয়া দেবে।

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

curl -svo /dev/null http://lb-ipv4-2/roundrobbin

আউটপুট

*   Trying lb-ipv4-2..
* TCP_NODELAY set
* Connected to  lb-ipv4-2 ( lb-ipv4-2) port 80 (#0)
> GET /roundrobbin HTTP/1.1
> Host:  lb-ipv4-2
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< date: Wed, 10 Nov 2021 17:05:27 GMT
< server: envoy
< Content-Length: 273
< content-type: text/html; charset=iso-8859-1
< via: 1.1 google
< test: value
<
{ [273 bytes data]
* Connection #0 to host 34.149.2.26 left intact
* Closing connection 0

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

এখন যেহেতু আমরা ল্যাব পরিবেশের কাজ শেষ করেছি, এখন এটি ভেঙে ফেলার সময়। পরীক্ষার পরিবেশ মুছে ফেলার জন্য নিম্নলিখিত কমান্ডগুলি চালান।

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

gcloud compute instances delete siege-vm --zone=us-east4-c

gcloud compute forwarding-rules delete http-content-rule --global
gcloud compute target-http-proxies delete http-lb-proxy-adv
gcloud compute url-maps delete web-map-http
gcloud compute backend-services delete east-backend-service --global
gcloud compute backend-services delete west-backend-service --global
gcloud compute backend-services delete central-backend-service --global

gcloud compute addresses delete lb-ipv4-2 --global
gcloud compute health-checks delete http-basic-check 

gcloud compute instance-groups managed delete us-east1-mig --zone us-east1-b
gcloud compute instance-groups managed delete us-west1-mig --zone us-west1-a
gcloud compute instance-groups managed delete us-central1-mig --zone us-central1-a

gcloud compute instance-templates delete "us-east1-template" 
gcloud compute instance-templates delete "us-west1-template" 
gcloud compute instance-templates delete "us-central1-template" 

gcloud compute firewall-rules delete httplb-allow-http-rule
gcloud compute firewall-rules delete fw-allow-ssh

gcloud compute networks delete httplbs 

৮. অভিনন্দন!

আপনি অ্যাডভান্সড ট্র্যাফিক ম্যানেজমেন্ট (এনভয়) কোডল্যাবের সাথে এক্সটার্নাল HTTPs LB সম্পন্ন করেছেন!

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

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

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

  • URL পুনর্লিখন, CORS হেডার যোগ করা এবং আরও অনেক কিছুর মতো উন্নত রাউটিং বৈশিষ্ট্যগুলি চেষ্টা করে দেখুন ( লিংক )