1. บทนำ
กลยุทธ์แบบไฮบริดเป็นโซลูชันที่ใช้งานได้จริงซึ่งจะช่วยให้คุณปรับตัวให้เข้ากับความต้องการของตลาดที่เปลี่ยนแปลงไป และค่อยๆ ปรับแอปพลิเคชันให้ทันสมัย การรองรับแบบไฮบริดสำหรับตัวจัดสรรภาระงาน HTTP(S) ภายนอกและภายในของ Google Cloud จะขยายการจัดสรรภาระงานระบบคลาวด์ไปยังแบ็กเอนด์ที่อยู่ในองค์กรและในระบบคลาวด์อื่นๆ และเป็นปัจจัยสำคัญที่ช่วยให้กลยุทธ์แบบไฮบริดของคุณทำงานได้ ซึ่งอาจเป็นเพียงการดำเนินการชั่วคราวเพื่อเปิดใช้การย้ายข้อมูลไปยังโซลูชันที่ทันสมัยบนระบบคลาวด์ หรืออาจเป็นส่วนหนึ่งของโครงสร้างพื้นฐานด้านไอทีขององค์กรอย่างถาวร

ในแล็บนี้ คุณจะได้เรียนรู้วิธีสร้างกลุ่มปลายทางเครือข่าย (NEG) โดยใช้เครื่องเสมือน 2 เครื่องที่เข้าถึงได้จากตัวจัดสรรภาระงาน HTTP(S) ภายนอกทั่วโลก แม้ว่า NEG ใน Lab จะอยู่ใน GCP แต่จะใช้ขั้นตอนเดียวกันในการสื่อสารกับทรัพยากรสาธารณะหรือทรัพยากรในองค์กรที่มีการเข้าถึง IP
สิ่งที่คุณจะได้เรียนรู้
- สร้าง VPC ที่กำหนดเอง
- สร้างเครื่องเสมือน (VM) 2 เครื่องที่ใช้เป็นกลุ่มปลายทางของเครือข่าย (NEG)
- สร้างตัวจัดสรรภาระงานแบบไฮบริด บริการแบ็กเอนด์ และการตรวจสอบสถานะที่เกี่ยวข้อง
- สร้างกฎไฟร์วอลล์ที่อนุญาตให้เข้าถึง Load Balancer
- ระบบจะสร้าง Cloud Router และ NAT เพื่ออนุญาตการอัปเดตแพ็กเกจจากอินเทอร์เน็ต
- ตรวจสอบการเข้าถึงกลุ่มปลายทางเครือข่าย
สิ่งที่คุณต้องมี
- ความรู้เกี่ยวกับตัวจัดสรรภาระงาน
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือตัวระบุส่วนตัวสำหรับโปรเจ็กต์นี้ คุณสามารถใช้ชื่อใดก็ได้และอัปเดตได้ทุกเมื่อ ตราบใดที่คุณปฏิบัติตามรูปแบบการตั้งชื่อ
- รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เมื่อตั้งค่าแล้วจะเปลี่ยนไม่ได้) คอนโซลระบบคลาวด์จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (และโดยทั่วไปจะระบุเป็น
PROJECT_ID) ดังนั้นหากไม่ชอบรหัสนี้ ให้สร้างรหัสแบบสุ่มอีกรหัส หรือคุณจะลองใช้รหัสของคุณเองและดูว่ามีรหัสนั้นหรือไม่ก็ได้ จากนั้นจะ "หยุด" เมื่อสร้างโปรเจ็กต์แล้ว
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน 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 ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดในห้องทดลองนี้ได้โดยใช้เพียงเบราว์เซอร์
2. ก่อนเริ่มต้น
ตรวจสอบว่าได้ตั้งค่ารหัสโปรเจ็กต์ใน Cloud Shell แล้ว
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
3. สร้างเครือข่าย VPC โหมดที่กำหนดเองใหม่
ในงานนี้ คุณจะได้สร้าง Virtual Private Cloud (VPC) ซึ่งเป็นรากฐานของเครือข่าย
เครือข่าย VPC
จาก Cloud Shell
gcloud compute networks create hybrid-network-lb --subnet-mode custom
สร้างซับเน็ต
จาก Cloud Shell
gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1
สร้างอินสแตนซ์ Cloud NAT
แม้ว่าอินเทอร์เน็ตจะไม่ใช่ข้อกำหนดสำหรับการเชื่อมต่อเครือข่ายแบบไฮบริด แต่ Compute Instance ต้องมีการเชื่อมต่ออินเทอร์เน็ตเพื่อดาวน์โหลดแอปพลิเคชันและการอัปเดต
ในงานนี้ คุณจะได้สร้าง Cloud Router และอินสแตนซ์ NAT ที่อนุญาตให้เชื่อมต่ออินเทอร์เน็ตกับอินสแตนซ์ VM ได้
สร้าง Cloud Router
จาก Cloud Shell
gcloud compute routers create crnat --network hybrid-network-lb --region us-west1
สร้าง Cloud NAT
จาก Cloud Shell
gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1
4. สร้างอินสแตนซ์ VM 2 รายการ
ในงานนี้ คุณจะสร้างอินสแตนซ์ VM 2 รายการที่เรียกใช้ Apache และในภายหลังในแล็บ อินสแตนซ์ VM เหล่านี้จะกลายเป็นกลุ่มปลายทางเครือข่าย (NEG)
สร้างอินสแตนซ์ในองค์กรเครื่องแรกจาก Cloud Shell on-prem-neg-1
gcloud compute instances create on-prem-neg-1 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
สร้างอินสแตนซ์ในองค์กรเครื่องแรกจาก Cloud Shell on-prem-neg-2
gcloud compute instances create on-prem-neg-2 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
5. สร้าง NEG ที่มีปลายทางในองค์กร
ก่อนอื่น ให้สร้าง NEG ชื่อ on-prem-neg-1 และ on-prem-neg-2 นอกจากนี้ คุณยังต้องระบุว่า LB ควรพิจารณาว่าเพื่อวัตถุประสงค์ในการกำหนดเส้นทางและการปรับสมดุลการรับส่งข้อมูล อุปกรณ์ปลายทางเหล่านี้อยู่ในโซน GCP us-west1-a เราขอแนะนำให้โซนที่กำหนดค่าสอดคล้องกับโซนที่เชื่อมโยงกับภูมิภาคของ Interconnect Attachment/VPN Gateway สำหรับการวัดการจัดสรรภาระงานตามความใกล้ชิดที่ใช้สำหรับการจัดสรรภาระงาน
สร้าง on-prem-neg-1 จาก Cloud Shell
gcloud compute network-endpoint-groups create on-prem-neg-1 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
สร้าง on-prem-neg-2 จาก Cloud Shell
gcloud compute network-endpoint-groups create on-prem-neg-2 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
ในโค้ดแล็บ กลุ่มปลายทางของเครือข่ายคืออินสแตนซ์ GCE ที่เรียกใช้ Apache ใน GCP หรือจะระบุปลายทางในองค์กรหรืออินเทอร์เน็ตเป็นปลายทางเครือข่ายก็ได้
ระบุที่อยู่ IP ของ GCE จาก Cloud Shell
gcloud compute instances list | grep -i on-prem
เชื่อมโยงกลุ่มปลายทางเครือข่ายกับที่อยู่ IP ของอินสแตนซ์ GCE ที่ระบุไว้ก่อนหน้านี้ในขั้นตอนก่อนหน้า สำหรับแต่ละ NEG ให้ทำดังนี้ on-prem-neg-1 & on-prem-neg-2.
จาก Cloud Shell ที่เชื่อมโยงกับ on-prem-neg-1 ให้อัปเดต x.x.x.x ด้วย IP ที่คุณระบุ
gcloud compute network-endpoint-groups update on-prem-neg-1 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
จาก Cloud Shell ที่เชื่อมโยงกับ on-prem-neg-2 ให้อัปเดต x.x.x.x ด้วย IP ที่คุณระบุ
gcloud compute network-endpoint-groups update on-prem-neg-2 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
6. สร้างการตรวจสอบประสิทธิภาพการทำงานของ HTTP, บริการแบ็กเอนด์ และไฟร์วอลล์
ในขั้นตอนนี้ คุณจะสร้างบริการแบ็กเอนด์ส่วนกลางชื่อ on-prem-backend-service บริการแบ็กเอนด์นี้กำหนดวิธีที่ Data Plane จะส่งการรับส่งข้อมูลไปยัง NEG
ก่อนอื่น ให้สร้างการตรวจสอบประสิทธิภาพการทำงานชื่อ on-prem-health-check เพื่อตรวจสอบประสิทธิภาพของปลายทางที่อยู่ใน NEG นี้ (นั่นคือปลายทางในองค์กร)
จาก Cloud Shell
gcloud compute health-checks create http on-prem-health-check
สร้างบริการแบ็กเอนด์ชื่อ on-prem-backend-service และเชื่อมโยงกับ Health Check
จาก Cloud Shell
gcloud compute backend-services create on-prem-backend-service \
--global \
--load-balancing-scheme=EXTERNAL \
--health-checks on-prem-health-check
ตัวจัดสรรภาระงาน HTTP(S) ภายนอกและแบ็กเอนด์จะทำการตรวจสอบสถานะที่มาจากซับเน็ต 35.191.0.0/16 และ 130.211.0.0/22 ดังนั้นจึงต้องมีกฎไฟร์วอลล์เพื่ออนุญาตการกำหนดเส้นทางตัวจัดสรรภาระงานไปยังแบ็กเอนด์
จาก Cloud Shell
gcloud compute firewall-rules create fw-allow-health-check \
--network=hybrid-network-lb \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
7. เชื่อมโยง NEG กับบริการแบ็กเอนด์
เพิ่ม NEG ที่มีชื่อ on-prem-neg-1 ลงในบริการแบ็กเอนด์นี้
จาก Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-1 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
เพิ่ม NEG ที่มี on-prem-neg-2 ลงในบริการแบ็กเอนด์นี้
จาก Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-2 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
สำรองที่อยู่ IP แบบคงที่ IPv4 ที่ใช้เพื่อเข้าถึงปลายทางเครือข่าย
จาก Cloud Shell
gcloud compute addresses create hybrid-lb-ip --project=$projectid --global
เรากำหนดค่า CLI เสร็จแล้ว มากำหนดค่าจาก Cloud Console ให้เสร็จกัน
8. สร้างตัวจัดสรรภาระงาน HTTP ภายนอกและเชื่อมโยงบริการแบ็กเอนด์
จาก Cloud Console ให้ไปที่ Load Balancing แล้วเลือก Create load balancer
ระบุการจัดสรรภาระงาน HTTP(S) แล้วคลิก "เริ่มการกำหนดค่า"

