1. บทนำ
คู่มือนี้แสดงวิธีการเปลี่ยนตัวจัดสรรภาระงานเครือข่ายที่มีอยู่จากแบ็กเอนด์ของพูลเป้าหมายไปเป็นบริการแบ็กเอนด์ระดับภูมิภาค
สิ่งที่คุณจะได้เรียนรู้
- ทำความเข้าใจประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค
- สร้างตัวจัดสรรภาระงานเครือข่ายที่มีพูลเป้าหมาย
- ดำเนินการตรวจสอบพูลเป้าหมาย
- สร้างบริการแบ็กเอนด์ระดับภูมิภาคโดยใช้อินสแตนซ์ที่ไม่มีการจัดการ
- ดำเนินการย้ายข้อมูลพูลเป้าหมายไปยังบริการแบ็กเอนด์
- ดำเนินการตรวจสอบบริการแบ็กเอนด์
สิ่งที่คุณต้องมี
- ประสบการณ์เกี่ยวกับตัวจัดสรรภาระงาน
2. บริการแบ็กเอนด์ระดับภูมิภาคสำหรับภาพรวมการจัดสรรภาระงานของเครือข่าย
การจัดสรรภาระงานของเครือข่ายช่วยให้ลูกค้าของ Google Cloud มีเครื่องมือที่มีประสิทธิภาพสำหรับการกระจายการรับส่งข้อมูลภายนอกในหมู่เครื่องเสมือนในภูมิภาค Google Cloud เมื่อเร็วๆ นี้เราจึงเพิ่มการรองรับสำหรับบริการแบ็กเอนด์ไปยัง Network Load Balancing เพื่อให้ลูกค้าจัดการการรับส่งข้อมูลขาเข้าและควบคุมลักษณะการทำงานของตัวจัดสรรภาระงานได้ง่ายขึ้น ซึ่งจะช่วยปรับปรุงขนาด อัตราความเร็ว ประสิทธิภาพ และความทนทานให้กับลูกค้าของเราในการติดตั้งใช้งาน ซึ่งทั้งหมดนี้จะเป็นการจัดการที่ง่ายดาย
ตอนนี้เรารองรับบริการแบ็กเอนด์ด้วย Network Load Balancing ซึ่งเป็นการเพิ่มประสิทธิภาพที่สำคัญกว่าพูลเป้าหมายที่ใช้ก่อนหน้านี้ บริการแบ็กเอนด์จะกำหนดวิธีที่ตัวจัดสรรภาระงานกระจายการจราจรของข้อมูลขาเข้าไปยังแบ็กเอนด์ที่แนบและให้การควบคุมลักษณะการทำงานของตัวจัดสรรภาระงานอย่างละเอียด
3. ประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค
การเลือกบริการแบ็กเอนด์ระดับภูมิภาคเป็นตัวจัดสรรภาระงานนำข้อดีหลายอย่างมาสู่สภาพแวดล้อมของคุณ
บริการแบ็กเอนด์ระดับภูมิภาคมีข้อดีดังนี้
- การตรวจสอบประสิทธิภาพการทำงานที่มีความแม่นยำสูงด้วยการตรวจสอบประสิทธิภาพการทำงานแบบรวม - บริการแบ็กเอนด์ระดับภูมิภาคช่วยให้คุณได้รับประโยชน์อย่างเต็มที่จากฟีเจอร์การตรวจสอบประสิทธิภาพการทำงานที่มีการจัดสรรภาระงาน ทำให้คุณไม่ต้องเผชิญกับข้อจำกัดของการตรวจสอบประสิทธิภาพการทำงานของ HTTP แบบเดิม ด้วยเหตุผลด้านการปฏิบัติตามข้อกำหนด การตรวจสอบประสิทธิภาพการทำงานของ TCP พร้อมการรองรับสตริงคำขอและการตอบกลับที่กำหนดเองหรือ HTTPS เป็นคำขอที่พบได้ทั่วไปสำหรับลูกค้าการจัดสรรภาระงานเครือข่าย
- ความยืดหยุ่นที่ดีขึ้นด้วยกลุ่มเฟลโอเวอร์ - ด้วยกลุ่มเฟลโอเวอร์ คุณจะสามารถกำหนดให้อินสแตนซ์หนึ่งเป็นอินสแตนซ์หลัก และอีกกลุ่มหนึ่งเป็นอินสแตนซ์รอง และเฟลโอเวอร์เมื่อประสิทธิภาพของอินสแตนซ์ในกลุ่มที่ใช้งานอยู่ต่ำกว่าเกณฑ์ที่กําหนด หากต้องการควบคุมกลไกเฟลโอเวอร์เพิ่มเติม คุณสามารถใช้ Agent เช่น keepalived หรือ pemaker และเปิดการตรวจสอบประสิทธิภาพการทำงานที่มีประสิทธิภาพหรือล้มเหลวตามการเปลี่ยนแปลงสถานะของอินสแตนซ์แบ็กเอนด์
- ความสามารถในการปรับขนาดและความพร้อมใช้งานสูงด้วยอินสแตนซ์ที่มีการจัดการ - บริการแบ็กเอนด์ระดับภูมิภาครองรับอินสแตนซ์ที่มีการจัดการเป็นแบ็กเอนด์ ตอนนี้คุณสามารถระบุเทมเพลตสำหรับอินสแตนซ์เครื่องเสมือนแบ็กเอนด์และใช้ประโยชน์จากการปรับขนาดอัตโนมัติตามการใช้งาน 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 ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID
ในภายหลัง
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell บนแถบเครื่องมือด้านขวาบนดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานทั้งหมดใน Lab นี้สามารถทำได้โดยใช้เบราว์เซอร์
เข้าสู่ระบบ Cloudshell และตั้งค่ารหัสโปรเจ็กต์
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
สร้างบริการแบ็กเอนด์และเชื่อมโยงกับการตรวจสอบประสิทธิภาพการทำงานที่สร้างขึ้นใหม่
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 จนจบ
หัวข้อที่ครอบคลุม
- ทำความเข้าใจประโยชน์ของบริการแบ็กเอนด์ระดับภูมิภาค
- สร้างตัวจัดสรรภาระงานเครือข่ายที่มีพูลเป้าหมาย
- ดำเนินการตรวจสอบพูลเป้าหมาย
- สร้างบริการแบ็กเอนด์ระดับภูมิภาคโดยใช้อินสแตนซ์ที่ไม่มีการจัดการ
- ดำเนินการย้ายข้อมูลพูลเป้าหมายไปยังบริการแบ็กเอนด์
- ดำเนินการตรวจสอบบริการแบ็กเอนด์