การเปลี่ยนตัวจัดสรรภาระงานเครือข่ายจากพูลเป้าหมายเป็นบริการแบ็กเอนด์ระดับภูมิภาค

1. บทนำ

คู่มือนี้แสดงวิธีการเปลี่ยนตัวจัดสรรภาระงานเครือข่ายที่มีอยู่จากแบ็กเอนด์พูลเป้าหมายเป็นบริการแบ็กเอนด์ระดับภูมิภาค

สิ่งที่คุณจะได้เรียนรู้

  • ทำความเข้าใจประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค
  • สร้าง Network Load Balancer ด้วยกลุ่มเป้าหมาย
  • ทำการตรวจสอบพูลเป้าหมาย
  • สร้างบริการแบ็กเอนด์ระดับภูมิภาคโดยใช้กลุ่มอินสแตนซ์ที่ไม่มีการจัดการ
  • ทำการย้ายข้อมูลจากพูลเป้าหมายไปยังบริการแบ็กเอนด์
  • ทำการตรวจสอบบริการแบ็กเอนด์

สิ่งที่คุณต้องมี

  • ประสบการณ์การใช้งานตัวจัดสรรภาระงาน

2. ภาพรวมบริการแบ็กเอนด์ระดับภูมิภาคสำหรับการจัดสรรภาระงานเครือข่าย

Network Load Balancing ช่วยให้ลูกค้า Google Cloud มีเครื่องมือที่มีประสิทธิภาพในการกระจายการรับส่งข้อมูลภายนอกระหว่างเครื่องเสมือนในภูมิภาค Google Cloud เราได้เพิ่มการรองรับบริการแบ็กเอนด์ลงในการจัดสรรภาระงานของเครือข่ายเมื่อเร็วๆ นี้ เพื่อให้ลูกค้าจัดการการเข้าชมที่เข้ามาและควบคุมลักษณะการทำงานของตัวจัดสรรภาระงานได้ง่ายขึ้น ซึ่งจะช่วยเพิ่มความสามารถในการปรับขนาด ความเร็ว ประสิทธิภาพ และความยืดหยุ่นในการติดตั้งใช้งานให้กับลูกค้าของเรา ทั้งหมดนี้ทำได้ในวิธีที่จัดการได้ง่าย

ตอนนี้เรารองรับบริการแบ็กเอนด์ที่มีการจัดสรรภาระงานบนเครือข่ายแล้ว ซึ่งเป็นการปรับปรุงที่สำคัญกว่าแนวทางก่อนหน้าอย่างกลุ่มเป้าหมาย บริการแบ็กเอนด์จะกำหนดวิธีที่ตัวจัดสรรภาระงานกระจายการรับส่งข้อมูลขาเข้าไปยังแบ็กเอนด์ที่แนบ และให้การควบคุมแบบละเอียดสำหรับลักษณะการทำงานของตัวจัดสรรภาระงาน

3. ประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค

การเลือกบริการแบ็กเอนด์ระดับภูมิภาคเป็นตัวจัดสรรภาระงานจะช่วยให้สภาพแวดล้อมของคุณได้รับประโยชน์หลายประการ

267db35a58145be.png

บริการแบ็กเอนด์ระดับภูมิภาคจะพร้อมให้บริการดังนี้

  • การตรวจสอบสถานะที่มีความเที่ยงตรงสูงด้วยการตรวจสอบสถานะแบบรวม - ตอนนี้คุณสามารถใช้ประโยชน์จากฟีเจอร์การตรวจสอบสถานะของการจัดสรรภาระงานได้อย่างเต็มที่ด้วยบริการแบ็กเอนด์ระดับภูมิภาค ซึ่งจะช่วยให้คุณไม่ต้องกังวลเรื่องข้อจำกัดของการตรวจสอบสถานะ HTTP แบบเดิม ด้วยเหตุผลด้านการปฏิบัติตามข้อกำหนด การตรวจสอบประสิทธิภาพการทำงานของ TCP ที่รองรับสตริงคำขอและการตอบกลับที่กำหนดเองหรือ HTTPS จึงเป็นคำขอทั่วไปสำหรับลูกค้า Network Load Balancing
  • ความยืดหยุ่นที่ดีขึ้นด้วยกลุ่มเฟลโอเวอร์ - กลุ่มเฟลโอเวอร์ช่วยให้คุณกำหนดกลุ่มอินสแตนซ์เป็นกลุ่มหลักและอีกกลุ่มเป็นกลุ่มรอง รวมถึงเฟลโอเวอร์การรับส่งข้อมูลได้เมื่อประสิทธิภาพของอินสแตนซ์ในกลุ่มที่ใช้งานอยู่ต่ำกว่าเกณฑ์ที่กำหนด หากต้องการควบคุมกลไกการเฟลโอเวอร์เพิ่มเติม คุณสามารถใช้เอเจนต์ เช่น keepalived หรือ pacemaker และให้การตรวจสอบประสิทธิภาพการทำงานที่ปกติหรือล้มเหลวแสดงตามการเปลี่ยนแปลงสถานะของอินสแตนซ์แบ็กเอนด์
  • ความสามารถในการปรับขนาดและความพร้อมใช้งานสูงด้วยกลุ่มอินสแตนซ์ที่มีการจัดการ - บริการแบ็กเอนด์ระดับภูมิภาครองรับกลุ่มอินสแตนซ์ที่มีการจัดการเป็นแบ็กเอนด์ ตอนนี้คุณระบุเทมเพลตสำหรับอินสแตนซ์เครื่องเสมือนแบ็กเอนด์ และใช้ประโยชน์จากการปรับขนาดอัตโนมัติตามการใช้งาน CPU หรือเมตริกการตรวจสอบอื่นๆ ได้แล้ว