เลือก "จากอินเทอร์เน็ตไปยัง VM ของฉัน" ตามภาพหน้าจอด้านล่างที่อนุญาตให้เข้าถึง VM แบบสาธารณะ

ระบุ "xlb" เป็นชื่อของตัวจัดสรรภาระงาน แล้วเลือกบริการแบ็กเอนด์ที่สร้างไว้ก่อนหน้านี้ "on-prem-backend-service" จากนั้นเลือก "ตกลง" ตามภาพหน้าจอที่ให้ไว้

เลือกการกำหนดค่าส่วนหน้า อัปเดตชื่อ "xlb-fe" และเลือกที่อยู่ IPv4 แบบคงที่ที่สร้างไว้ก่อนหน้านี้ ตรวจสอบว่าตรงกับภาพหน้าจอที่ให้ไว้ 
เลือก "ตรวจสอบและสรุป" เพื่อให้ตรงกับภาพหน้าจอที่ให้ไว้ แล้วเลือกสร้าง

การตรวจสอบความสมบูรณ์ของแบ็กเอนด์
จากคอนโซลระบบคลาวด์ ตรวจสอบว่าแบ็กเอนด์ "xlb" มีสถานะเป็นปกติและมีสีเขียวตามภาพหน้าจอที่ให้ไว้

