ব্যক্তিগত পরিষেবা সংযোগের জন্য যৌগিক স্বাস্থ্য

১. ভূমিকা

এই কোডল্যাবে স্বয়ংক্রিয় আঞ্চলিক ফেইলওভারের জন্য প্রাইভেট সার্ভিস কানেক্ট (PSC)-এর কম্পোজিট হেলথ নিয়ে আলোচনা করা হয়েছে। PSC-এর কম্পোজিট হেলথ হলো একটি নেটওয়ার্কিং ফিচার যা উন্নত সার্ভিস রেজিলিয়েন্সি এবং অ্যাভেইলেবিলিটি প্রদান করে।

কম্পোজিট হেলথ সার্ভিস প্রডিউসারদের নিজস্ব হেলথ পলিসি (কোন অবস্থা একটি সার্ভিসকে স্বাস্থ্যকর বা অস্বাস্থ্যকর হিসেবে সংজ্ঞায়িত করে) নির্ধারণ করতে এবং PSC ব্যাকএন্ড ব্যবহার করে সার্ভিসে সংযোগকারী কনজিউমারদের কাছে স্বয়ংক্রিয়ভাবে এই সংকেতগুলো পৌঁছে দিতে সাহায্য করে। এই ফিচারটি বিশেষভাবে স্বয়ংক্রিয় ক্রস-রিজিওন ফেইলওভার সমর্থন করার জন্য ডিজাইন করা হয়েছে। যদি কোনো আঞ্চলিক প্রডিউসার সার্ভিস অস্বাস্থ্যকর হয়ে পড়ে, তাহলে কনজিউমার লোড ব্যালেন্সার স্বয়ংক্রিয়ভাবে সেই অঞ্চলে ট্র্যাফিক রাউটিং বন্ধ করে দেয় এবং অন্য অঞ্চলের একটি স্বাস্থ্যকর সার্ভিসে ট্র্যাফিক পাঠিয়ে দেয়।

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

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

  • সমন্বিত স্বাস্থ্যের উপাদানসমূহ এবং একটি উৎপাদক পরিষেবার স্বাস্থ্য অবস্থা নির্ধারণে সেগুলো কীভাবে একত্রে কাজ করে
  • gcloud কমান্ড ব্যবহার করে একটি প্রডিউসার সার্ভিসের জন্য PSC-তে কম্পোজিট হেলথ বাস্তবায়ন করা
  • প্রডিউসার কম্পোজিট হেলথ পলিসি থেকে হেলথ সিগন্যাল ব্যবহার করার জন্য একটি ক্রস-রিজিওন পিএসসি কনজিউমার অ্যাক্সেস লোড ব্যালান্সারের কনফিগারেশন।
  • পরিষেবা ব্যর্থতার পরিস্থিতি পরীক্ষা করা এবং স্বয়ংক্রিয় আন্তঃ-আঞ্চলিক ফেইলওভার যাচাই করা

আপনার যা প্রয়োজন

  • একটি গুগল ক্লাউড প্রকল্প
  • পূর্বনির্ধারিত roles/compute.admin রোল অথবা roles/admin বা legacy roles/owner মতো একটি বিস্তৃত মৌলিক রোলে IAM অনুমতি প্রদান করা হয়।
  • গুগল ক্লাউড নেটওয়ার্কিং ধারণা এবং গুগল ক্লাউড সিএলআই ব্যবহারে পরিচিতি

২. ধারণা

পিএসসি নেটওয়ার্কিং

এই কোডল্যাব নেটওয়ার্ক টপোলজিতে দুটি সক্রিয় গুগল ক্লাউড রিজিয়নে একটি কনজিউমার এবং একটি প্রোডিউসার ভিপিসি নেটওয়ার্ক অন্তর্ভুক্ত রয়েছে।

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

চিত্র ১

চিত্র ১. কোডল্যাব নেটওয়ার্ক টপোলজি

প্রযোজক প্রান্তে আঞ্চলিক সাবনেট রয়েছে, যেগুলিতে আঞ্চলিক অভ্যন্তরীণ পাসথ্রু নেটওয়ার্ক লোড ব্যালেন্সার থাকে, যা একটি আঞ্চলিক PSC সার্ভিস অ্যাটাচমেন্ট রিসোর্সের মাধ্যমে একটি পরিষেবা প্রদান করে। ব্যাকএন্ড পরিষেবাগুলিতে আঞ্চলিক ম্যানেজড ইনস্ট্যান্স গ্রুপ (MIG) থাকে এবং http অনুরোধ পরীক্ষা করে ও 200 (OK) প্রতিক্রিয়া যাচাই করে সেগুলির স্বাস্থ্য পরীক্ষা করা হয়।

কোন কোন লোড ব্যালেন্সার PSC-এর জন্য কম্পোজিট হেলথ সমর্থন করে, তা দেখতে প্রোডিউসার কনফিগারেশনের জন্য প্রাইভেট সার্ভিস কানেক্ট সামঞ্জস্যতার সর্বশেষ ডকুমেন্টেশন দেখুন।

পরিষেবা স্বাস্থ্য

লোড ব্যালেন্সার তৈরির সময় কনফিগার করা প্রডিউসার ব্যাকএন্ড সার্ভিস হেলথ চেক, কম্পোজিট হেলথ ফর পিএসসি (Composite Health for PSC) ফিচারের জন্য মূল সংকেত হিসেবে কাজ করে। হেলথ সোর্স রিসোর্সটি একটি একক ব্যাকএন্ড সার্ভিসের স্বাস্থ্য অবস্থা নির্ধারণ করার জন্য, হেলথ অ্যাগ্রিগেশন পলিসি রিসোর্সে সংজ্ঞায়িত অতিরিক্ত সীমাবদ্ধতার সাথে সেই সংকেতটি ব্যবহার করে।

ডিফল্টরূপে, একটি পরিষেবা স্বাস্থ্যকর বলে বিবেচিত হয় যখন এই উভয় শর্তই পূরণ হয়:

  • ন্যূনতম x শতাংশ ব্যাকএন্ড সুস্থ আছে (ডিফল্ট 60 )
  • সর্বনিম্ন y সংখ্যক ব্যাকএন্ড সুস্থ আছে (ডিফল্ট 1 )

