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

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

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

หลังจาก: การจัดสรรภาระงานของเครือข่ายที่มีบริการแบ็กเอนด์ระดับภูมิภาค
ตัวอย่างนี้ถือว่าคุณมี Network Load Balancer แบบเดิมที่ใช้กลุ่มเป้าหมายซึ่งมีอินสแตนซ์ 2 รายการในโซน us-central-1a และอินสแตนซ์ 2 รายการในโซน us-central-1c
ขั้นตอนระดับสูงที่จำเป็นสำหรับการเปลี่ยนผ่านดังกล่าวมีดังนี้
- จัดกลุ่มอินสแตนซ์พูลเป้าหมายเป็นกลุ่มอินสแตนซ์ บริการแบ็กเอนด์จะใช้ได้กับกลุ่มอินสแตนซ์ที่มีการจัดการหรือไม่มีการจัดการเท่านั้น โปรดทราบว่าแม้จะไม่มีการจำกัดจำนวนอินสแตนซ์ที่วางในกลุ่มเป้าหมายเดียวได้ แต่กลุ่มอินสแตนซ์ก็มีขนาดสูงสุด หากพูลเป้าหมายมีอินสแตนซ์มากกว่าจำนวนสูงสุดนี้ คุณจะต้องแยกแบ็กเอนด์ของพูลเป้าหมายออกเป็นหลายกลุ่มอินสแตนซ์ หากการติดตั้งใช้งานที่มีอยู่มีพูลเป้าหมายสำรอง ให้สร้างกลุ่มอินสแตนซ์แยกต่างหากสำหรับอินสแตนซ์เหล่านั้น ระบบจะกำหนดค่ากลุ่มอินสแตนซ์นี้เป็นกลุ่มเฟลโอเวอร์
- สร้างบริการแบ็กเอนด์ระดับภูมิภาค หากการติดตั้งใช้งานมีพูลเป้าหมายสำรอง คุณจะต้องระบุอัตราส่วนการล้มเหลวขณะสร้างบริการแบ็กเอนด์ ซึ่งควรตรงกับอัตราส่วนการสลับไปใช้ข้อมูลสำรองที่กำหนดค่าไว้ก่อนหน้านี้สำหรับการติดตั้งใช้งานพูลเป้าหมาย
- เพิ่มกลุ่มอินสแตนซ์ (สร้างไว้ก่อนหน้านี้) ลงในบริการแบ็กเอนด์ หากการติดตั้งใช้งานมีพูลเป้าหมายสำรอง ให้ทำเครื่องหมายกลุ่มอินสแตนซ์ที่สลับไปใช้รายการสำรองที่เกี่ยวข้องด้วยแฟล็ก –failover เมื่อเพิ่มลงในบริการแบ็กเอนด์
- กำหนดค่ากฎการส่งต่อที่ชี้ไปยังบริการแบ็กเอนด์ใหม่ คุณมี 2 ตัวเลือกดังนี้
- (แนะนำ) อัปเดตกฎการส่งต่อที่มีอยู่ให้ชี้ไปยังบริการแบ็กเอนด์ หรือ
- สร้างการส่งต่อใหม่ที่ชี้ไปยังบริการแบ็กเอนด์ ซึ่งกำหนดให้คุณต้องสร้างที่อยู่ IP ใหม่สำหรับส่วนหน้าของตัวจัดสรรภาระงาน จากนั้นแก้ไขการตั้งค่า DNS เพื่อเปลี่ยนจากที่อยู่ IP ของตัวจัดสรรภาระงานที่ใช้พูลเป้าหมายเดิมไปยังที่อยู่ IP ใหม่ได้อย่างราบรื่น
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



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

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

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 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

ตรวจสอบว่ากฎการส่งต่อส่วนหน้าเชื่อมโยงกับตัวจัดสรรภาระงาน "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 ด้วยกลุ่มเป้าหมาย
- ทำการตรวจสอบพูลเป้าหมาย
- สร้างบริการแบ็กเอนด์ระดับภูมิภาคโดยใช้กลุ่มอินสแตนซ์ที่ไม่มีการจัดการ
- ทำการย้ายข้อมูลจากพูลเป้าหมายไปยังบริการแบ็กเอนด์
- ทำการตรวจสอบบริการแบ็กเอนด์