นอกจากนี้ คุณยังใช้ประโยชน์จากการระบายการเชื่อมต่อสำหรับโปรโตคอลที่มุ่งเน้นการเชื่อมต่อ (TCP) และเวลาในการเขียนโปรแกรมที่เร็วขึ้นสำหรับการติดตั้งใช้งานขนาดใหญ่ได้ด้วย

โทโพโลยีเครือข่าย Codelab

คู่มือนี้แสดงวิธีการเปลี่ยนตัวจัดสรรภาระงานเครือข่ายที่มีอยู่จากแบ็กเอนด์พูลเป้าหมายเป็นบริการแบ็กเอนด์ระดับภูมิภาค

การเปลี่ยนไปใช้บริการแบ็กเอนด์ระดับภูมิภาคจะช่วยให้คุณใช้ประโยชน์จากฟีเจอร์ต่างๆ ได้ เช่น การตรวจสอบประสิทธิภาพการทำงานที่ไม่ใช่แบบเดิม (สำหรับ TCP, SSL, HTTP, HTTPS และ HTTP/2), กลุ่มอินสแตนซ์ที่มีการจัดการ, การระบายการเชื่อมต่อ และนโยบายเฟลโอเวอร์

คู่มือนี้จะแนะนำขั้นตอนการเปลี่ยนตัวอย่างต่อไปนี้ของตัวจัดสรรภาระงานเครือข่ายที่อิงตามพูลเป้าหมายให้ใช้บริการแบ็กเอนด์ระดับภูมิภาคแทน

b2ac8a09e53e27f8.png

ก่อน: การจัดสรรภาระงานบนเครือข่ายที่มีกลุ่มเป้าหมาย

การติดตั้งใช้งานตัวจัดสรรภาระงานเครือข่ายที่อิงตามบริการแบ็กเอนด์ที่ได้จะมีลักษณะดังนี้

f628fdad64c83af3.png

หลังจาก: การจัดสรรภาระงานของเครือข่ายที่มีบริการแบ็กเอนด์ระดับภูมิภาค

ตัวอย่างนี้ถือว่าคุณมี Network Load Balancer แบบเดิมที่ใช้กลุ่มเป้าหมายซึ่งมีอินสแตนซ์ 2 รายการในโซน us-central-1a และอินสแตนซ์ 2 รายการในโซน us-central-1c