কম্পোজিট হেলথ চেকটি সম্পূর্ণ রিজিওনাল প্রোডিউসার সার্ভিসের সার্বিক স্বাস্থ্য নির্ধারণ করার জন্য সমস্ত ব্যাকএন্ড সার্ভিসের সকল হেলথ সোর্সকে রেফারেন্স হিসেবে ব্যবহার করে। এই ল্যাবের ক্ষেত্রে, প্রতিটি রিজিওনাল প্রোডিউসার সার্ভিসের কেবল একটিই ব্যাকএন্ড সার্ভিস হেলথ সোর্স রয়েছে, যা একত্রিত হয়ে একটি কম্পোজিট হেলথ চেক গঠন করে।

চিত্র ২

চিত্র ২. পিএসসি রিসোর্স মডেলের জন্য সমন্বিত স্বাস্থ্য

কম্পোজিট হেলথ চেক রিসোর্স ডেফিনিশনটি প্রডিউসার সার্ভিস লোড ব্যালান্সারের ফরওয়ার্ডিং রুলকেও নির্দেশ করে। কনজিউমার অ্যাক্সেস লোড ব্যালান্সার ব্যাকএন্ড PSC NEG যৌক্তিকভাবে প্রডিউসার PSC সার্ভিস অ্যাটাচমেন্ট এবং প্রডিউসার লোড ব্যালান্সার ফরওয়ার্ডিং রুলের সাথে সংযুক্ত থাকে। এটি কনজিউমার অ্যাক্সেস লোড ব্যালান্সারকে প্রডিউসার সার্ভিসের কম্পোজিট হেলথ চেক স্টেটের সাথে যুক্ত করে। এরপর আঞ্চলিক প্রডিউসার সার্ভিসের সামগ্রিক সার্ভিস হেলথ কনজিউমার লোড ব্যালান্সারে পাঠানো হয়, যাতে উপযুক্ত ব্যাকএন্ড নির্বাচন করা যায়।

৩. প্রজেক্ট সেটআপ

আপনার প্রজেক্ট অ্যাক্সেস করুন

এই কোডল্যাবটি একটিমাত্র গুগল ক্লাউড প্রজেক্ট ব্যবহারের জন্য লেখা হয়েছে। কনফিগারেশনের ধাপগুলোতে gcloud এবং লিনাক্স শেল কমান্ড ব্যবহার করা হয়েছে।

দ্রষ্টব্য: প্রোডাকশন ডেপ্লয়মেন্টে, PSC কনজিউমার রিসোর্স এবং প্রডিউসার সার্ভিসগুলো সাধারণত ভিন্ন ভিন্ন প্রজেক্টে থাকে।

আপনার গুগল ক্লাউড প্রজেক্টের কমান্ড লাইন অ্যাক্সেস করে শুরু করুন, নিম্নলিখিতটি ব্যবহার করে:

আপনার প্রজেক্ট আইডি সেট করুন

gcloud config set project YOUR_PROJECT_ID_HERE

শেল এনভায়রনমেন্ট ভেরিয়েবল সেট করুন

export PROJECT_ID=$(gcloud config list --format="value(core.project)")
export REGION_1="us-west1"
export ZONE_1="us-west1-c"
export REGION_2="us-east1"
export ZONE_2="us-east1-c"
echo ${PROJECT_ID}
echo ${REGION_1}
echo ${ZONE_1}
echo ${REGION_2}
echo ${ZONE_2}

এপিআই পরিষেবাগুলি সক্ষম করুন

gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com

৪. প্রযোজক পরিষেবা

শেয়ার করা রিসোর্স তৈরি করুন

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

gcloud compute networks create vnet-producer --subnet-mode=custom

সাবনেট তৈরি করুন

# create subnet for service workload in region 1
gcloud compute networks subnets create subnet-foo \
  --network=vnet-producer \
  --region=${REGION_1} \
  --range=172.16.1.0/24 \
  --enable-private-ip-google-access

# create subnet for psc nat in region 1
gcloud compute networks subnets create subnet-foo-pscnat \
  --network=vnet-producer \
  --region=${REGION_1} \
  --range=192.168.1.0/29 \
  --purpose=PRIVATE_SERVICE_CONNECT
# create subnet for service workload in region 2
gcloud compute networks subnets create subnet-bar \
  --network=vnet-producer \
  --region=${REGION_2} \
  --range=172.16.2.0/24 \
  --enable-private-ip-google-access

# create subnet for psc nat in region 2
gcloud compute networks subnets create subnet-bar-pscnat \
  --network=vnet-producer \
  --region=${REGION_2} \
  --range=192.168.2.0/29 \
  --purpose=PRIVATE_SERVICE_CONNECT

ফায়ারওয়াল উপাদান তৈরি করুন

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

# create fw policy
gcloud compute network-firewall-policies create fw-policy-producer --global
# create fw policy rules
gcloud compute network-firewall-policies rules create 1001 \
  --description="allow iap for ssh" \
  --firewall-policy=fw-policy-producer \
  --global-firewall-policy \
  --action=allow \
  --direction=INGRESS \
  --layer4-configs=tcp:22  \
  --src-ip-ranges=35.235.240.0/20

gcloud compute network-firewall-policies rules create 1002 \
  --description="allow health checks" \
  --firewall-policy=fw-policy-producer \
  --global-firewall-policy \
  --action=allow \
  --direction=INGRESS \
  --layer4-configs=tcp,udp,icmp  \
  --src-ip-ranges=130.211.0.0/22,35.191.0.0/16

gcloud compute network-firewall-policies rules create 1003 \
  --description="allow psc nat clients" \
  --firewall-policy=fw-policy-producer \
  --global-firewall-policy \
  --action=allow \
  --direction=INGRESS \
  --layer4-configs=tcp:80  \
  --src-ip-ranges=192.168.1.0/29,192.168.2.0/29
