การใช้ตัวจัดสรรภาระงาน HTTP แบบไฮบริดเพื่อเข้าถึงกลุ่มปลายทางของเครือข่าย

การใช้ตัวจัดสรรภาระงาน HTTP แบบไฮบริดเพื่อเข้าถึงกลุ่มปลายทางของเครือข่าย

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ก.ย. 1, 2021
account_circleเขียนโดย Deepak Michael, Albert Colas Prunera

1 บทนำ

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

3312e69c63b02f73.png

ในห้องทดลองนี้ คุณจะได้เรียนรู้วิธีการสร้างกลุ่มปลายทางเครือข่าย (NEG) โดยใช้เครื่องเสมือน 2 เครื่องที่เข้าถึงได้จากตัวจัดสรรภาระงานทั่วโลกของ HTTP แม้ว่า NEG ในห้องปฏิบัติการจะอยู่ใน GCP แต่กระบวนการเดียวกันก็ใช้ในการสื่อสารกับทรัพยากรสาธารณะหรือทรัพยากรภายในองค์กรด้วยความสามารถในการเข้าถึง IP

สิ่งที่คุณจะได้เรียนรู้

  • สร้าง VPC ที่กำหนดเอง
  • สร้างเครื่องเสมือน (VM) 2 เครื่องที่ใช้เป็นกลุ่มปลายทางของเครือข่าย (NEG)
  • สร้างตัวจัดสรรภาระงานแบบผสม บริการแบ็กเอนด์ และการตรวจสอบประสิทธิภาพการทำงานที่เกี่ยวข้อง
  • สร้างกฎไฟร์วอลล์ที่อนุญาตการเข้าถึงตัวจัดสรรภาระงาน
  • ระบบจะสร้าง Cloud Router และ NAT เพื่ออนุญาตการอัปเดตแพ็กเกจจากอินเทอร์เน็ต
  • ตรวจสอบความสามารถในการเข้าถึงกลุ่มปลายทางของเครือข่าย

สิ่งที่คุณต้องมี

  • ความรู้เกี่ยวกับตัวจัดสรรภาระงาน

การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก

  1. ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • ชื่อโปรเจ็กต์คือตัวระบุส่วนตัวของคุณสำหรับโปรเจ็กต์นี้ ตราบใดที่คุณทำตามแบบแผนการตั้งชื่อ คุณก็สามารถใช้อะไรก็ได้ตามต้องการและอัปเดตชื่อได้ทุกเมื่อ
  • รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้เมื่อตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (ซึ่งปกติระบุไว้ว่าเป็น PROJECT_ID) ดังนั้นหากไม่ชอบ ให้สร้างรหัสแบบสุ่มขึ้นมาอีกรหัสหนึ่ง หรือคุณจะลองใช้รหัสโปรเจ็กต์ของคุณเองแล้วดูว่ารหัสโปรเจ็กต์พร้อมใช้งานหรือไม่ แล้วก็ "แช่แข็ง" เมื่อสร้างโปรเจ็กต์แล้ว
  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้

จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell บนแถบเครื่องมือด้านขวาบนดังนี้

bce75f34b2c53987.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้

f6ef2b5f13479f3a.png

เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 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) แล้วคลิก "เริ่มการกำหนดค่า"

70ccd168957e89d9.png

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

a55cd31dbeadfecc.png

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

f1589df43bf9e3e8.png

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

เลือก "ตรวจสอบและดำเนินการขั้นสุดท้าย" แล้วทำตามภาพหน้าจอที่ให้ไว้ และเลือก "สร้าง"

bfa39f7dc3ad91e1.png

การตรวจสอบประสิทธิภาพการทำงานของแบ็กเอนด์

จาก Cloud Console ให้ตรวจสอบว่าแบ็กเอนด์ "xlb" มีประสิทธิภาพดี โดยเป็นสีเขียวตามภาพหน้าจอที่ให้ไว้

131bbfc955d6166c.png

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" ตัวจัดสรรภาระงานและเลือกลบผ่านบริการเครือข่าย → การจัดสรรภาระงาน เมื่อเลือกแล้ว ให้เลือก "บริการแบ็กเอนด์ภายในองค์กร" &amp; ‘on-premise-health-check&#39; แล้วเลือกลบ

53d7463fe354fe66.png

จาก UI ของ Cloud Console ให้ไปที่ Compute Engine → กลุ่มปลายทางของเครือข่าย เมื่อเลือกแล้ว ให้ทำเครื่องหมาย "on-prem-neg-1" &amp; ‘on-prem-neg-2&#39; แล้วเลือกลบ

4d8f04264b44d03c.png

จากคอมโพเนนต์ลบของ 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