เกี่ยวกับ Codelab นี้
1 ภาพรวม
Dynamic Port Allocation (DPA) เป็นฟีเจอร์ใหม่ใน Cloud NAT เมื่อเปิดใช้ DPA แล้ว Cloud NAT จะปรับขนาดการจัดสรรพอร์ตขึ้น/ลงแบบไดนามิกสำหรับอินสแตนซ์ตามความต้องการ DPA ได้รับการกำหนดค่าด้วยขีดจำกัดพอร์ตต่ำสุดและสูงสุด เพื่อไม่ให้ปรับขนาดพอร์ตให้ต่ำกว่าค่าขั้นต่ำ หรือปรับขนาดให้เกินกว่าขีดจำกัดสูงสุด วิธีนี้ช่วยให้อินสแตนซ์ที่อยู่หลังเกตเวย์ NAT สามารถปรับขนาดจำนวนการเชื่อมต่อแบบไดนามิกโดยไม่ต้องจัดสรรพอร์ตเพิ่มเติมให้กับอินสแตนซ์ทั้งหมดที่อยู่หลัง Cloud NAT
หากไม่มี DPA อินสแตนซ์ทั้งหมดที่อยู่หลัง Cloud NAT จะได้รับการจัดสรรจำนวนพอร์ตเท่ากันโดยไม่คำนึงถึงการใช้งาน ตามที่พารามิเตอร์ minPortsPerVm
กำหนดไว้
ดูข้อมูลเพิ่มเติมได้ที่ส่วนเอกสารประกอบเกี่ยวกับ NAT DPA
สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่าเกตเวย์ Cloud NAT เพื่อเตรียมพร้อมสำหรับ DPA
- วิธีตรวจสอบการจัดสรรพอร์ตโดยไม่ใช้ DPA
- วิธีเปิดใช้และกำหนดค่า DPA สำหรับเกตเวย์ NAT
- วิธีสังเกตผลกระทบของ DPA โดยเรียกใช้การเชื่อมต่อขาออกแบบคู่ขนาน
- วิธีเพิ่มกฎ NAT ไปยังเกตเวย์ NAT ที่เปิดใช้ DPA
- วิธีดูลักษณะการทำงานของ DPA กับกฎโดยการเรียกใช้การเชื่อมต่อขาออกไปยังปลายทางหลายแห่ง
สิ่งที่ต้องมี
- ความรู้พื้นฐานเกี่ยวกับ Google Compute Engine
- ความรู้เกี่ยวกับเครือข่ายและ TCP/IP ขั้นพื้นฐาน
- ความรู้พื้นฐานเกี่ยวกับบรรทัดคำสั่ง Unix/Linux
- การสำรวจเครือข่ายใน Google Cloud เช่น ห้องทดลองการสร้างเครือข่ายใน Google Cloud ก็จะเป็นประโยชน์อย่างมาก
- โปรเจ็กต์ Google Cloud ที่มี "การเข้าถึงอัลฟ่า" เปิดอยู่
- ความเข้าใจเกี่ยวกับข้อมูลเบื้องต้นของ Cloud NAT
2 การใช้ Google Cloud Console และ Cloud Shell
ในการโต้ตอบกับ GCP เราจะใช้ทั้ง Google Cloud Console และ Cloud Shell ในห้องทดลองนี้
คอนโซล Google Cloud
คุณติดต่อ Cloud Console ได้ที่ https://console.cloud.google.com
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้และคุณอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (ซึ่งปกติระบุไว้ว่าเป็น
PROJECT_ID
) ดังนั้นหากไม่ชอบ ให้สร้างรหัสแบบสุ่มขึ้นมาอีกรหัสหนึ่ง หรือคุณจะลองใช้รหัสโปรเจ็กต์ของคุณเองแล้วดูว่ารหัสโปรเจ็กต์พร้อมใช้งานหรือไม่ แล้วก็ "แช่แข็ง" หลังจากสร้างโปรเจ็กต์แล้ว - มีค่าที่ 3 คือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ให้ทำตาม "การล้าง" ดูได้ที่ตอนท้ายของ Codelab ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell บนแถบเครื่องมือด้านขวาบนดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานทั้งหมดใน Lab นี้สามารถทำได้โดยใช้เบราว์เซอร์
3 การตั้งค่าห้องทดลอง
สำหรับห้องทดลองนี้ คุณจะใช้โปรเจ็กต์ และสร้าง VPC 2 รายการที่มีซับเน็ตในแต่ละโปรเจ็กต์ คุณจะจองที่อยู่ IP ภายนอก จากนั้นสร้างและกำหนดค่าเกตเวย์ Cloud NAT (ด้วย Cloud Router) อินสแตนซ์ของผู้ผลิต 2 อินสแตนซ์ และอินสแตนซ์ของผู้บริโภค 2 อินสแตนซ์ หลังจากตรวจสอบลักษณะการทำงาน Cloud NAT เริ่มต้นแล้ว คุณจะเปิดใช้ Dynamic Port Allocation และตรวจสอบลักษณะการทำงาน และสุดท้าย คุณจะต้องกำหนดค่ากฎ NAT และสังเกตการโต้ตอบระหว่าง DPA กับกฎ NAT ด้วย
ภาพรวมสถาปัตยกรรมเครือข่าย:
4 สำรองที่อยู่ IP ภายนอก
เรามาสำรองที่อยู่ IP ภายนอกทั้งหมดที่จะใช้ในห้องทดลองนี้กัน การดำเนินการนี้จะช่วยคุณเขียนกฎ NAT และไฟร์วอลล์ที่เกี่ยวข้องทั้งหมดใน VPC ของผู้บริโภคและผู้ผลิต
จาก Cloud Shell
gcloud compute addresses create nat-address-1 nat-address-2 \ producer-address-1 producer-address-2 --region us-east4
เอาต์พุต:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
ป้อนข้อมูลที่อยู่ IP ที่จองไว้เป็นตัวแปรสภาพแวดล้อม
export natip1=`gcloud compute addresses list --filter name:nat-address-1 --format="get(address)"` export natip2=`gcloud compute addresses list --filter name:nat-address-2 --format="get(address)"` export producerip1=`gcloud compute addresses list --filter name:producer-address-1 --format="get(address)"` export producerip2=`gcloud compute addresses list --filter name:producer-address-2 --format="get(address)"`
คาดหวังว่าไม่พบผลลัพธ์ แต่เพื่อยืนยันว่าที่อยู่ได้รับการป้อนข้อมูลอย่างถูกต้อง ลองแสดงผลค่าของตัวแปรสภาพแวดล้อมทั้งหมด
env | egrep '^(nat|producer)ip[1-3]'
เอาต์พุต:
producerip1=<Actual Producer IP 1> producerip2=<Actual Producer IP 2> natip1=<NAT IP 1> natip2=<NAT IP 2>
5 การตั้งค่า VPC และอินสแตนซ์ของผู้ผลิต
ต่อไปนี้เราจะสร้างทรัพยากรสำหรับทรัพยากรของผู้ผลิต อินสแตนซ์ที่ทำงานใน VPC ของผู้ผลิตจะเสนอบริการด้านอินเทอร์เน็ตโดยใช้ IP สาธารณะ 2 รายการ "manufacturers-address-1" และ "ผู้ผลิต-ที่อยู่-2" ที่ใช้เวลาเพียง 2 นาที
ก่อนอื่น ให้สร้าง VPC จาก Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
เอาต์พุต:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/producer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 producer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
ต่อไป ให้สร้างซับเน็ตใน us-east4 จาก Cloud Shell
gcloud compute networks subnets create prod-net-e4 \ --network producer-vpc --range 10.0.0.0/24 --region us-east4
เอาต์พุต:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/prod-net-e4]. NAME REGION NETWORK RANGE STACK_TYPE IPV6_ACCESS_TYPE IPV6_CIDR_RANGE EXTERNAL_IPV6_CIDR_RANGE prod-net-e4 us-east4 producer-vpc 10.0.0.0/24 IPV4_ONLY
ถัดไป ให้สร้างไฟร์วอลล์ VPC เพื่ออนุญาตให้ที่อยู่ IP ของ NAT เข้าถึงอินสแตนซ์ของผู้ผลิตบนพอร์ต 8080 ได้
สำหรับกฎแรกจาก Cloud Shell ให้ทำดังนี้
gcloud compute firewall-rules create producer-allow-80 \ --network producer-vpc --allow tcp:80 \ --source-ranges $natip1,$natip2
เอาต์พุต:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-80]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED producer-allow-80 producer-vpc INGRESS 1000 tcp:80 False
ขั้นตอนถัดไปคือการสร้างอินสแตนซ์ของผู้ผลิต 2 รายการ
อินสแตนซ์ผู้ผลิตจะเรียกใช้การทำให้พร็อกซี nginx ใช้งานได้
ในการจัดสรรอินสแตนซ์ด้วยซอฟต์แวร์ที่จำเป็นทั้งหมดอย่างรวดเร็ว เราจะสร้างอินสแตนซ์ด้วยสคริปต์เริ่มต้นที่ติดตั้ง nginx โดยใช้ตัวจัดการแพ็กเกจ Debian APT
เราจะจัดสรรแต่ละอินสแตนซ์ด้วยที่อยู่ IP ที่จองไว้ที่แตกต่างกันเพื่อให้เขียนกฎ NAT ได้
สร้างอินสแตนซ์แรก จาก Cloud Shell
gcloud compute instances create producer-instance-1 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=prod-net-e4 \ --metadata startup-script="#! /bin/bash sudo apt update sudo apt install -y nginx mkdir /var/www/html/nginx/ cat <<EOF > /var/www/html/nginx/index.html <html><body><h1>This is producer instance 1</h1> </body></html> EOF"
เอาต์พุต:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/producer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-1 us-east4-a e2-medium 10.0.0.2 <Producer IP1> RUNNING
จากนั้นสร้างอินสแตนซ์ที่ 2 จาก Cloud Shell
gcloud compute instances create producer-instance-2 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=prod-net-e4 \ --metadata startup-script="#! /bin/bash sudo apt update sudo apt install -y nginx mkdir /var/www/html/nginx/ cat <<EOF > /var/www/html/nginx/index.html <html><body><h1>This is producer instance 2</h1> </body></html> EOF"
เอาต์พุต:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/producer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-2 us-east4-a e2-medium 10.0.0.3 <Producer IP2> RUNNING
6 ตั้งค่า VPC ของผู้บริโภค, Cloud NAT และอินสแตนซ์
ตอนนี้คุณสร้างบริการผู้ผลิตแล้ว ก็ถึงเวลาสร้าง VPC สำหรับผู้บริโภคและเกตเวย์ Cloud NAT
หลังจากสร้าง VPC และซับเน็ต เราจะเพิ่มกฎไฟร์วอลล์ขาเข้าแบบง่ายเพื่ออนุญาต IAP สำหรับช่วง IP ของแหล่งที่มา TCP ซึ่งจะทำให้เรา SSH ไปยังอินสแตนซ์ของผู้บริโภคได้โดยตรงโดยใช้ gcloud
จากนั้นเราจะสร้างเกตเวย์ Cloud NAT อย่างง่ายในโหมดการจัดสรรด้วยตนเองและที่อยู่ "nat-address-1" ที่สงวนไว้ ที่เกี่ยวข้อง ในส่วนต่อไปของ Codelab เราจะอัปเดตการกำหนดค่าของเกตเวย์เพื่อเปิดใช้การจัดสรรพอร์ตแบบไดนามิก และเพิ่มกฎที่กำหนดเองในภายหลัง
ก่อนอื่น ให้สร้าง VPC จาก Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
เอาต์พุต:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 consumer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp:22,tcp:3389,icmp
ต่อไป ให้สร้างซับเน็ตใน us-east4 จาก Cloud Shell
gcloud compute networks subnets create cons-net-e4 \ --network consumer-vpc --range 10.0.0.0/24 --region us-east4
เอาต์พุต:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/cons-net-e4]. NAME REGION NETWORK RANGE STACK_TYPE IPV6_ACCESS_TYPE IPV6_CIDR_RANGE EXTERNAL_IPV6_CIDR_RANGE cons-net-e4 us-east4 consumer-vpc 10.0.0.0/24 IPV4_ONLY
ถัดไป ให้สร้างกฎไฟร์วอลล์ VPC เพื่อให้ที่อยู่ของช่วง IAP เข้าถึงอินสแตนซ์ของผู้บริโภคบนพอร์ต 22 ได้
สำหรับกฎไฟร์วอลล์รายการแรก ให้เรียกใช้รายการต่อไปนี้จาก Cloud Shell
gcloud compute firewall-rules create consumer-allow-iap \ --network consumer-vpc --allow tcp:22 \ --source-ranges 35.235.240.0/20
เอาต์พุต:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/consumer-allow-iap]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED consumer-allow-iap consumer-vpc INGRESS 1000 tcp:22 False
ก่อนที่จะสร้างเกตเวย์ NAT เราต้องสร้างอินสแตนซ์ Cloud Router ก่อน (เราใช้หมายเลข ASN ส่วนตัว แต่ไม่เกี่ยวข้องกับกิจกรรมของห้องทดลองนี้) จาก Cloud Shell
gcloud compute routers create consumer-cr \ --region=us-east4 --network=consumer-vpc \ --asn=65501
เอาต์พุต:
Creating router [consumer-cr]...done. NAME REGION NETWORK consumer-cr us-east4 consumer-vpc
จากนั้นสร้างอินสแตนซ์เกตเวย์ NAT จาก Cloud Shell
gcloud compute routers nats create consumer-nat-gw \ --router=consumer-cr \ --router-region=us-east4 \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=nat-address-1
เอาต์พุต:
Creating NAT [consumer-nat-gw] in router [consumer-cr]...done.
โปรดทราบว่าระบบจะสร้างเกตเวย์ Cloud NAT โดยตั้งค่า minPortsPerVm
เป็น 64 โดยค่าเริ่มต้น
สร้างอินสแตนซ์ทดสอบของผู้บริโภค เราจะป้อนข้อมูล IP ผู้ผลิตที่จองไว้ที่นี่เพื่อให้อ้างอิงถึงภายในอินสแตนซ์ได้ในภายหลัง จาก Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=cons-net-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2 gcloud compute instances create consumer-instance-2 --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=cons-net-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2
เอาต์พุต:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/consumer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance-1 us-east4-a e2-medium 10.0.0.2 RUNNING Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/zones/us-east4-a/instances/consumer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance-2 us-east4-a e2-medium 10.0.0.3 RUNNING
7 ยืนยันลักษณะการทำงานเริ่มต้นของ Cloud NAT
ในจุดนี้ อินสแตนซ์ของผู้บริโภคจะใช้ลักษณะการทำงานเริ่มต้นของ Cloud NAT ซึ่งใช้ IP "nat-address-1" ที่สงวนไว้เดียวกัน สำหรับสื่อสารกับที่อยู่ภายนอกทั้งหมด และ Cloud NAT ยังไม่ได้เปิดใช้ DPA ด้วย
ลองตรวจสอบพอร์ตที่ Cloud NAT ได้จัดสรรอินสแตนซ์ของผู้ใช้โดยการเรียกใช้คำสั่งต่อไปนี้
gcloud compute routers get-nat-mapping-info consumer-cr --region=us-east4
ตัวอย่างเอาต์พุต
--- instanceName: consumer-instance-1 interfaceNatMappings: - natIpPortRanges: - <NAT Consumer IP1>:1024-1055 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 - natIpPortRanges: - <NAT Consumer IP1>:32768-32799 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 --- instanceName: consumer-instance-2 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1056-1087 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3 - natIpPortRanges: - <NAT Address IP1>:32800-32831 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3
จากเอาต์พุตข้างต้น Cloud NAT ได้จัดสรร 64 พอร์ตต่ออินสแตนซ์จาก IP ภายนอกเดียวกัน nat-address-1
มาตรวจสอบจำนวนการเชื่อมต่อที่เราเปิดพร้อมกันได้ก่อนเปิดใช้ DPA
SSH ไปยังอินสแตนซ์ผู้บริโภครายการแรก จาก Cloud Shell
gcloud compute ssh consumer-instance-1 --zone=us-east4-a
ตอนนี้คุณควรอยู่ใน Shell ของอินสแตนซ์แล้ว
ตัวอย่างเอาต์พุต (เอาต์พุตแบบเต็มถูกตัดเพื่อความกระชับ)
External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance-1:~$
จากภายในอินสแตนซ์ของผู้บริโภค ก่อนอื่นให้ดึงข้อมูลทั้ง IP ผู้ผลิตและป้อนข้อมูลเป็นตัวแปรสภาพแวดล้อม
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
จากนั้นพยายามขดดูอินสแตนซ์ของผู้สร้างทั้ง 2 รายการเพื่อให้แน่ใจว่าเราจะเข้าถึงอินสแตนซ์เหล่านั้นได้สำเร็จ
<username>@consumer-instance-1:~$ curl http://$producerip1/nginx/ <html><body><h1>This is producer instance 1</h1> </body></html> <username>@consumer-instance-1:~$ curl http://$producerip2/nginx/ <html><body><h1>This is producer instance 2</h1> </body></html>
คราวนี้มาลองสร้างการเชื่อมต่อแบบขนานจำนวนมากกับหนึ่งในอินสแตนซ์ของผู้สร้างโดยเรียกใช้ curl ผ่านลูป โปรดทราบว่า Cloud NAT ไม่อนุญาตให้มีการใช้ซ็อกเก็ตแบบปิดซ้ำเป็นเวลา 2 นาที ดังนั้น ตราบใดที่เราสามารถลองเชื่อมต่อหลายครั้งได้ภายใน 2 นาที เราก็จะสามารถจำลองการเชื่อมต่อแบบขนานด้วยวิธีนี้
เรียกใช้คำสั่งต่อไปนี้ในเซสชัน SSH ของอินสแตนซ์
while true; do for i in {1..64}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
คุณควรเปิดการเชื่อมต่อแบบขนาน 64 รายการได้สำเร็จ และสคริปต์ควรจะพิมพ์ข้อมูลต่อไปนี้
Connection # 64 successful Loop Done, Sleeping for 150s Connection # 64 successful Loop Done, Sleeping for 150s
หากต้องการดูว่าเราไม่สามารถทำการเชื่อมต่อแบบขนานเกินกว่า 64 รายการ ให้รอ 2 นาทีเพื่อให้ล้างซ็อคเก็ตเก่าทั้งหมดเรียบร้อยแล้ว จากนั้นปรับแต่งข้อความบรรทัดเดียวเดียวกันกับรายการต่อไปนี้ แล้วเรียกใช้อีกครั้ง
while true; do for i in {1..70}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
ตอนนี้คุณคงได้รับเอาต์พุตต่อไปนี้
Connection # 64 successful Connection # 65 failed Connection # 66 failed Connection # 67 failed Connection # 68 failed Connection # 69 failed Connection # 70 failed Loop Done, Sleeping for 150s
ซึ่งแสดงให้เห็นว่าในขณะที่การเชื่อมต่อ 64 รายการแรกสำเร็จ แต่การเชื่อมต่อ 6 รายการที่เหลือล้มเหลวเนื่องจากพอร์ตไม่พร้อมใช้งาน
มาลองแก้ปัญหาด้วยการออกจาก Shell ของ SSH แล้วเปิดใช้ DPA ในส่วนถัดไป
8 เปิดใช้ DPA และตรวจสอบลักษณะการทำงาน
เรียกใช้คำสั่ง gcloud ต่อไปนี้ซึ่งเปิดใช้ DPA ตั้งค่าการจัดสรรพอร์ตขั้นต่ำต่อ VM เป็น 64 และการจัดสรรพอร์ตสูงสุดเป็น 1024
gcloud alpha compute routers nats update consumer-nat-gw --router=consumer-cr \ --region=us-east4 --min-ports-per-vm=64 --max-ports-per-vm=1024 \ --enable-dynamic-port-allocation
ผลลัพธ์ที่ได้มีดังต่อไปนี้
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
ตอนนี้ให้เรียกใช้ get-nat-mapping-info
อีกครั้งเพื่อยืนยันว่าทั้ง 2 อินสแตนซ์ยังคงจัดสรรเพียง 64 พอร์ต
gcloud compute routers get-nat-mapping-info consumer-cr --region=us-east4
ตัวอย่างเอาต์พุต (ตัดทอนเพื่อความสั้นกระชับ)
--- instanceName: consumer-instance-1 ... - <NAT Consumer IP1>:1024-1055 numTotalNatPorts: 32 ... - natIpPortRanges: - <NAT Consumer IP1>:32768-32799 numTotalNatPorts: 32 ... --- instanceName: consumer-instance-2 ... - <NAT Address IP1>:1056-1087 numTotalNatPorts: 32 ... - <NAT Address IP1>:32800-32831 numTotalNatPorts: 32 ...
ไม่มีการเปลี่ยนแปลงมากนักในด้านการจัดสรรพอร์ต เนื่องจากอินสแตนซ์ยังไม่ได้ใช้พอร์ตใดๆ
ลองใช้ SSH อีกครั้งลงในอินสแตนซ์ ดังนี้
gcloud compute ssh consumer-instance-1 --zone=us-east4-a
ส่งออกตัวแปรสภาพแวดล้อม IP ของผู้ผลิตอีกครั้ง
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
และเรียกใช้ลูปก่อนหน้านี้อีกครั้งเพื่อจำลองการเชื่อมต่อแบบขนาน
while true; do for i in {1..70}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
ตอนนี้เราควรจะเห็นผลลัพธ์ต่อไปนี้
Connection # 64 successful Connection # 65 failed Connection # 66 failed Connection # 70 successful Loop Done, Sleeping for 150s
เกิดอะไรขึ้นที่นี่ Cloud NAT จะเพิ่มการจัดสรรพอร์ตเมื่อมีการเพิ่มการใช้งานพอร์ต แต่ต้องใช้เวลาสักพักในการตั้งโปรแกรมตลอดเลเยอร์เครือข่าย เราจึงเห็นการหมดเวลาของการเชื่อมต่อ 1-3 ครั้งก่อนที่เราจะทำการเชื่อมต่อได้สำเร็จ
เราได้ระบุระยะหมดเวลาที่เข้มงวดสำหรับ curl (5 วินาที) แต่แอปพลิเคชันที่มีระยะหมดเวลาที่นานขึ้นควรดำเนินการเชื่อมต่อให้เสร็จสมบูรณ์ได้ในขณะที่ DPA กำลังเพิ่มการจัดสรรพอร์ต
พฤติกรรมการเพิ่มจำนวนนี้สามารถเห็นได้ชัดเจนยิ่งขึ้นเมื่อเราเรียกใช้ลูปสำหรับความพยายามเชื่อมต่อ 1,024 ครั้ง
while true; do for i in {1..1024}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
ตอนนี้เราคาดว่าจะเห็นผลลัพธ์ต่อไปนี้
Connection # 64 successful Connection # 65 failed Connection # 66 failed Connection # 129 successful Connection # 130 failed Connection # 131 failed Connection # 258 successful Connection # 259 failed Connection # 260 failed Connection # 515 successful Connection # 516 failed Connection # 1024 successful Loop Done, Sleeping for 150s
เนื่องจาก Cloud NAT จะจัดสรรพอร์ตที่ยกกำลัง 2 ซึ่งทำให้มีการจัดสรรเป็น 2 เท่าในแต่ละขั้นตอน เราจึงเห็นระยะหมดเวลาของการเชื่อมต่อที่ไฮไลต์เมื่อกำลังไฟ 2 อยู่ระหว่าง 64 ถึง 1024
เนื่องจากเราตั้งค่า maxPortsPerVM
เป็น 1024 เราจึงคาดว่าจะทำการเชื่อมต่อได้สูงสุด 1, 024 รายการ เราสามารถทดสอบได้โดยการเรียกใช้ Curl Loop อีกครั้งด้วยจำนวนที่สูงกว่า 1024 (หลังจากรอ 2 นาทีเพื่อรีเซ็ตพอร์ตที่ไม่มีอัปเดต)
while true; do for i in {1..1035}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip1/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
และตามที่คาดไว้ เอาต์พุตจะแสดงการเชื่อมต่อหลังจากเวอร์ชัน 1, 024 ล้มเหลว
<truncated output> ... Connection # 1028 successful Connection # 1029 failed Connection # 1030 failed Connection # 1031 failed Connection # 1032 failed Connection # 1033 failed Connection # 1034 failed Connection # 1035 failed ... Loop Done, Sleeping for 150s
เมื่อตั้งค่า maxPortsPerVM
เป็น 1024 เราได้สั่งให้ Cloud NAT ไม่ปรับขนาดการจัดสรรพอร์ตเกินกว่า 1024 ต่อ VM แล้ว
หากเราออกจากเซสชัน SSH และเรียกใช้ get-nat-mapping-info
อีกครั้งอย่างรวดเร็วเพียงพอ เราจะเห็นการจัดสรรพอร์ตเพิ่มเติม
gcloud compute routers get-nat-mapping-info consumer-cr --region=us-east4
และดูเอาต์พุตต่อไปนี้
--- instanceName: consumer-instance-1 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1024-1055 - <NAT Address IP1>1088-1119 -<NAT Address IP1>:1152-1215 - <NAT Address IP1>:1280-1407 - <NAT Address IP1>:1536-1791 numTotalDrainNatPorts: 0 numTotalNatPorts: 512 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 - natIpPortRanges: - <NAT Address IP1>:32768-32799 - <NAT Address IP1>:32832-32863 - <NAT Address IP1>:32896-32959 - <NAT Address IP1>:33024-33151 - <NAT Address IP1>:33536-33791 numTotalDrainNatPorts: 0 numTotalNatPorts: 512 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 --- instanceName: consumer-instance-2 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1056-1087 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3 - natIpPortRanges: - <NAT Address IP1>:32800-32831 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3
โปรดสังเกตว่า consumer-instance-1
มีการจัดสรรพอร์ต 1024 พอร์ต แต่จัดสรร consumer-instance-2
เพียง 64 พอร์ต เรื่องนี้ไม่ง่ายนักเมื่อก่อน DPA และเน้นย้ำอย่างชัดเจนถึงประสิทธิภาพของ DPA สำหรับ Cloud NAT
หากรอ 2 นาทีก่อนเรียกใช้คำสั่ง get-nat-mapping-info
อีกครั้ง คุณจะสังเกตเห็นว่า consumer-instance-1
กลับมาทำงานที่ค่าต่ำสุดที่จัดสรรไว้เพียง 64 พอร์ต โดยไม่เพียงแสดงให้เห็นถึงความสามารถของ DPA ในการเพิ่มการจัดสรรพอร์ต แต่รวมถึงปล่อยทรัพยากรดังกล่าวเมื่อไม่ได้ใช้งานโดยอินสแตนซ์อื่นที่อยู่หลังเกตเวย์ NAT เดียวกันด้วย
9 ทดสอบกฎ Cloud NAT ด้วย DPA
นอกจากนี้ เรายังเพิ่งเปิดตัวฟังก์ชันกฎ NAT สำหรับ Cloud NAT ซึ่งช่วยให้ลูกค้าเขียนกฎที่ใช้ IP ของ NAT ที่เฉพาะเจาะจงสำหรับปลายทางภายนอกบางแห่งได้ โปรดดูข้อมูลเพิ่มเติมในหน้าเอกสารประกอบของกฎ NAT
ในแบบฝึกหัดนี้ เราสังเกตการโต้ตอบระหว่าง DPA และกฎ NAT ก่อนอื่น มากำหนดกฎ NAT เพื่อใช้ nat-address-2
เมื่อเข้าถึง producer-address-2
เรียกใช้คำสั่ง gcloud ต่อไปนี้ ซึ่งสร้างกฎ NAT โดยใช้
gcloud alpha compute routers nats rules create 100 \ --match='destination.ip == "'$producerip2'"' \ --source-nat-active-ips=nat-address-2 --nat=consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
คุณควรได้รับผลลัพธ์ต่อไปนี้
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
คราวนี้ลองเรียกใช้ get-nat-mapping-info
อีกครั้งเพื่อดูผลของกฎ NAT ใหม่
gcloud alpha compute routers get-nat-mapping-info consumer-cr --region=us-east4
ซึ่งควรแสดงผลดังนี้
--- instanceName: consumer-instance-1 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1024-1055 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleMappings: - natIpPortRanges: - <NAT Address IP2>:1024-1055 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleNumber: 100 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 - natIpPortRanges: - <NAT Address IP1>:32768-32799 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleMappings: - natIpPortRanges: - <NAT Address IP2>:32768-32799 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleNumber: 100 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2
โปรดทราบว่าตอนนี้เราได้จัดสรรพอร์ตเพิ่มเติม (ที่ 64 เช่นกัน ขั้นต่ำที่ระบุ) สำหรับ nat-address-2
ในลําดับชั้น ruleMappings
โดยเฉพาะ
จะเกิดอะไรขึ้นหากอินสแตนซ์เปิดการเชื่อมต่อจำนวนมากไปยังปลายทางที่กฎ NAT ระบุ มาดูกัน
ลองใช้ SSH อีกครั้งลงในอินสแตนซ์ ดังนี้
gcloud compute ssh consumer-instance-1 --zone=us-east4-a
ส่งออกตัวแปรสภาพแวดล้อม IP ของผู้ผลิตอีกครั้ง
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
และคราวนี้ลองเรียกใช้ลูป Curl อีกครั้งกับ producerip2
while true; do for i in {1..1024}; do curl -s -o /dev/null --connect-timeout 5 http://$producerip2/nginx/; if [ $? -ne 0 ] ; then echo -e "\nConnection # $i failed" ; else echo -en "\rConnection # $i successful"; fi; done; echo -e "\nLoop Done, Sleeping for 150s"; sleep 150; done
คุณควรได้รับผลลัพธ์ที่คล้ายกับตัวอย่างต่อไปนี้
Connection # 64 successful Connection # 65 failed Connection # 66 failed Connection # 129 successful Connection # 130 failed Connection # 131 failed Connection # 258 successful Connection # 259 failed Connection # 260 failed Connection # 515 successful Connection # 516 failed Connection # 1024 successful Loop Done, Sleeping for 150s
โดยพื้นฐานแล้ว คือการมิเรอร์การทดสอบก่อนหน้านี้ ลองออกจากเซสชัน SSH ของอินสแตนซ์และดูการแมปแนทอีกครั้ง
gcloud alpha compute routers get-nat-mapping-info consumer-cr --region=us-east4
ซึ่งควรแสดงผลดังนี้
--- instanceName: consumer-instance-1 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1024-1055 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleMappings: - natIpPortRanges: - <NAT Address IP2>:1024-1055 - <NAT Address IP2>:1088-1119 - <NAT Address IP2>:1152-1215 - <NAT Address IP2>:1280-1407 - <NAT Address IP2>:1536-1791 numTotalDrainNatPorts: 0 numTotalNatPorts: 512 ruleNumber: 100 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 - natIpPortRanges: - <NAT Address IP1>:32768-32799 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleMappings: - natIpPortRanges: - <NAT Address IP2>:32768-32799 - <NAT Address IP2>:32832-32863 - <NAT Address IP2>:32896-32959 - <NAT Address IP2>:33024-33151 - <NAT Address IP2>:33280-33535 numTotalDrainNatPorts: 0 numTotalNatPorts: 512 ruleNumber: 100 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 --- instanceName: consumer-instance-2 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1056-1087 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleMappings: - natIpPortRanges: - <NAT Address IP2>:1056-1087 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleNumber: 100 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3 - natIpPortRanges: - <NAT Address IP1>:32800-32831 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleMappings: - natIpPortRanges: - <NAT Address IP2>:32800-32831 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleNumber: 100 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.3 --- instanceName: consumer-instance-1 interfaceNatMappings: - natIpPortRanges: - <NAT Address IP1>:1024-1055 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleMappings: - natIpPortRanges: - <NAT Address IP2>:1024-1055 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleNumber: 100 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2 - natIpPortRanges: - <NAT Address IP1>:32768-32799 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleMappings: - natIpPortRanges: - <NAT Address IP2>:32768-32799 numTotalDrainNatPorts: 0 numTotalNatPorts: 32 ruleNumber: 100 sourceAliasIpRange: '' sourceVirtualIp: 10.0.0.2
จากข้อมูลข้างต้น จะเห็นว่า IP ของ NAT เริ่มต้นของ consumer-instance-1
( IP สำหรับ nat-address-1
) ยังคงจัดสรรไว้เพียง 64 พอร์ต แต่ IP ของกฎ NAT (IP สำหรับ nat-address-2
) มีการจัดสรรพอร์ต 1024 พอร์ต ตลอดเวลาที่ผ่านมา consumer-instance-2
ยังคงใช้การจัดสรรเริ่มต้น 64 พอร์ตสำหรับ IP ของ NAT ทั้งหมด
เพื่อฝึกฝน คุณสามารถทดสอบกรณีกลับกัน ให้ Cloud NAT จัดการพอร์ตพิเศษทั้งหมด จากนั้นเรียกใช้ Curl Loop กับ producerip1
และสังเกตผลกระทบที่มีต่อเอาต์พุตของ get-nat-mapping-info
10 ขั้นตอนการทำความสะอาด
คุณควรลบทรัพยากรทั้งหมดที่เชื่อมโยงกับ Codelab เพื่อหลีกเลี่ยงการเรียกเก็บเงินซ้ำ
ขั้นแรกให้ลบอินสแตนซ์ทั้งหมดก่อน
จาก Cloud Shell
gcloud compute instances delete consumer-instance-1 consumer-instance-2 \ producer-instance-1 producer-instance-2 \ --zone us-east4-a --quiet
ผลลัพธ์ที่ต้องการ :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-2].
จากนั้นให้ลบ Cloud Router จาก Cloud Shell
gcloud compute routers delete consumer-cr \ --region us-east4 --quiet
คุณควรได้ผลลัพธ์ต่อไปนี้
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/routers/consumer-cr].
ปล่อยที่อยู่ IP ภายนอกทั้งหมด จาก Cloud Shell
gcloud compute addresses delete nat-address-1 \ nat-address-2 producer-address-1 \ producer-address-2 --region us-east4 --quiet
คุณควรได้ผลลัพธ์ต่อไปนี้
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
ลบกฎไฟร์วอลล์ VPC จาก Cloud Shell
gcloud compute firewall-rules delete consumer-allow-iap \ producer-allow-80 --quiet
คุณควรได้ผลลัพธ์ต่อไปนี้
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/consumer-allow-iap]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-80].
ลบเครือข่ายย่อย จาก Cloud Shell
gcloud compute networks subnets delete cons-net-e4 \ prod-net-e4 --region=us-east4 --quiet
คุณควรได้ผลลัพธ์ต่อไปนี้
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/cons-net-e4]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/prod-net-e4].
สุดท้ายให้ลบ VPC จาก Cloud Shell
gcloud compute networks delete consumer-vpc \ producer-vpc --quiet
คุณควรได้ผลลัพธ์ต่อไปนี้
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/producer-vpc].
11 ยินดีด้วย
คุณดำเนินการตาม Cloud NAT DPA Lab เสร็จสมบูรณ์แล้ว
สิ่งที่คุณได้พูดคุยกัน
- วิธีตั้งค่าเกตเวย์ Cloud NAT เพื่อเตรียมพร้อมสำหรับ DPA
- วิธีตรวจสอบการจัดสรรพอร์ตโดยไม่ใช้ DPA
- วิธีเปิดใช้และกำหนดค่า DPA สำหรับเกตเวย์ NAT
- วิธีสังเกตผลกระทบของ DPA โดยเรียกใช้การเชื่อมต่อขาออกแบบคู่ขนาน
- วิธีเพิ่มกฎ NAT ไปยังเกตเวย์ NAT ที่เปิดใช้ DPA
- วิธีดูลักษณะการทำงานของ DPA กับกฎโดยการเรียกใช้การเชื่อมต่อขาออกไปยังปลายทางหลายแห่ง
ขั้นตอนถัดไป
- เรียกดูหน้าเอกสารประกอบการจัดสรรพอร์ตแบบไดนามิกของเรา
- ทดสอบด้วยการปรับแต่งระยะหมดเวลาของ NAT และค่าการจัดสรรพอร์ตกับแอปพลิเคชันของคุณ
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างเครือข่ายบน Google Cloud Platform
©Google, Inc. หรือบริษัทในเครือ สงวนลิขสิทธิ์ ห้ามเผยแพร่