# associate fw policy to vnet
gcloud compute network-firewall-policies associations create \
  --firewall-policy=fw-policy-producer \
  --network=vnet-producer \
  --name=fw-policy-association-producer \
  --global-firewall-policy

ক্লাউড রাউটার এবং NAT গেটওয়ে তৈরি করুন

# create routers for nat in each region
gcloud compute routers create cr-nat-foo \
  --network=vnet-producer \
  --asn=16550 \
  --region=${REGION_1}

gcloud compute routers create cr-nat-bar \
  --network=vnet-producer \
  --asn=16550 \
  --region=${REGION_2}
# create nat gateways in each region
gcloud compute routers nats create natgw-foo \
  --router=cr-nat-foo \
  --region=${REGION_1} \
  --auto-allocate-nat-external-ips \
  --nat-all-subnet-ip-ranges

gcloud compute routers nats create natgw-bar \
  --router=cr-nat-bar \
  --region=${REGION_2} \
  --auto-allocate-nat-external-ips \
  --nat-all-subnet-ip-ranges

HTTP সার্ভার সহ একটি VM স্টার্টআপ কনফিগারেশন তৈরি করুন

cat > vm-server-startup.sh << 'EOF'
#! /bin/bash
apt-get update
apt-get install apache2 -y
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone)"
echo "Page served from: $vm_hostname in zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
EOF

অঞ্চল ১-এ সার্ভিস foo সেট আপ করুন

সার্ভিস কম্পিউট তৈরি করুন

# create managed instance group template
gcloud compute instance-templates create mig-template-foo \
  --machine-type=e2-micro \
  --network=vnet-producer \
  --region=${REGION_1} \
  --subnet=subnet-foo \
  --no-address \
  --shielded-secure-boot \
  --metadata-from-file=startup-script=vm-server-startup.sh
# create regional managed instance group
gcloud compute instance-groups managed create mig-foo \
  --region=${REGION_1} \
  --size=2 \
  --template=mig-template-foo \
  --base-instance-name=service-foo

সার্ভিস লোড ব্যালেন্সার উপাদান তৈরি করুন

# create lb health check
gcloud compute health-checks create http hc-foo-http \
  --region=${REGION_1} \
  --port=80 \
  --enable-logging
# create backend service
gcloud compute backend-services create ilb-foo \
  --load-balancing-scheme=INTERNAL \
  --protocol=tcp \
  --region=${REGION_1} \
  --health-checks=hc-foo-http \
  --health-checks-region=${REGION_1}

# add managed instance group to backend service
gcloud compute backend-services add-backend ilb-foo \
  --instance-group=mig-foo \
  --instance-group-region=${REGION_1} \
  --region=${REGION_1}
# create forwarding rule
gcloud compute forwarding-rules create fr-foo \
  --region=${REGION_1} \
  --load-balancing-scheme=INTERNAL \
  --network=vnet-producer \
  --subnet=subnet-foo \
  --address=172.16.1.99 \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=ilb-foo \
  --backend-service-region=${REGION_1} \
  --allow-global-access

পিএসসি পরিষেবা প্রকাশ করুন

# create psc service attachment
gcloud compute service-attachments create psc-sa-foo \
  --region=${REGION_1} \
  --target-service=projects/${PROJECT_ID}/regions/${REGION_1}/forwardingRules/fr-foo \
  --connection-preference=ACCEPT_AUTOMATIC \
  --nat-subnets=subnet-foo-pscnat

অঞ্চল ২-এ সার্ভিস bar স্থাপন করুন

সার্ভিস কম্পিউট তৈরি করুন

# create managed instance group template
gcloud compute instance-templates create mig-template-bar \
  --machine-type=e2-micro \
  --network=vnet-producer \
  --region=${REGION_2} \
  --subnet=subnet-bar \
  --no-address \
  --shielded-secure-boot \
  --metadata-from-file=startup-script=vm-server-startup.sh
# create regional managed instance group
gcloud compute instance-groups managed create mig-bar \
  --region=${REGION_2} \
  --size=2 \
  --template=mig-template-bar \
  --base-instance-name=service-bar

সার্ভিস লোড ব্যালেন্সার উপাদান তৈরি করুন

# create lb health check
gcloud compute health-checks create http hc-bar-http \
  --region=${REGION_2} \
  --port=80 \
  --enable-logging
# create backend service
gcloud compute backend-services create ilb-bar \
  --load-balancing-scheme=INTERNAL \
  --protocol=tcp \
  --region=${REGION_2} \
  --health-checks=hc-bar-http \
  --health-checks-region=${REGION_2}

# add managed instance group to backend service
gcloud compute backend-services add-backend ilb-bar \
  --instance-group=mig-bar \
  --instance-group-region=${REGION_2} \
  --region=${REGION_2}
# create forwarding rule
gcloud compute forwarding-rules create fr-bar \
  --region=${REGION_2} \
  --load-balancing-scheme=INTERNAL \
  --network=vnet-producer \
  --subnet=subnet-bar \
  --address=172.16.2.99 \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=ilb-bar \
  --backend-service-region=${REGION_2} \
  --allow-global-access

পিএসসি পরিষেবা প্রকাশ করুন

# create psc service attachment
gcloud compute service-attachments create psc-sa-bar \
  --region=${REGION_2} \
  --target-service=projects/${PROJECT_ID}/regions/${REGION_2}/forwardingRules/fr-bar \
  --connection-preference=ACCEPT_AUTOMATIC \
  --nat-subnets=subnet-bar-pscnat

৫. ভোক্তার প্রবেশাধিকার

ক্লায়েন্ট রিসোর্স সেট আপ করুন

নেটওয়ার্ক উপাদান তৈরি করুন

# create vpc network
gcloud compute networks create vnet-consumer --subnet-mode=custom
# create client subnet in each region
gcloud compute networks subnets create subnet-client-1 \
  --network=vnet-consumer \
  --region=${REGION_1} \
  --range=10.10.1.0/24 \
  --enable-private-ip-google-access

gcloud compute networks subnets create subnet-client-2 \
  --network=vnet-consumer \
  --region=${REGION_2} \
  --range=10.10.2.0/24 \
  --enable-private-ip-google-access

