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

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



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

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

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।
শুরু করার আগে
ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রজেক্ট আইডি সেট আপ করা আছে।
gcloud config list project
gcloud config set project [আপনার-প্রকল্পের-নাম]
প্রজেক্ট_আইডি=[আপনার-প্রজেক্টের-নাম]
ইকো $প্রজেক্ট_আইডি
এপিআই সক্ষম করুন
সমস্ত প্রয়োজনীয় পরিষেবা সক্রিয় করুন
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 তৈরি করার পর, এখন আপনাকে ফায়ারওয়াল নিয়ম তৈরি করতে হবে। এই ফায়ারওয়াল নিয়মটি সমস্ত IP-কে টেস্ট অ্যাপ্লিকেশনের ওয়েবসাইটের এক্সটার্নাল IP-তে http ট্র্যাফিকের জন্য পোর্ট ৮০-তে অ্যাক্সেস করার অনুমতি দিতে ব্যবহৃত হবে।
ক্লাউড শেল থেকে
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 লোড ব্যালেন্সার দ্বারা ব্যবহৃত ব্যাকএন্ড রিসোর্সের প্যাটার্ন অন্তর্ভুক্ত থাকবে। প্রথমে আমরা ইনস্ট্যান্স টেমপ্লেট তৈরি করব, যা প্রতিটি অঞ্চলের জন্য তৈরি হতে যাওয়া ভিএম-গুলোর কনফিগারেশন নির্ধারণ করবে। এরপর, প্রতিটি অঞ্চলের একটি ব্যাকএন্ডের জন্য, আমরা একটি ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করব যা একটি ইনস্ট্যান্স টেমপ্লেটকে রেফারেন্স করবে।
ম্যানেজড ইনস্ট্যান্স গ্রুপগুলো জোনাল বা রিজিওনাল হতে পারে। এই ল্যাব অনুশীলনের জন্য আমরা তিনটি রিজিওনাল ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করব: একটি us-east1-এ, একটি us-west1-এ এবং একটি us-central1-এ।
এই অংশে আপনি আগে থেকে তৈরি একটি স্টার্টআপ স্ক্রিপ্ট দেখতে পাবেন, যা ইনস্ট্যান্স তৈরির সময় ব্যবহৃত হবে। এই স্টার্টআপ স্ক্রিপ্টটি ওয়েব সার্ভারের সক্ষমতা ইনস্টল ও সক্রিয় করে, যা আমরা একটি ওয়েব অ্যাপ্লিকেশন সিমুলেট করতে ব্যবহার করব। আপনি নির্দ্বিধায় এই স্ক্রিপ্টটি অন্বেষণ করতে পারেন।
পূর্ব, পশ্চিম এবং কেন্দ্রীয় ইনস্ট্যান্স টেমপ্লেট তৈরি করুন
প্রথম ধাপ হলো 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
ওয়েব সার্ভারের কার্যকারিতা যাচাই করুন
প্রতিটি ইনস্ট্যান্স একটি অ্যাপাচি ওয়েব-সার্ভার চালানোর জন্য কনফিগার করা আছে, যার সাথে একটি সাধারণ পিএইচপি স্ক্রিপ্ট যুক্ত থাকে যা রেন্ডার করে:

