การใช้ตัวจัดสรรภาระงาน HTTP แบบไฮบริดเพื่อเข้าถึงกลุ่มปลายทางของเครือข่าย
เกี่ยวกับ Codelab นี้
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