কনজিউমার অ্যাপ্লিকেশন (প্রক্সি-ভিত্তিক) লোড ব্যালান্সারের জন্য প্রক্সি-অনলি সাবনেট প্রয়োজন। এই সাবনেটগুলো আইপি অ্যাড্রেসের একটি পুল সরবরাহ করে, যা প্রক্সি-ভিত্তিক লোড ব্যালান্সারগুলো ব্যাকএন্ডে ট্র্যাফিক পাঠানোর সময় অভ্যন্তরীণ সোর্স অ্যাড্রেস হিসেবে ব্যবহার করে।

# create proxy subnet in each region
gcloud compute networks subnets create subnet-proxy-1 \
  --purpose=GLOBAL_MANAGED_PROXY \
  --role=ACTIVE \
  --network=vnet-consumer \
  --region=${REGION_1} \
  --range=10.10.128.0/23

gcloud compute networks subnets create subnet-proxy-2 \
  --purpose=GLOBAL_MANAGED_PROXY \
  --role=ACTIVE \
  --network=vnet-consumer \
  --region=${REGION_2} \
  --range=10.10.130.0/23

ফায়ারওয়াল উপাদান তৈরি করুন

# create fw policy
gcloud compute network-firewall-policies create fw-policy-consumer --global
# create fw policy rules
gcloud compute network-firewall-policies rules create 1001 \
  --description="allow iap for ssh" \
  --firewall-policy=fw-policy-consumer \
  --global-firewall-policy \
  --action=allow \
  --direction=INGRESS \
  --layer4-configs=tcp:22  \
  --src-ip-ranges=35.235.240.0/20
# associate fw policy to vnet
gcloud compute network-firewall-policies associations create \
  --firewall-policy=fw-policy-consumer \
  --network=vnet-consumer \
  --name=fw-policy-association-consumer \
  --global-firewall-policy

লোড ব্যালেন্সার উপাদান তৈরি করুন

# create psc network endpoint group per region
gcloud compute network-endpoint-groups create neg-foo \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=projects/${PROJECT_ID}/regions/${REGION_1}/serviceAttachments/psc-sa-foo \
  --region=${REGION_1} \
  --network=vnet-consumer \
  --subnet=subnet-client-1

gcloud compute network-endpoint-groups create neg-bar \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=projects/${PROJECT_ID}/regions/${REGION_2}/serviceAttachments/psc-sa-bar \
  --region=${REGION_2} \
  --network=vnet-consumer \
  --subnet=subnet-client-2
# verify psc connections
gcloud compute network-endpoint-groups list --format="value(selfLink, pscData.pscConnectionStatus)"
# create global backend service
gcloud compute backend-services create bes-foobar \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=HTTP \
  --global
# add negs to backend service
gcloud compute backend-services add-backend bes-foobar \
  --network-endpoint-group=neg-foo \
  --network-endpoint-group-region=${REGION_1} \
  --global

gcloud compute backend-services add-backend bes-foobar \
  --network-endpoint-group=neg-bar \
  --network-endpoint-group-region=${REGION_2} \
  --global
# create global url map
gcloud compute url-maps create ilb-foobar \
  --default-service=bes-foobar \
  --global
# create global target proxy
gcloud compute target-http-proxies create proxy-foobar \
  --url-map=ilb-foobar \
  --global
# create global forwarding rule for region 1
gcloud compute forwarding-rules create fr-foobar-1 \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=vnet-consumer \
  --subnet=subnet-client-1 \
  --subnet-region=${REGION_1} \
  --address=10.10.1.99 \
  --ports=80 \
  --target-http-proxy=proxy-foobar \
  --global
# create global forwarding rule for region 2
gcloud compute forwarding-rules create fr-foobar-2 \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=vnet-consumer \
  --subnet=subnet-client-2 \
  --subnet-region=${REGION_2} \
  --address=10.10.2.99 \
  --ports=80 \
  --target-http-proxy=proxy-foobar \
  --global

ডিএনএস রেকর্ড তৈরি করুন

# create dns zone
gcloud dns managed-zones create zone-foobar \
  --description="private zone for foobar" \
  --dns-name=foobar.com \
  --networks=vnet-consumer \
  --visibility=private
# create geo dns record
gcloud dns record-sets create www.foobar.com \
  --zone=zone-foobar \
  --type=A \
  --ttl=300 \
  --routing-policy-type=GEO \
  --routing-policy-item="location=${REGION_1},rrdatas=10.10.1.99" \
  --routing-policy-item="location=${REGION_2},rrdatas=10.10.2.99"

কম্পিউট রিসোর্স তৈরি করুন

# create client vm in region 1
gcloud compute instances create client-1 \
  --machine-type=e2-micro \
  --zone=${ZONE_1} \
  --subnet=subnet-client-1 \
  --no-address \
  --shielded-secure-boot
# create client vm in region 2
gcloud compute instances create client-2 \
  --machine-type=e2-micro \
  --zone=${ZONE_2} \
  --subnet=subnet-client-2 \
  --no-address \
  --shielded-secure-boot

টেস্ট সার্ভিস বেসলাইন

অঞ্চল ১-এর ক্লায়েন্ট ভিএম থেকে

# send request from vm to service using hostname
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s -v www.foobar.com'
# send request from vm to load balancer forwarding rule region 1
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s 10.10.1.99'
# send request from vm to load balancer forwarding rule region 2
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s 10.10.2.99'

ঐচ্ছিক: অঞ্চল ২-এর ক্লায়েন্ট ভিএম থেকে একই পরীক্ষাগুলো করে দেখুন: gcloud compute ssh client-2 --zone=${ZONE_2}

মূল বিষয়: region-x এর কোনো ফরওয়ার্ডিং রুলে আসা ক্লায়েন্ট রিকোয়েস্টের ক্ষেত্রে লোড ব্যালান্সারের স্বাভাবিক আচরণ হলো একই region-x এর ব্যাকএন্ডগুলোকে অগ্রাধিকার দেওয়া। যদি সমস্ত ব্যাকএন্ড রিসোর্স সুস্থ থাকে, তবে সর্বনিম্ন ল্যাটেন্সির অঞ্চলটি প্রাধান্য পায়। গ্লোবাল ব্যাকএন্ডগুলো সঠিক হেলথ সিগন্যালযুক্ত অন্য অঞ্চলে ফেইলওভার করবে।

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