9. ตรวจสอบว่าเข้าถึง NEG จากอินเทอร์เน็ตได้
โปรดทราบว่าที่อยู่ IP แบบคงที่ภายนอกที่ใช้ขณะสร้างตัวจัดสรรภาระงานจะเป็น IP ส่วนหน้าของปลายทางเครือข่าย มาตรวจสอบความถูกต้องของที่อยู่ IP ก่อนที่จะทำการทดสอบขั้นสุดท้ายกัน
จาก Cloud Shell
gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
เอาต์พุต (ที่อยู่ IP ของคุณจะแตกต่างกัน)
เอาต์พุตจาก Cloud Shell
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
คุณสามารถเข้าถึงแบ็กเอนด์ของปลายทางเครือข่ายได้โดยใช้ที่อยู่ IP ของส่วนหน้าของตัวจัดสรรภาระงานส่วนกลาง โปรดทราบว่าใน Codelab ปลายทางคืออินสแตนซ์ GCE แต่คุณจะใช้ปลายทางนี้กับปลายทางในองค์กรได้ เช่น
จากเวิร์กสเตชันในพื้นที่ ให้เปิดเทอร์มินัลและเรียกใช้ curl ไปยังที่อยู่ IP ของตัวจัดสรรภาระงาน
จากเวิร์กสเตชัน ให้เรียกใช้ curl กับที่อยู่ IP ของฟรอนท์เอนด์ สังเกต 200 OK และรายละเอียดหน้าเว็บซึ่งประกอบด้วยชื่อและภูมิภาคของอินสแตนซ์ NEG
myworkstation$ curl -v 34.96.103.132
* Trying 34.96.103.132...
* TCP_NODELAY set
* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)
> GET / HTTP/1.1
> Host: 34.96.103.132
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 10 Aug 2021 01:21:54 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT
< ETag: "24-5c929ae7384f4"
< Accept-Ranges: bytes
< Content-Length: 36
< Content-Type: text/html
< Via: 1.1 google
<
Page on on-prem-neg-2 in us-west1-a
* Connection #0 to host 34.96.103.132 left intact
* Closing connection 0
ยินดีด้วย คุณติดตั้งใช้งาน Hybrid Load Balancer ระดับ L7 ที่มี NEG เรียบร้อยแล้ว
ขอแสดงความยินดีที่ทำ Codelab นี้เสร็จสมบูรณ์
สิ่งที่เราได้พูดถึง
- สร้าง VPC ที่กำหนดเอง
- สร้างเครื่องเสมือน (VM) 2 เครื่องที่ใช้เป็นกลุ่มปลายทางของเครือข่าย (NEG)
- สร้างตัวจัดสรรภาระงานแบบไฮบริด บริการแบ็กเอนด์ และการตรวจสอบสถานะที่เกี่ยวข้อง
- สร้างกฎไฟร์วอลล์ที่อนุญาตให้เข้าถึง Load Balancer
- ตรวจสอบการเข้าถึงกลุ่มปลายทางเครือข่าย
10. ขั้นตอนการล้างข้อมูล
จาก UI ของ Cloud Console ให้ระบุและเลือกตัวจัดสรรภาระงาน "xlb" แล้วเลือก "ลบ" ผ่านบริการเครือข่าย → การจัดสรรภาระงาน เมื่อเลือกแล้ว ให้เลือก "บริการแบ็กเอนด์ในองค์กร" และ "การตรวจสอบสถานะในองค์กร" จากนั้นเลือกลบ

จาก UI ของ Cloud Console ให้ไปที่ Compute Engine → กลุ่มปลายทางเครือข่าย เมื่อเลือกแล้ว ให้เลือก "on-prem-neg-1" และ "on-prem-neg-2" จากนั้นเลือกลบ

ลบคอมโพเนนต์ของแล็บจาก Cloud Shell
gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet gcloud compute routers delete crnat --region us-west1 --quiet gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet gcloud compute firewall-rules delete fw-allow-health-check --quiet gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet gcloud compute networks delete hybrid-network-lb --quiet gcloud compute addresses delete hybrid-lb-ip --global --quiet