1. บทนำ
กลยุทธ์แบบผสมเป็นโซลูชันที่ใช้ได้จริงสำหรับคุณในการปรับตัวให้เข้ากับความต้องการของตลาดที่เปลี่ยนแปลง และปรับแอปพลิเคชันให้ทันสมัยโดยค่อยเป็นค่อยไป การสนับสนุนแบบผสมสำหรับตัวจัดสรรภาระงาน HTTP ทั้งภายนอกและภายในของ Google Cloud จะขยายการจัดสรรภาระงานในระบบคลาวด์ไปยังแบ็กเอนด์ที่อยู่ภายในองค์กรและในระบบคลาวด์อื่นๆ และเป็นตัวเปิดการใช้งานหลักสำหรับกลยุทธ์แบบผสม วิธีนี้อาจเป็นเพียงชั่วคราวเพื่อให้สามารถย้ายข้อมูลไปยังโซลูชันระบบคลาวด์ที่ทันสมัย หรืออุปกรณ์ติดตั้งโครงสร้างพื้นฐานด้านไอทีขององค์กรอย่างถาวร
ในห้องทดลองนี้ คุณจะได้เรียนรู้วิธีการสร้างกลุ่มปลายทางเครือข่าย (NEG) โดยใช้เครื่องเสมือน 2 เครื่องที่เข้าถึงได้จากตัวจัดสรรภาระงานทั่วโลกของ HTTP แม้ว่า NEG ในห้องปฏิบัติการจะอยู่ใน GCP แต่กระบวนการเดียวกันก็ใช้ในการสื่อสารกับทรัพยากรสาธารณะหรือทรัพยากรภายในองค์กรด้วยความสามารถในการเข้าถึง IP
สิ่งที่คุณจะได้เรียนรู้
- สร้าง VPC ที่กำหนดเอง
- สร้างเครื่องเสมือน (VM) 2 เครื่องที่ใช้เป็นกลุ่มปลายทางของเครือข่าย (NEG)
- สร้างตัวจัดสรรภาระงานแบบผสม บริการแบ็กเอนด์ และการตรวจสอบประสิทธิภาพการทำงานที่เกี่ยวข้อง
- สร้างกฎไฟร์วอลล์ที่อนุญาตการเข้าถึงตัวจัดสรรภาระงาน
- ระบบจะสร้าง Cloud Router และ NAT เพื่ออนุญาตการอัปเดตแพ็กเกจจากอินเทอร์เน็ต
- ตรวจสอบความสามารถในการเข้าถึงกลุ่มปลายทางของเครือข่าย
สิ่งที่คุณต้องมี
- ความรู้เกี่ยวกับตัวจัดสรรภาระงาน
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโปรเจ็กต์คือตัวระบุส่วนตัวของคุณสำหรับโปรเจ็กต์นี้ ตราบใดที่คุณทำตามแบบแผนการตั้งชื่อ คุณก็สามารถใช้อะไรก็ได้ตามต้องการและอัปเดตชื่อได้ทุกเมื่อ
- รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้เมื่อตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน 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 นี้สามารถทำได้โดยใช้เบราว์เซอร์
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
แม้ว่าจะไม่ใช่ข้อกำหนดสำหรับเครือข่ายแบบผสม แต่อินสแตนซ์การประมวลผลจำเป็นต้องใช้การเชื่อมต่ออินเทอร์เน็ตเพื่อดาวน์โหลดแอปพลิเคชันและการอัปเดต
ในงานนี้ คุณจะได้สร้างอินสแตนซ์ 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)
on-prem-neg-1
ให้สร้างอินสแตนซ์แรกภายในองค์กรจาก Cloud Shell
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'
on-prem-neg-2
ให้สร้างอินสแตนซ์แรกภายในองค์กรจาก Cloud Shell
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 สำหรับการกำหนดเส้นทางและการจัดสรรภาระงาน เราขอแนะนำให้โซนที่กำหนดค่าสอดคล้องกับโซนใดก็ตามที่เชื่อมโยงกับภูมิภาคของไฟล์แนบสำหรับการเชื่อมต่อถึงกัน/เกตเวย์ VPN สำหรับการวัดการจัดสรรภาระงานตามระยะใกล้ซึ่งใช้สำหรับการจัดสรรภาระงาน
จาก Cloud Shell ให้สร้าง on-prem-neg-1
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
จาก Cloud Shell ให้สร้าง on-prem-neg-2
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
ใน Codelab กลุ่มปลายทางของเครือข่ายคืออินสแตนซ์ GCE ที่เรียกใช้ Apache ใน GCP หรือจะระบุปลายทางภายในองค์กรหรือปลายทางอินเทอร์เน็ตเป็นปลายทางเครือข่ายก็ได้
ระบุที่อยู่ IP ของ GCE จาก Cloud Shell
gcloud compute instances list | grep -i on-prem
เชื่อมโยงกลุ่มปลายทางเครือข่ายกับที่อยู่ IP ของอินสแตนซ์ GCE ที่ระบุก่อนหน้านี้ในขั้นตอนก่อนหน้า สำหรับแต่ละเชิงลบ 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, บริการแบ็กเอนด์ และ ไฟร์วอลล์
ในขั้นตอนนี้ คุณจะสร้างบริการแบ็กเอนด์ส่วนกลางที่ชื่อว่า "บริการแบ็กเอนด์ภายในองค์กร" บริการแบ็กเอนด์นี้จะกำหนดวิธีที่ระนาบข้อมูลจะส่งการจราจรของข้อมูลไปยัง NEG
ขั้นแรก ให้สร้างการตรวจสอบประสิทธิภาพการทำงานที่มีชื่อว่า "การตรวจสอบประสิทธิภาพการทำงานภายในองค์กร" เพื่อตรวจสอบประสิทธิภาพของปลายทางใดก็ตามที่อยู่ใน NEG นี้ (ซึ่งก็คือปลายทางภายในองค์กรของคุณ)
จาก Cloud Shell
gcloud compute health-checks create http on-prem-health-check
สร้างบริการแบ็กเอนด์ชื่อ on-prem-backend-service และเชื่อมโยงกับการตรวจสอบประสิทธิภาพการทำงาน
จาก 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 ภายในองค์กร-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 ภายในองค์กร-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 ให้ไปที่การจัดสรรภาระงานและเลือก "สร้างตัวจัดสรรภาระงาน" ที่เลือก
ระบุการจัดสรรภาระงาน HTTP(S) แล้วคลิก "เริ่มการกำหนดค่า"
เลือก "จากอินเทอร์เน็ตไปยัง VM ของฉัน" ตามภาพหน้าจอด้านล่างที่อนุญาตการเข้าถึง VM แบบสาธารณะ
ระบุ "xlb" เป็นชื่อของตัวจัดสรรภาระงานและเลือกบริการแบ็กเอนด์ "on-prem-backend-service" ที่สร้างขึ้นก่อนหน้านี้ ตามด้วย "ตกลง" ตามภาพหน้าจอที่ให้ไว้
เลือกการกำหนดค่าฟรอนท์เอนด์ อัปเดตชื่อ "xlb-fe" แล้วเลือกที่อยู่ IPv4 แบบคงที่ที่สร้างไว้ก่อนหน้านี้ อย่าลืมมิเรอร์ภาพหน้าจอที่ให้ไว้
เลือก "ตรวจสอบและดำเนินการขั้นสุดท้าย" แล้วทำตามภาพหน้าจอที่ให้ไว้ และเลือก "สร้าง"
การตรวจสอบประสิทธิภาพการทำงานของแบ็กเอนด์
จาก Cloud Console ให้ตรวจสอบว่าแบ็กเอนด์ "xlb" มีประสิทธิภาพดี โดยเป็นสีเขียวตามภาพหน้าจอที่ให้ไว้
9. ตรวจสอบ NEG ที่เข้าถึงได้จากอินเทอร์เน็ต
เรียกคืนที่อยู่ IP แบบคงที่ภายนอกที่ใช้ขณะสร้างตัวจัดสรรภาระงานเป็น IP ส่วนหน้าของปลายทางเครือข่ายแล้ว มาตรวจสอบความถูกต้องของที่อยู่ IP ก่อนทำการทดสอบครั้งสุดท้ายกัน
จาก Cloud Shell
gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
เอาต์พุต (ที่อยู่ IP จะแตกต่างออกไป)
เอาต์พุตจาก Cloudshell
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
เมื่อใช้ที่อยู่ IP ฟรอนท์เอนด์ของตัวจัดสรรภาระงานร่วม คุณสามารถเข้าถึงแบ็กเอนด์ของปลายทางเครือข่ายได้ โปรดทราบว่าปลายทางใน Codelab คืออินสแตนซ์ GCE แต่คุณจะใช้กับปลายทางภายในองค์กร เป็นต้น
จากเวิร์กสเตชันภายใน ให้เปิดเทอร์มินัลและดำเนินการ Curl ไปยังที่อยู่ IP ของตัวจัดสรรภาระงาน
จากเวิร์กสเตชันของคุณ ให้ใช้ที่อยู่ IP ฟรอนท์เอนด์ สังเกต 200 OK และรายละเอียดหน้าที่ประกอบด้วยชื่ออินสแตนซ์เชิงลบและภูมิภาค
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
ขอแสดงความยินดี คุณทำให้ตัวจัดสรรภาระงาน L7 Hybrid ที่มี NEG ใช้งานได้เสร็จสมบูรณ์แล้ว
ขอแสดงความยินดีที่เรียน Codelab จนจบ
หัวข้อที่ครอบคลุม
- สร้าง VPC ที่กำหนดเอง
- สร้างเครื่องเสมือน (VM) 2 เครื่องที่ใช้เป็นกลุ่มปลายทางของเครือข่าย (NEG)
- สร้างตัวจัดสรรภาระงานแบบผสม บริการแบ็กเอนด์ และการตรวจสอบประสิทธิภาพการทำงานที่เกี่ยวข้อง
- สร้างกฎไฟร์วอลล์ที่อนุญาตการเข้าถึงตัวจัดสรรภาระงาน
- ตรวจสอบความสามารถในการเข้าถึงกลุ่มปลายทางของเครือข่าย
10. ขั้นตอนการทำความสะอาด
จาก UI ของ Cloud Console ให้ระบุและทำเครื่องหมาย "xlb" ตัวจัดสรรภาระงานและเลือกลบผ่านบริการเครือข่าย → การจัดสรรภาระงาน เมื่อเลือกแล้ว ให้เลือก "บริการแบ็กเอนด์ภายในองค์กร" & ‘on-premise-health-check' แล้วเลือกลบ
จาก 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