৬. স্বাস্থ্য সম্পদ

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

অঞ্চল ১-এ সার্ভিস হেলথ foo সেট আপ করুন

একটি স্বাস্থ্য একত্রীকরণ নীতি তৈরি করুন

gcloud compute health-aggregation-policies create foo-health-policy \
  --region=${REGION_1} \
  --healthy-percent-threshold=60 \
  --min-healthy-threshold=1

একটি স্বাস্থ্য উৎস তৈরি করুন

gcloud compute health-sources create foo-health-source \
  --region=${REGION_1} \
  --source-type=BACKEND_SERVICE \
  --sources=ilb-foo \
  --health-aggregation-policy=foo-health-policy

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

gcloud compute composite-health-checks create foo-health-composite \
  --region=${REGION_1} \
  --health-sources=foo-health-source \
  --health-destination=projects/${PROJECT_ID}/regions/${REGION_1}/forwardingRules/fr-foo

সার্ভিস foo হেলথ কনফিগারেশন যাচাই করুন

প্রতিটি অঞ্চলের জন্য তালিকা (এবং বর্ণনা ) কমান্ড ব্যবহার করে স্বাস্থ্য সম্পদের কনফিগারেশন দেখা যেতে পারে।

# show health aggregation policies
gcloud compute health-aggregation-policies list --regions=${REGION_1}

# show health sources
gcloud compute health-sources list --regions=${REGION_1}

# show composite health checks
gcloud compute composite-health-checks list --regions=${REGION_1}

অঞ্চল ২-এ সার্ভিস হেলথ bar সেট আপ করুন

একটি স্বাস্থ্য একত্রীকরণ নীতি তৈরি করুন

gcloud compute health-aggregation-policies create bar-health-policy \
  --region=${REGION_2} \
  --healthy-percent-threshold=60 \
  --min-healthy-threshold=1

একটি স্বাস্থ্য উৎস তৈরি করুন

gcloud compute health-sources create bar-health-source \
  --region=${REGION_2} \
  --source-type=BACKEND_SERVICE \
  --sources=ilb-bar \
  --health-aggregation-policy=bar-health-policy

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

gcloud compute composite-health-checks create bar-health-composite \
  --region=${REGION_2} \
  --health-sources=bar-health-source \
  --health-destination=projects/${PROJECT_ID}/regions/${REGION_2}/forwardingRules/fr-bar

সার্ভিস bar স্বাস্থ্য কনফিগারেশন যাচাই করুন

# show health aggregation policies
gcloud compute health-aggregation-policies list --regions=${REGION_2}

# show health sources
gcloud compute health-sources list --regions=${REGION_2}

# show composite health checks
gcloud compute composite-health-checks list --regions=${REGION_2}

এর মাধ্যমেই কনফিগারেশন পর্ব শেষ হলো... এবার পরীক্ষার পালা।

৭. ফেইলওভার টেস্টিং

সার্ভিস foo অঞ্চল ১ অস্বাস্থ্যকর পরিস্থিতি

এই সিনারিওটি ​​দুটি ভিএম ইনস্ট্যান্সের মধ্যে একটিতে ওয়েব সার্ভার বন্ধ করার মাধ্যমে অঞ্চল ১-এ পিএসসি প্রডিউসার সার্ভিস foo এর ব্যর্থতাকে অনুকরণ করে।

সার্ভার ভিএম-এর বিবরণ পান

# set env var for a foo service vm name
export FOO_FAIL_NAME=$(gcloud compute instance-groups managed list-instances mig-foo \
  --limit=1 \
  --region=${REGION_1} \
  --format="value(name)")
echo ${FOO_FAIL_NAME}
# set env var for a foo service zone
export FOO_FAIL_ZONE=$(gcloud compute instance-groups managed list-instances mig-foo \
  --limit=1 \
  --region=${REGION_1} \
  --format="value(ZONE)")
echo ${FOO_FAIL_ZONE}

অঞ্চল ১ http সার্ভার বন্ধ করুন

# stop apache http server to fail service
gcloud compute ssh ${FOO_FAIL_NAME} --zone=${FOO_FAIL_ZONE} --command='
  sudo systemctl stop apache2'
# verify service dead
gcloud compute ssh ${FOO_FAIL_NAME} --zone=${FOO_FAIL_ZONE} --command='
  sudo systemctl status apache2 | grep Active:'

আঞ্চলিক পরিষেবা অস্বাস্থ্যকর কিনা তা যাচাই করুন

# check health state of backend service
gcloud compute backend-services get-health ilb-foo --region=${REGION_1}

আউটপুটটি দেখতে অনেকটা এইরকম হওয়া উচিত...

backend: .../regions/us-west1/instanceGroups/mig-foo
status:
  healthStatus:
  -   forwardingRule: .../regions/us-west1/forwardingRules/fr-foo
    forwardingRuleIp: 172.16.1.99
    healthState: UNHEALTHY
    instance: .../zones/us-west1-a/instances/service-foo-<UID_1>
    ipAddress: 172.16.1.2
    port: 80
  -   forwardingRule: .../regions/us-west1/forwardingRules/fr-foo
    forwardingRuleIp: 172.16.1.99
    healthState: HEALTHY
    instance: .../zones/us-west1-b/instances/service-foo-<UID_2>
    ipAddress: 172.16.1.3
    port: 80
  kind: compute#backendServiceGroupHealth
# check health state of health source
gcloud compute health-sources get-health foo-health-source --region=${REGION_1}

আউটপুটটি দেখতে অনেকটা এইরকম হওয়া উচিত...