ขั้นตอนระดับสูงที่จำเป็นสำหรับการเปลี่ยนผ่านดังกล่าวมีดังนี้

  1. จัดกลุ่มอินสแตนซ์พูลเป้าหมายเป็นกลุ่มอินสแตนซ์ บริการแบ็กเอนด์จะใช้ได้กับกลุ่มอินสแตนซ์ที่มีการจัดการหรือไม่มีการจัดการเท่านั้น โปรดทราบว่าแม้จะไม่มีการจำกัดจำนวนอินสแตนซ์ที่วางในกลุ่มเป้าหมายเดียวได้ แต่กลุ่มอินสแตนซ์ก็มีขนาดสูงสุด หากพูลเป้าหมายมีอินสแตนซ์มากกว่าจำนวนสูงสุดนี้ คุณจะต้องแยกแบ็กเอนด์ของพูลเป้าหมายออกเป็นหลายกลุ่มอินสแตนซ์ หากการติดตั้งใช้งานที่มีอยู่มีพูลเป้าหมายสำรอง ให้สร้างกลุ่มอินสแตนซ์แยกต่างหากสำหรับอินสแตนซ์เหล่านั้น ระบบจะกำหนดค่ากลุ่มอินสแตนซ์นี้เป็นกลุ่มเฟลโอเวอร์
  2. สร้างบริการแบ็กเอนด์ระดับภูมิภาค หากการติดตั้งใช้งานมีพูลเป้าหมายสำรอง คุณจะต้องระบุอัตราส่วนการล้มเหลวขณะสร้างบริการแบ็กเอนด์ ซึ่งควรตรงกับอัตราส่วนการสลับไปใช้ข้อมูลสำรองที่กำหนดค่าไว้ก่อนหน้านี้สำหรับการติดตั้งใช้งานพูลเป้าหมาย
  3. เพิ่มกลุ่มอินสแตนซ์ (สร้างไว้ก่อนหน้านี้) ลงในบริการแบ็กเอนด์ หากการติดตั้งใช้งานมีพูลเป้าหมายสำรอง ให้ทำเครื่องหมายกลุ่มอินสแตนซ์ที่สลับไปใช้รายการสำรองที่เกี่ยวข้องด้วยแฟล็ก –failover เมื่อเพิ่มลงในบริการแบ็กเอนด์
  4. กำหนดค่ากฎการส่งต่อที่ชี้ไปยังบริการแบ็กเอนด์ใหม่ คุณมี 2 ตัวเลือกดังนี้
  • (แนะนำ) อัปเดตกฎการส่งต่อที่มีอยู่ให้ชี้ไปยังบริการแบ็กเอนด์ หรือ
  • สร้างการส่งต่อใหม่ที่ชี้ไปยังบริการแบ็กเอนด์ ซึ่งกำหนดให้คุณต้องสร้างที่อยู่ IP ใหม่สำหรับส่วนหน้าของตัวจัดสรรภาระงาน จากนั้นแก้ไขการตั้งค่า DNS เพื่อเปลี่ยนจากที่อยู่ IP ของตัวจัดสรรภาระงานที่ใช้พูลเป้าหมายเดิมไปยังที่อยู่ IP ใหม่ได้อย่างราบรื่น

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้

  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย โปรดทำตามวิธีการในส่วน "การล้างข้อมูล" ซึ่งจะแนะนำวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จาก GCP Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

bce75f34b2c53987.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อเสร็จแล้ว คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้

f6ef2b5f13479f3a.png

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดในห้องทดลองนี้ได้โดยใช้เพียงเบราว์เซอร์

เข้าสู่ระบบ Cloud Shell และตั้งค่า projectid

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

4. สร้างเครือข่าย VPC

เครือข่าย VPC

จาก Cloud Shell

gcloud compute networks create network-lb --subnet-mode custom

สร้างซับเน็ต

จาก Cloud Shell

gcloud compute networks subnets create network-lb-subnet \
        --network network-lb --range 10.0.0.0/24 --region us-central1

สร้างกฎไฟร์วอลล์

จาก Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

สร้างอินสแตนซ์ที่ไม่มีการจัดการ

สร้างอินสแตนซ์ 2 อินสแตนซ์ต่อโซน us-central1-a และ us-central1-c

สร้างอินสแตนซ์ 1 จาก Cloud Shell

gcloud compute instances create www1 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"

สร้างอินสแตนซ์ 2 จาก Cloud Shell

gcloud compute instances create www2 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"

สร้างอินสแตนซ์ 3 จาก Cloud Shell

gcloud compute instances create www3 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"

สร้างอินสแตนซ์ 4 จาก Cloud Shell

gcloud compute instances create www4 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"

สร้างกฎไฟร์วอลล์เพื่ออนุญาตให้มีการรับส่งข้อมูลภายนอกไปยังอินสแตนซ์ VM เหล่านี้

จาก Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

สร้างที่อยู่ IP ภายนอกแบบคงที่สำหรับตัวจัดสรรภาระงาน

จาก Cloud Shell

gcloud compute addresses create network-lb-ip-1 \
    --region us-central1

เพิ่มทรัพยากรการตรวจสอบสถานะ HTTP เวอร์ชันเดิม

จาก Cloud Shell

gcloud compute http-health-checks create basic-check

5. สร้างกฎการส่งต่อและพูลเป้าหมาย

สร้างพูลเป้าหมาย

gcloud compute target-pools create www-pool \
            --region us-central1 --http-health-check basic-check

เพิ่มอินสแตนซ์ไปยังกลุ่มเป้าหมาย us-central1-a

gcloud compute target-pools add-instances www-pool \
--instances www1,www2 \
--instances-zone us-central1-a

เพิ่มอินสแตนซ์ไปยังพูลเป้าหมาย us-central1-c

gcloud compute target-pools add-instances www-pool \
--instances www3,www4 \
--instances-zone us-central1-c

เพิ่มกฎการส่งต่อ

gcloud compute forwarding-rules create www-rule \
--region us-central1 \
--ports 80 \
--address network-lb-ip-1 \
--target-pool www-pool

