1. บทนำ
คู่มือนี้จะอธิบายวิธีเปลี่ยนตัวจัดสรรภาระงานของเครือข่ายที่มีอยู่จากแบ็กเอนด์พูลเป้าหมายเป็นบริการแบ็กเอนด์ระดับภูมิภาค
สิ่งที่คุณจะได้เรียนรู้
- ทำความเข้าใจประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค
- สร้างตัวจัดสรรภาระงานเครือข่ายที่มีพูลเป้าหมาย
- ดำเนินการตรวจสอบพูลเป้าหมาย
- สร้างบริการแบ็กเอนด์ระดับภูมิภาคโดยใช้กลุ่มอินสแตนซ์ที่ไม่มีการจัดการ
- ดำเนินการย้ายข้อมูลพูลเป้าหมายไปยังบริการแบ็กเอนด์
- ดำเนินการตรวจสอบบริการแบ็กเอนด์
สิ่งที่ต้องมี
- ประสบการณ์เกี่ยวกับตัวจัดสรรภาระงาน
2. ภาพรวมบริการแบ็กเอนด์ระดับภูมิภาคสําหรับการจัดสรรภาระงานของเครือข่าย
การจัดสรรภาระงานของเครือข่ายช่วยให้ลูกค้าของ Google Cloud มีเครื่องมือที่มีประสิทธิภาพสำหรับการกระจายการรับส่งข้อมูลภายนอกในหมู่เครื่องเสมือนในภูมิภาค Google Cloud เมื่อเร็วๆ นี้เราได้เพิ่มการรองรับบริการแบ็กเอนด์ไปยังระบบจัดสรรภาระงานของเครือข่ายเพื่อให้ลูกค้าจัดการการเข้าชมขาเข้าและควบคุมลักษณะการทำงานของตัวจัดสรรภาระงานได้ง่ายขึ้น ซึ่งช่วยให้ลูกค้าสามารถปรับขนาด ความเร็ว ประสิทธิภาพ และความยืดหยุ่นในการใช้งานได้ดีขึ้น ทั้งหมดนี้จัดการได้ง่าย
ตอนนี้เรารองรับบริการแบ็กเอนด์ด้วยระบบจัดสรรภาระงานของเครือข่าย ซึ่งเป็นการปรับปรุงที่สำคัญกว่าแนวทางก่อนหน้าอย่างพูลเป้าหมาย บริการแบ็กเอนด์จะกำหนดวิธีที่ตัวจัดสรรภาระงานกระจายการรับส่งข้อมูลขาเข้าไปยังแบ็กเอนด์ที่แนบอยู่ และมอบการควบคุมแบบละเอียดสำหรับลักษณะการทำงานของตัวจัดสรรภาระงาน
3. ประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค
การเลือกบริการแบ็กเอนด์ระดับภูมิภาคเป็นตัวจัดสรรภาระงานจะทําให้สภาพแวดล้อมของคุณมีข้อได้เปรียบหลายประการ
บริการแบ็กเอนด์ระดับภูมิภาคมีบริการต่อไปนี้ตั้งแต่เริ่มต้น
- การตรวจสอบประสิทธิภาพการทำงานที่แม่นยำสูงด้วยการตรวจสอบประสิทธิภาพการทำงานแบบรวม - บริการแบ็กเอนด์ระดับภูมิภาคช่วยให้คุณใช้ประโยชน์จากฟีเจอร์การตรวจสอบประสิทธิภาพการทำงานของการจัดสรรภาระงานได้อย่างเต็มที่ ซึ่งจะช่วยคุณหลุดพ้นจากข้อจำกัดของการตรวจสอบประสิทธิภาพการทำงาน HTTP แบบเดิม การตรวจสอบประสิทธิภาพการทำงาน TCP ที่รองรับสตริงคำขอและการตอบกลับที่กำหนดเองหรือ HTTPS เป็นคำขอที่พบบ่อยสำหรับลูกค้าที่ใช้ตัวจัดสรรภาระงานของเครือข่ายเนื่องด้วยเหตุผลด้านข้อกำหนด
- ความยืดหยุ่นที่ดีขึ้นด้วยกลุ่มสํารอง - เมื่อใช้กลุ่มสํารอง คุณจะกําหนดกลุ่มอินสแตนซ์เป็นกลุ่มหลักและอีกกลุ่มหนึ่งเป็นกลุ่มรอง รวมถึงเปลี่ยนเส้นทางการรับส่งข้อมูลได้เมื่อประสิทธิภาพของอินสแตนซ์ในกลุ่มที่ใช้งานอยู่ต่ำกว่าเกณฑ์ที่กำหนด หากต้องการควบคุมกลไกการทดแทนมากขึ้น คุณสามารถใช้ตัวแทน เช่น keepalived หรือ pacemaker และแสดงการตรวจสอบประสิทธิภาพการทำงานที่ทำงานได้หรือทำงานไม่ได้โดยอิงตามการเปลี่ยนแปลงสถานะของอินสแตนซ์แบ็กเอนด์
- ความสามารถในการปรับขนาดและความพร้อมใช้งานสูงด้วยกลุ่มอินสแตนซ์ที่มีการจัดการ - บริการแบ็กเอนด์ระดับภูมิภาครองรับกลุ่มอินสแตนซ์ที่มีการจัดการเป็นแบ็กเอนด์ ตอนนี้คุณระบุเทมเพลตสำหรับอินสแตนซ์เครื่องเสมือนแบ็กเอนด์และใช้ประโยชน์จากการปรับขนาดอัตโนมัติตามการใช้งาน CPU หรือเมตริกการตรวจสอบอื่นๆ ได้แล้ว
นอกจากที่กล่าวมาข้างต้นแล้ว คุณยังสามารถใช้ประโยชน์จากการเชื่อมต่อการระบายการเชื่อมต่อสำหรับโปรโตคอลที่เน้นการเชื่อมต่อ (TCP) และลดเวลาในการเขียนโปรแกรมให้เร็วขึ้นเพื่อการติดตั้งใช้งานขนาดใหญ่
โทโพโลยีเครือข่ายของ Codelab
คู่มือนี้จะอธิบายวิธีเปลี่ยนตัวจัดสรรภาระงานของเครือข่ายที่มีอยู่จากแบ็กเอนด์พูลเป้าหมายเป็นบริการแบ็กเอนด์ระดับภูมิภาค
การเปลี่ยนไปใช้บริการแบ็กเอนด์ระดับภูมิภาคจะช่วยให้คุณใช้ประโยชน์จากฟีเจอร์ต่างๆ เช่น การตรวจสอบประสิทธิภาพการทำงานที่ไม่ใช่แบบเดิม (สำหรับ TCP, SSL, HTTP, HTTPS และ HTTP/2), อินสแตนซ์ที่มีการจัดการ, การระบายการเชื่อมต่อ และนโยบายเฟลโอเวอร์
คู่มือนี้จะแนะนำขั้นตอนการเปลี่ยนตัวจัดสรรภาระงานเครือข่ายที่อิงตามพูลเป้าหมายตัวอย่างต่อไปนี้ให้ใช้บริการแบ็กเอนด์ระดับภูมิภาคแทน
ก่อน: การจัดสรรภาระงานของเครือข่ายที่มีพูลเป้าหมาย
การติดตั้งใช้งานตัวจัดสรรภาระงานเครือข่ายตามบริการแบ็กเอนด์ที่ได้จะมีลักษณะดังนี้
หลังจาก: การจัดสรรภาระงานของเครือข่ายที่มีบริการแบ็กเอนด์ระดับภูมิภาค
ตัวอย่างนี้สมมติว่าคุณมีตัวจัดสรรภาระงานของเครือข่ายแบบกลุ่มเป้าหมายแบบดั้งเดิมที่มีอินสแตนซ์ 2 รายการในโซน us-central-1a และ 2 รายการในโซน us-central-1c
ขั้นตอนระดับสูงที่จำเป็นสำหรับการเปลี่ยนแปลงดังกล่าวมีดังนี้
- จัดกลุ่มอินสแตนซ์พูลเป้าหมายเป็นกลุ่มอินสแตนซ์ บริการแบ็กเอนด์ใช้ได้กับกลุ่มอินสแตนซ์ที่มีการจัดการหรือไม่มีการจัดการเท่านั้น โปรดทราบว่าแม้จะไม่มีการจํากัดจํานวนอินสแตนซ์ที่วางไว้ในพูลเป้าหมายกลุ่มเดียว แต่กลุ่มอินสแตนซ์ก็มีขนาดสูงสุด หากพูลเป้าหมายมีอินสแตนซ์มากกว่าจำนวนสูงสุดนี้ คุณจะต้องแยกแบ็กเอนด์ของพูลนั้นไปยังกลุ่มอินสแตนซ์หลายกลุ่ม หากการใช้งานที่มีอยู่มีพูลเป้าหมายสํารอง ให้สร้างกลุ่มอินสแตนซ์แยกต่างหากสําหรับอินสแตนซ์เหล่านั้น ระบบจะกำหนดค่าอินสแตนซ์นี้เป็นกลุ่มเฟลโอเวอร์
- สร้างบริการแบ็กเอนด์ระดับภูมิภาค หากการทําให้ใช้งานได้มีกลุ่มเป้าหมายสํารอง คุณจะต้องระบุอัตราส่วนการทดแทนขณะสร้างบริการแบ็กเอนด์ ซึ่งควรตรงกับอัตราส่วนการทดแทนที่กำหนดค่าไว้ก่อนหน้านี้สำหรับการทำให้พูลเป้าหมายใช้งานได้
- เพิ่มกลุ่มอินสแตนซ์ (ที่สร้างไว้ก่อนหน้านี้) ไปยังบริการแบ็กเอนด์ หากการทำให้ใช้งานได้มีพูลเป้าหมายสำรอง ให้ทำเครื่องหมายอินสแตนซ์เฟลโอเวอร์ที่เกี่ยวข้องด้วยแฟล็ก –failover เมื่อเพิ่มลงในบริการแบ็กเอนด์
- กำหนดค่ากฎการส่งต่อที่ชี้ไปยังบริการแบ็กเอนด์ใหม่ คุณมี 2 ตัวเลือกดังนี้
- (แนะนำ) อัปเดตกฎการส่งต่อที่มีอยู่ให้ชี้ไปยังบริการแบ็กเอนด์ หรือ
- สร้างการส่งต่อใหม่ซึ่งชี้ไปยังบริการแบ็กเอนด์ คุณจำเป็นต้องสร้างที่อยู่ IP ใหม่สำหรับฟรอนท์เอนด์ของตัวจัดสรรภาระงาน จากนั้นแก้ไขการตั้งค่า DNS เพื่อเปลี่ยนจากที่อยู่ IP ของโปรแกรมโหลดบาลานซ์ที่อิงตามพูลเป้าหมายเดิมเป็นที่อยู่ IP ใหม่อย่างราบรื่น
การตั้งค่าสภาพแวดล้อมด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID
ในโค้ดแล็บนี้
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การทำงานในโค้ดแล็บนี้แทบจะไม่เสียค่าใช้จ่ายใดๆ เลย โปรดทําตามวิธีการในส่วน "การล้างข้อมูล" ซึ่งจะแนะนําวิธีปิดใช้ทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินหลังจากบทแนะนํานี้ ผู้ใช้ใหม่ของ Google Cloud มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่มต้น Cloud Shell
แม้ว่า Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ในโค้ดแล็บนี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อดำเนินการเสร็จแล้ว คุณควรเห็นข้อมูลดังต่อไปนี้
เครื่องเสมือนนี้โหลดเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณทํางานทั้งหมดในแท็บนี้ได้โดยใช้เพียงเบราว์เซอร์
เข้าสู่ระบบ Cloudshell และตั้งค่า 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"
จาก Cloud Shell ให้สร้างอินสแตนซ์ 2
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"
จาก Cloud Shell ให้สร้างอินสแตนซ์ 3
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"
จาก Cloud Shell ให้สร้างอินสแตนซ์ 4
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
สร้างบริการแบ็กเอนด์และเชื่อมโยงกับการตรวจสอบประสิทธิภาพการทำงานที่สร้างขึ้นใหม่
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" แล้ว
เลือกตัวจัดสรรภาระงาน → หน้าเว็บ
โปรดทราบว่าระบบจะเก็บที่อยู่ IP ของชื่อกฎ "www-rule" ไว้และกำลังใช้ตัวจัดสรรภาระงาน "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 จนเสร็จสมบูรณ์
สิ่งที่เราได้พูดถึง
- ทำความเข้าใจประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค
- สร้างตัวจัดสรรภาระงานเครือข่ายที่มีพูลเป้าหมาย
- ดำเนินการตรวจสอบพูลเป้าหมาย
- สร้างบริการแบ็กเอนด์ระดับภูมิภาคโดยใช้กลุ่มอินสแตนซ์ที่ไม่มีการจัดการ
- ดำเนินการย้ายข้อมูลพูลเป้าหมายไปยังบริการแบ็กเอนด์
- ดำเนินการตรวจสอบบริการแบ็กเอนด์