healthState: UNHEALTHY
kind: compute#healthSourceHealth
sources:
- backends:
  - endpointCount: 1
    group: .../zones/us-west1-a/instanceGroups/mig-foo
    healthyEndpointCount: 0
  - endpointCount: 0
    group: .../zones/us-west1-c/instanceGroups/mig-foo
    healthyEndpointCount: 0
  - endpointCount: 1
    group: .../zones/us-west1-b/instanceGroups/mig-foo
    healthyEndpointCount: 1
  forwardingRule: .../regions/us-west1/forwardingRules/fr-foo
  source: .../regions/us-west1/backendServices/ilb-foo

টেস্ট অঞ্চল ১ ক্লায়েন্ট ফেইলওভার

# send request to service using hostname
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s -v www.foobar.com'
# curl to ilb vip in region 1
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s 10.10.1.99'
# curl to ilb vip in region 2
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s 10.10.2.99'

কম্পোজিট হেলথ ফর পিএসসি কনজিউমার লোড ব্যালেন্সার আপডেট করেছে এবং এটিকে রিজিয়ন ১-এর আনহেলদি ব্যাকএন্ড সার্ভিসটি এড়িয়ে চলার নির্দেশ দিয়েছে। এর পরিবর্তে, এটি রিজিয়ন ২-এর হেলদি সার্ভিস bar ট্র্যাফিক পাঠিয়েছে।

অঞ্চল ১ http সার্ভার পুনরায় চালু করুন

# start apache http server to return service to healthy
gcloud compute ssh ${FOO_FAIL_NAME} --zone=${FOO_FAIL_ZONE} --command='
  sudo systemctl start apache2'
# verify service running
gcloud compute ssh ${FOO_FAIL_NAME} --zone=${FOO_FAIL_ZONE} --command='
  sudo systemctl status apache2 | grep Active:'
# check health state of health source
gcloud compute health-sources get-health foo-health-source --region=${REGION_1}

আউটপুটে এখন এইরকম একটি HEALTHY স্ট্যাটাস দেখানো উচিত...

healthState: HEALTHY
kind: compute#healthSourceHealth
sources:
- backends:
  - endpointCount: 1
    group: .../zones/us-west1-a/instanceGroups/mig-foo
    healthyEndpointCount: 1
  - endpointCount: 0
    group: .../zones/us-west1-c/instanceGroups/mig-foo
    healthyEndpointCount: 0
  - endpointCount: 1
    group: .../zones/us-west1-b/instanceGroups/mig-foo
    healthyEndpointCount: 1
  forwardingRule: .../regions/us-west1/forwardingRules/fr-foo
  source: .../regions/us-west1/backendServices/ilb-foo

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

প্রযোজকরা বিভিন্ন মানদণ্ডের উপর ভিত্তি করে পরিষেবার স্বাস্থ্য নীতিগুলি সামঞ্জস্য করতে পারেন। স্বাস্থ্য একত্রীকরণ নীতি রিসোর্সটি সমস্ত বিভিন্ন স্বাস্থ্য উৎস (ব্যাকএন্ড পরিষেবা) জুড়ে একটি স্বাস্থ্যকর অবস্থা বজায় রাখার জন্য প্রয়োজনীয় ন্যূনতম থ্রেশহোল্ডগুলি নির্দিষ্ট করে।

bar পরিষেবা স্বাস্থ্য তথ্য একত্রীকরণ নীতি আপডেট করুন

gcloud compute health-aggregation-policies update bar-health-policy \
  --region=${REGION_2} \
  --description="min 40% threshold" \
  --healthy-percent-threshold=40 \
  --min-healthy-threshold=2
# verify new policy is applied
gcloud compute health-aggregation-policies list --regions=${REGION_2}

উৎপাদকদের স্বাস্থ্য বিষয়ক এই নীতি পরিবর্তনটি নিম্নলিখিত বিষয়গুলো সম্পন্ন করে:

  1. ন্যূনতম স্বাস্থ্যকর থ্রেশহোল্ড শতাংশ ৬০% থেকে কমিয়ে ৪০% করা হয়েছে – এখন --healthy-percent-threshold এর উপর ভিত্তি করে একটি একক VM ইনস্ট্যান্স ব্যর্থ হলে তা আর অস্বাস্থ্যকর অবস্থা তৈরি করবে না (ব্যর্থতার অবস্থা হবে ৫০% এবং স্বাস্থ্যকর হওয়ার জন্য মাত্র ৪০% প্রয়োজন)।
  2. ব্যাকএন্ডের ন্যূনতম সুস্থ অবস্থা বজায় রাখার জন্য প্রয়োজনীয় ভিএম ইনস্ট্যান্সের সংখ্যা ১ থেকে বাড়িয়ে ২ করা হয়েছে – এখন --min-healthy-threshold উপর ভিত্তি করে একটি ভিএম ইনস্ট্যান্স ব্যর্থ হলেই তা একটি অসুস্থ অবস্থা তৈরি করবে (ব্যর্থতার অবস্থা হবে ১, কিন্তু সুস্থ থাকার জন্য ২টি প্রয়োজন)।

সার্ভিস bar অঞ্চল ২ অস্বাস্থ্যকর পরিস্থিতি

এই সিনারিওটি ​​দুটি ভিএম ইনস্ট্যান্সের মধ্যে একটিতে ওয়েব সার্ভার বন্ধ করার মাধ্যমে অঞ্চল ২-এ পিএসসি প্রডিউসার সার্ভিস bar ব্যর্থতাকে অনুকরণ করে।

সার্ভার ভিএম-এর বিবরণ পান

# set env var for a bar service vm name
export BAR_FAIL_NAME=$(gcloud compute instance-groups managed list-instances mig-bar \
  --limit=1 \
  --region=${REGION_2} \
  --format="value(name)")
echo ${BAR_FAIL_NAME}
# set env var for a bar service zone
export BAR_FAIL_ZONE=$(gcloud compute instance-groups managed list-instances mig-bar \
  --limit=1 \
  --region=${REGION_2} \
  --format="value(ZONE)")
echo ${BAR_FAIL_ZONE}

অঞ্চল ২ http সার্ভার বন্ধ করুন