ตรวจสอบฟังก์ชันการทำงานของกลุ่มเป้าหมาย

ระบุที่อยู่ IP ของฟรอนท์เอนด์โดยเลือกตัวจัดสรรภาระงาน → ฟรอนท์เอนด์ (www-rule)

ใช้คำสั่ง curl จากเทอร์มินัลเวิร์กสเตชันเพื่อเข้าถึงที่อยู่ IP ภายนอกและสังเกตการจัดสรรภาระงานในอินสแตนซ์เป้าหมายทั้ง 4 รายการ ปิดเทอร์มินัลเมื่อตรวจสอบแล้ว

while true; do curl -m1 IP_ADDRESS; done

6. เปลี่ยนตัวจัดสรรภาระงานเครือข่ายจากกลุ่มเป้าหมายเป็นบริการแบ็กเอนด์

สร้างการตรวจสอบประสิทธิภาพการทำงานแบบรวมสำหรับบริการแบ็กเอนด์

gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1

สร้างกลุ่มอินสแตนซ์จากอินสแตนซ์ที่มีอยู่จากพูลเป้าหมาย

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2

สร้างกลุ่มอินสแตนซ์จากอินสแตนซ์ที่มีอยู่จากพูลเป้าหมาย

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4

สร้างบริการแบ็กเอนด์และเชื่อมโยงกับ Health Check ที่สร้างขึ้นใหม่

gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external

กำหนดค่าบริการแบ็กเอนด์และเพิ่มกลุ่มอินสแตนซ์

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1

อัปเดตกฎการส่งต่อที่มีอยู่เพื่อรองรับบริการแบ็กเอนด์

จดชื่อกฎการส่งต่อ "www-rule" และที่อยู่ IP ที่เชื่อมโยงโดยทำดังนี้

เลือกตัวจัดสรรภาระงาน → ส่วนหน้า

นอกจากนี้ ยังได้ระบุพูลเป้าหมาย 4 รายการ

เลือกตัวจัดสรรภาระงาน → เลือก "www-pool"

กำหนดเส้นทางการรับส่งข้อมูลไปยังบริการแบ็กเอนด์โดยการอัปเดตกฎการส่งต่อที่มีอยู่

gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1

ยืนยันว่าไม่ได้กำหนดค่าตัวจัดสรรภาระงาน "www-pool" ด้วยฟรอนท์เอนด์ "www-rule" อีกต่อไป (ดูภาพหน้าจอด้านล่าง)

เลือกตัวจัดสรรภาระงาน → www-pool

9a393b3ca4e0942c.png

ตรวจสอบว่ากฎการส่งต่อส่วนหน้าเชื่อมโยงกับตัวจัดสรรภาระงาน "my-backend-service" แล้ว

เลือกตัวจัดสรรภาระงาน → ส่วนหน้า

โปรดทราบว่าชื่อกฎ "www-rule" จะยังคงใช้ที่อยู่ IP และตอนนี้จะใช้ตัวจัดสรรภาระงาน "my-backend-service"

ใช้คำสั่ง curl จากเทอร์มินัลเวิร์กสเตชันเพื่อเข้าถึงที่อยู่ IP ภายนอกและสังเกตการจัดสรรภาระงานในบริการแบ็กเอนด์ที่เชื่อมโยงใหม่ ปิดเทอร์มินัลเมื่อตรวจสอบแล้ว

while true; do curl -m1 IP_ADDRESS; done

7. ขั้นตอนการล้างข้อมูล

gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet
 
gcloud compute backend-services delete my-backend-service --region us-central1 --quiet
 
gcloud compute target-pools delete www-pool --region us-central1 --quiet
 
gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet

gcloud compute firewall-rules delete www-firewall-network-lb --quiet
 
gcloud compute instances delete www4 --zone us-central1-c --quiet
 
gcloud compute instances delete www3 --zone us-central1-c --quiet
 
gcloud compute instances delete www2 --zone us-central1-a --quiet

gcloud compute instances delete www1 --zone us-central1-a --quiet
 
gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet

gcloud compute networks delete network-lb --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet

8. ยินดีด้วย

ขอแสดงความยินดีที่ทำ Codelab เสร็จสมบูรณ์

สิ่งที่เราได้พูดถึง

  • ทำความเข้าใจประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค
  • สร้าง Network Load Balancer ด้วยกลุ่มเป้าหมาย
  • ทำการตรวจสอบพูลเป้าหมาย
  • สร้างบริการแบ็กเอนด์ระดับภูมิภาคโดยใช้กลุ่มอินสแตนซ์ที่ไม่มีการจัดการ
  • ทำการย้ายข้อมูลจากพูลเป้าหมายไปยังบริการแบ็กเอนด์
  • ทำการตรวจสอบบริการแบ็กเอนด์