আপনার ওয়েব সার্ভারগুলো সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে, Compute Engine -> VM instances-এ যান। আপনার নতুন ইনস্ট্যান্সগুলো (যেমন us-east1-mig-xxx) তাদের ইনস্ট্যান্স গ্রুপ সংজ্ঞা অনুযায়ী তৈরি হয়েছে কিনা তা নিশ্চিত করুন।
এখন, ওয়েব সার্ভারটি চালু আছে কিনা তা নিশ্চিত করতে আপনার ব্রাউজারে এটিতে একটি ওয়েব রিকোয়েস্ট পাঠান (এটি চালু হতে এক মিনিট সময় লাগতে পারে)। Compute Engine-এর অধীনে VM instances পৃষ্ঠায়, আপনার ইনস্ট্যান্স গ্রুপ দ্বারা তৈরি একটি ইনস্ট্যান্স নির্বাচন করুন এবং এর External (পাবলিক) 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
সংরক্ষিত আইপি অ্যাড্রেসটি অবশ্যই লিখে রাখুন।
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
ইউআরএল ম্যাপ তৈরি করুন
এই ল্যাবের উন্নত ট্র্যাফিক ম্যানেজমেন্ট ফিচারগুলো ইউআরএল ম্যাপে থাকবে। আমাদের একটি .yaml ফাইল তৈরি করতে হবে, যেখানে কনফিগারেশন থাকবে। .yaml ফাইলের মধ্যে আমরা /roundrobbin-এর উপর একটি প্রিফিক্স ম্যাচ তৈরি করেছি, ফলে শুধুমাত্র /roundrobbin-এর সাথে মিলে যাওয়া ট্র্যাফিকই এই কনফিগারেশন দ্বারা প্রভাবিত হবে। আমরা নির্দিষ্ট করে দিয়েছি যে ৫০% ট্র্যাফিক east-backend-service-এ এবং বাকি ৫০% west-backend-service-এ যাবে। এছাড়াও আমরা একটি রেসপন্স হেডার ভ্যালু:{test} যোগ করেছি, যা সমস্ত রেসপন্সে উপস্থিত থাকবে। সবশেষে, আমরা যোগ করেছি যে সমস্ত ট্র্যাফিক central-backend-service-এ মিরর করা হবে। শুধুমাত্র পরীক্ষার উদ্দেশ্যে ট্র্যাফিকটি ডুপ্লিকেট করে এখানে পাঠানো হয়।
উদাহরণটি আপনার কম্পিউটারে একটি .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
আপনার মেশিন থেকে ডকুমেন্টটি ইম্পোর্ট করে ইউআরএল ম্যাপ তৈরি করুন। মনে রাখবেন, আপনি .yaml ফাইলটি কোথায় সেভ করছেন তার উপর নির্ভর করে সোর্স পাথ ভিন্ন হবে।
ক্লাউড শেল থেকে
gcloud compute url-maps import web-map-http \ --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \ --global
HTTP ফ্রন্টএন্ড তৈরি করুন
লোড ব্যালেন্সার তৈরির চূড়ান্ত ধাপ হলো ফ্রন্টএন্ড তৈরি করা। এটি আপনার পূর্বে সংরক্ষিত আইপি অ্যাড্রেসটিকে আপনার তৈরি করা লোড ব্যালেন্সার ইউআরএল ম্যাপের সাথে সংযুক্ত করবে।
ক্লাউড শেল থেকে
gcloud compute target-http-proxies create http-lb-proxy-adv \
--url-map=web-map-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 করার জন্য আপনাকে প্রথমে একটি ফায়ারওয়াল নিয়ম তৈরি করতে হবে, যা ভিএম-টিতে 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 তৈরি করুন
এখন আপনি 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
এরপর আপনি আপনার তৈরি করা ভিএম-এ SSH করতে পারবেন। এটি তৈরি হয়ে গেলে, একটি টার্মিনাল চালু করতে এবং সংযোগ করতে SSH-এ ক্লিক করুন।
সংযুক্ত হয়ে গেলে, লোড তৈরি করতে নিম্নলিখিত কমান্ডটি চালান। এক্সটার্নাল http লোড ব্যালান্সারের জন্য পূর্বে সংরক্ষিত আইপি অ্যাড্রেসটি ব্যবহার করুন।
ক্লাউড শেল থেকে
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...
লোড বন্টন পরীক্ষা করুন
এখন যেহেতু সিজ (Siege) চলছে, তাই পূর্ব এবং পশ্চিম পরিচালিত ইনস্ট্যান্স গ্রুপগুলিতে ট্র্যাফিক সমানভাবে বণ্টিত হচ্ছে কিনা তা পরীক্ষা করার সময় এসেছে। এছাড়াও, আপনি পরীক্ষা করে দেখতে পারেন যে ট্র্যাফিক মিররিং কাজ করছে এবং ট্র্যাফিক কেন্দ্রীয় পরিচালিত ইনস্ট্যান্স গ্রুপে পাঠানো হচ্ছে কিনা।
ক্লাউড কনসোলে, নেভিগেশন মেনুতে, নেটওয়ার্ক সার্ভিসেস > লোড ব্যালেন্সিং-এ ক্লিক করুন। web-map-http লোড ব্যালেন্সারটি নির্বাচন করুন। মনিটরিং ট্যাবে যান এবং আপনি নিচের চার্টটি দেখতে পাবেন।

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

আপনি চার্টগুলিতে দেখতে পাবেন যা প্রমাণ করে যে ট্র্যাফিক এই পরিচালিত ইনস্ট্যান্স গ্রুপে প্রতিফলিত হয়েছে।
অবরোধ বন্ধ করুন
এখন যেহেতু আপনি প্রমাণ করেছেন যে উন্নত ট্র্যাফিক বিভাজন কাজ করছে, তাই অবরোধটি বন্ধ করার সময় এসেছে। এটি করার জন্য, siege-vm- এর SSH টার্মিনালে ফিরে যান এবং চলমান অবরোধটি বন্ধ করতে CTRL+C চাপুন।
পাঠানো হচ্ছে এমন প্রতিক্রিয়া হেডার যাচাই করুন
পরিষ্কার করার আগে আপনি দ্রুত যাচাই করে নিতে পারেন যে http লোড ব্যালেন্সার দ্বারা যথাযথ রেসপন্স হেডার পাঠানো হচ্ছে কিনা। আপনি এটিকে `contents` ভ্যালু সহ `test` হেডারটি পাঠানোর জন্য কনফিগার করেছিলেন। ক্লাউড শেল থেকে `curl` কমান্ডটি চালালে প্রত্যাশিত রেসপন্স পাওয়া যাবে।
ক্লাউড শেল থেকে
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 কোডল্যাবটি সম্পন্ন করেছেন!
আমরা যা আলোচনা করেছি
- কীভাবে একটি ম্যানেজড ইনস্ট্যান্স গ্রুপ এবং এর সাথে সম্পর্কিত ভিপিসি ও ফায়ারওয়াল নিয়মাবলী সেট আপ করবেন
- নতুন লোড ব্যালান্সারের উন্নত ট্র্যাফিক ম্যানেজমেন্ট ফিচারগুলো কীভাবে ব্যবহার করবেন
- উন্নত ট্র্যাফিক ব্যবস্থাপনা বৈশিষ্ট্যগুলো উদ্দেশ্য অনুযায়ী কাজ করছে কিনা, তা কীভাবে যাচাই করবেন।
পরবর্তী পদক্ষেপ
- ইউআরএল রিরাইটিং, CORS হেডার যোগ করা এবং আরও অনেক কিছুর মতো অন্যান্য উন্নত রাউটিং বৈশিষ্ট্যগুলি ব্যবহার করে দেখুন ( লিঙ্ক )