# stop apache http server to fail service
gcloud compute ssh ${BAR_FAIL_NAME} --zone=${BAR_FAIL_ZONE} --command='
  sudo systemctl stop apache2'
# verify service dead
gcloud compute ssh ${BAR_FAIL_NAME} --zone=${BAR_FAIL_ZONE} --command='
  sudo systemctl status apache2 | grep Active:'

আঞ্চলিক পরিষেবা অস্বাস্থ্যকর কিনা তা যাচাই করুন

# check health state of backend service
gcloud compute backend-services get-health ilb-bar --region=${REGION_2}

আউটপুটটি দেখতে অনেকটা এইরকম হওয়া উচিত...

backend: .../regions/us-east1/instanceGroups/mig-bar
status:
  healthStatus:
  -   forwardingRule: .../regions/us-east1/forwardingRules/fr-bar
    forwardingRuleIp: 172.16.2.99
    healthState: UNHEALTHY
    instance: .../zones/us-east1-b/instances/service-bar-<UID_1>
    ipAddress: 172.16.2.3
    port: 80
  -   forwardingRule: .../regions/us-east1/forwardingRules/fr-bar
    forwardingRuleIp: 172.16.2.99
    healthState: HEALTHY
    instance: .../zones/us-east1-d/instances/service-foo-<UID_2>
    ipAddress: 172.16.2.2
    port: 80
  kind: compute#backendServiceGroupHealth
# check health state of health source
gcloud compute health-sources get-health bar-health-source --region=${REGION_2}

আউটপুটটি দেখতে অনেকটা এইরকম হওয়া উচিত...

healthState: UNHEALTHY
kind: compute#healthSourceHealth
sources:
- backends:
  - endpointCount: 1
    group: .../zones/us-east1-b/instanceGroups/mig-bar
    healthyEndpointCount: 0
  - endpointCount: 1
    group: .../zones/us-east1-d/instanceGroups/mig-bar
    healthyEndpointCount: 1
  - endpointCount: 0
    group: .../zones/us-east1-c/instanceGroups/mig-bar
    healthyEndpointCount: 0
  forwardingRule: .../regions/us-west1/forwardingRules/fr-bar
  source: .../regions/us-west1/backendServices/ilb-bar

টেস্ট অঞ্চল ২ ক্লায়েন্ট ফেইলওভার

# send request to service using hostname
gcloud compute ssh client-2 --zone=${ZONE_2} --command='
  curl -s -v www.foobar.com'
# curl to ilb vip in region 1
gcloud compute ssh client-2 --zone=${ZONE_2} --command='
  curl -s 10.10.1.99'
# curl to ilb vip in region 2
gcloud compute ssh client-2 --zone=${ZONE_2} --command='
  curl -s 10.10.2.99'

কম্পোজিট হেলথ ফর পিএসসি কনজিউমার লোড ব্যালেন্সার আপডেট করেছে এবং এটিকে রিজিয়ন ২-এর আনহেলদি ব্যাকএন্ড সার্ভিসটি এড়িয়ে চলার নির্দেশ দিয়েছে। এর পরিবর্তে, এটি রিজিয়ন ১-এর হেলদি সার্ভিস foo তে ট্র্যাফিক পাঠিয়েছে।

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

এর মাধ্যমেই পরীক্ষণ পর্ব শেষ হলো... এবার পর্যবেক্ষণের পালা।

৮. স্বাস্থ্য পর্যবেক্ষণ করুন

স্বাস্থ্য অবস্থার পরিবর্তনগুলো ডিফল্টরূপে লগ করা হয়। প্রডিউসার প্রোজেক্টগুলো হেলথ সোর্স এবং কম্পোজিট হেলথ চেকের লগ দেখতে পারে। কনজিউমার প্রোজেক্টগুলো কম্পোজিট হেলথ ব্যবহার করে প্রকাশিত সার্ভিসের সাথে সংযুক্ত PSC NEG-গুলোর লগ দেখতে পারে।

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

পর্যবেক্ষণাধীন সম্পদ

দেখুন

লগ নাম

স্বাস্থ্য উৎস এবং সমন্বিত পরীক্ষা

প্রযোজকের দৃষ্টিকোণ

.../logs/compute.googleapis.com%2Fcompositehealth

ব্যক্তিগত পরিষেবা সংযোগ NEGs

ভোক্তার মতামত

.../logs/compute.googleapis.com%2Fservicehealthchecks

প্রযোজক লগ

প্রডিউসার লগগুলো প্রডিউসার সার্ভিসগুলোর অভ্যন্তরীণ স্বাস্থ্যগত সার্বিক চিত্র দেখায়:

  • HealthSource : স্বতন্ত্র ব্যাকএন্ড পরিষেবাগুলির অবস্থা (যেমন, mig-bar এবং mig-foo এর VM স্ট্যাটাস)
  • CompositeHealthCheck : প্রডিউসার ফরওয়ার্ডিং রুল ডেস্টিনেশনে (যেমন, fr-bar বা fr-foo ) ম্যাপ করা প্রকাশিত সার্ভিসের সামগ্রিক আঞ্চলিক স্বাস্থ্য।
# query logs for producer
gcloud logging read \
  'logName="projects/'${PROJECT_ID}'/logs/compute.googleapis.com%2Fcompositehealth"' \
  --project=${PROJECT_ID} \
  --limit=10 \
  --format='table(
    timestamp.date(format="%I:%M:%S %p", tz=LOCAL):label=TIME,
    resource.type.basename():label=TYPE,
    resource.labels.location:label=REGION,
    jsonPayload.healthState:label=STATE,
    jsonPayload.sources[0].backends[].group.basename().join(","):label=BACKENDS,
    jsonPayload.sources[0].backends[].healthyEndpointCount.join(","):label=HEALTHY,
    jsonPayload.sources[0].backends[].endpointCount.join(","):label=TOTAL,
    jsonPayload.healthDestination.basename():label=DESTINATION
  )'

ভোক্তা লগ

কনজিউমার লগগুলো কনজিউমার রিসোর্সগুলোর প্রচারিত স্বাস্থ্যগত অবস্থা দেখায়:

  • NetworkEndpointGroup : প্রকাশিত পরিষেবার সাথে সংযুক্ত PSC NEG-এর প্রচারিত স্বাস্থ্য অবস্থা (যেমন, neg-bar এবং neg-foo )

একটি পৃথক কনজিউমার এবং প্রডিউসার সেটআপে, PSC NEG-এর জন্য কম্পোজিট হেলথ ইভেন্টগুলোকে টার্গেট করতে কনজিউমার প্রজেক্টে এই লগ কোয়েরিটি ব্যবহার করুন...

# query logs for consumer
gcloud logging read \
  "logName=projects/${PROJECT_ID}/logs/compute.googleapis.com%2Fservicehealthchecks
  AND resource.type=\"compute.googleapis.com/NetworkEndpointGroupV2\"" \
  --project="${PROJECT_ID}" \
  --freshness=30m \
  --limit=10 \
  --format="table(
    timestamp.date(format='%I:%M:%S %p', tz=LOCAL):label=TIME,
    resource.labels.location:label=REGION,
    jsonPayload.serviceHealthCheckResult.healthState:label=STATE,
    jsonPayload.serviceHealthCheckResult.previousHealthState:label=PREV_STATE,
    resource.labels.network_endpoint_group_id:label=NEG_ID
  )"

এর মাধ্যমেই পর্যবেক্ষণ পর্ব শেষ হলো... এবার পরিচ্ছন্নতার পালা।

৯. পরিচ্ছন্নতা

# delete health resources
gcloud -q compute composite-health-checks delete foo-health-composite --region=${REGION_1}

gcloud -q compute health-sources delete foo-health-source --region=${REGION_1}

gcloud -q compute health-aggregation-policies delete foo-health-policy --region=${REGION_1}

gcloud -q compute composite-health-checks delete bar-health-composite --region=${REGION_2}

gcloud -q compute health-sources delete bar-health-source --region=${REGION_2}

gcloud -q compute health-aggregation-policies delete bar-health-policy --region=${REGION_2}
# delete consumer compute and load balancer resources
gcloud -q compute instances delete client-2 --zone=${ZONE_2}

gcloud -q compute instances delete client-1 --zone=${ZONE_1}

gcloud -q dns record-sets delete www.foobar.com --type=A --zone=zone-foobar

gcloud -q dns managed-zones delete zone-foobar

gcloud -q compute forwarding-rules delete fr-foobar-2 --global

gcloud -q compute forwarding-rules delete fr-foobar-1 --global

gcloud -q compute target-http-proxies delete proxy-foobar --global

gcloud -q compute url-maps delete ilb-foobar --global

gcloud -q compute backend-services delete bes-foobar --global


# delete consumer network resources
gcloud -q compute network-endpoint-groups delete neg-bar --region=${REGION_2}

gcloud -q compute network-endpoint-groups delete neg-foo --region=${REGION_1}

gcloud -q compute networks subnets delete subnet-proxy-2 --region=${REGION_2}

gcloud -q compute networks subnets delete subnet-proxy-1 --region=${REGION_1}

gcloud -q compute networks subnets delete subnet-client-2 --region=${REGION_2}

gcloud -q compute networks subnets delete subnet-client-1 --region=${REGION_1}

gcloud -q compute network-firewall-policies associations delete \
  --firewall-policy=fw-policy-consumer \
  --name=fw-policy-association-consumer \
  --global-firewall-policy

gcloud -q compute network-firewall-policies delete fw-policy-consumer --global

gcloud -q compute networks delete vnet-consumer
# delete producer load balancer resources
gcloud -q compute service-attachments delete psc-sa-bar --region=${REGION_2}

gcloud -q compute service-attachments delete psc-sa-foo --region=${REGION_1}

gcloud -q compute forwarding-rules delete fr-bar --region=${REGION_2}

gcloud -q compute forwarding-rules delete fr-foo --region=${REGION_1}

gcloud -q compute backend-services delete ilb-bar --region=${REGION_2}

gcloud -q compute backend-services delete ilb-foo --region=${REGION_1}

gcloud -q compute health-checks delete hc-bar-http --region=${REGION_2}

gcloud -q compute health-checks delete hc-foo-http --region=${REGION_1}
# delete producer compute resources
gcloud -q compute instance-groups managed delete mig-bar --region=${REGION_2}

gcloud -q compute instance-groups managed delete mig-foo --region=${REGION_1}

gcloud -q compute instance-templates delete mig-template-bar --global

gcloud -q compute instance-templates delete mig-template-foo --global
# delete producer network resources
gcloud -q compute networks subnets delete subnet-bar-pscnat --region=${REGION_2}

gcloud -q compute networks subnets delete subnet-foo-pscnat --region=${REGION_1}

gcloud -q compute networks subnets delete subnet-bar --region=${REGION_2}

gcloud -q compute networks subnets delete subnet-foo --region=${REGION_1}

gcloud -q compute routers delete cr-nat-bar --region=${REGION_2}

gcloud -q compute routers delete cr-nat-foo --region=${REGION_1}

gcloud -q compute network-firewall-policies associations delete \
  --firewall-policy=fw-policy-producer \
  --name=fw-policy-association-producer \
  --global-firewall-policy

gcloud -q compute network-firewall-policies delete fw-policy-producer --global

gcloud -q compute networks delete vnet-producer
# delete shell variables and script file
unset FOO_FAIL_NAME FOO_FAIL_ZONE BAR_FAIL_NAME BAR_FAIL_ZONE

unset PROJECT_ID REGION_1 ZONE_1 REGION_2 ZONE_2

rm vm-server-startup.sh
#

১০. উপসংহার

অভিনন্দন! আপনি সফলভাবে PSC-এর জন্য কম্পোজিট হেলথ কনফিগার করেছেন এবং স্বয়ংক্রিয় আঞ্চলিক ফেইলওভার পরীক্ষা করেছেন!

এই ফিডব্যাক ফর্মটি ব্যবহার করে যেকোনো মন্তব্য, প্রশ্ন বা সংশোধন জানাতে পারেন।

ধন্যবাদ!