Azure
แผนภาพโครงสร้างพื้นฐาน Azure โดยใช้แพ็กเกจไอคอน HashiCorp Flight และ Carbon สำหรับเครือข่าย VNet ระบบประมวลผล และบริการที่จัดการ
VNet พร้อม App Gateway
หัวข้อที่มีชื่อว่า “VNet พร้อม App Gateway”Azure VNet พร้อมซับเน็ตสำหรับเกตเวย์ แอปพลิเคชัน และข้อมูล Application Gateway กระจายทราฟฟิกไปยัง VM Scale Sets
architecture-beta group vnet(carbon:virtual-private-cloud)[Azure VNet] group gwsub(carbon:ibm-cloud-subnets)[Gateway Subnet] in vnet group appsub(carbon:ibm-cloud-subnets)[App Subnet] in vnet group datasub(carbon:ibm-cloud-subnets)[Data Subnet] in vnet service appgw(carbon:gateway-security)[App Gateway] in gwsub service vm1(hashicorp-flight:azure-vms-color)[VM Scale Set] in appsub service vm2(hashicorp-flight:azure-vms-color)[VM Scale Set] in appsub service sqldb(carbon:data-base)[Azure SQL] in datasub appgw:R --> L:vm1 appgw:B --> T:vm2 vm1:R --> L:sqldb vm2:R --> L:sqldb
AKS พร้อม F5 XC เครือข่ายมัลติคลาวด์
หัวข้อที่มีชื่อว่า “AKS พร้อม F5 XC เครือข่ายมัลติคลาวด์”Azure Kubernetes Service ที่มี F5 Distributed Cloud เป็นส่วนหน้า สำหรับการเชื่อมต่อแอปพลิเคชันมัลติคลาวด์และความปลอดภัย
architecture-beta group xc(lucide:cloud)[F5 XC] group aks(hashicorp-flight:azure-aks-color)[AKS Cluster] service mcn(f5xc:multi-cloud-network-connect)[Network Connect] in xc service waap(f5xc:web-app-and-api-protection)[WAAP] in xc service ingress(carbon:gateway)[Ingress] in aks service app(hashicorp-flight:docker-color)[App Pods] in aks service cache(carbon:datastore)[Redis Cache] in aks service blob(hashicorp-flight:azure-blob-storage-color)[Blob Storage] mcn:R --> L:waap waap:R --> L:ingress ingress:R --> L:app app:B --> T:cache app:R --> L:blob
โทโพโลยีเครือข่าย Hub-Spoke
หัวข้อที่มีชื่อว่า “โทโพโลยีเครือข่าย Hub-Spoke”สถาปัตยกรรม Hub-Spoke ของ Azure พร้อมความปลอดภัยแบบรวมศูนย์และบริการร่วมที่เชื่อมต่อ VNet แบบ spoke หลายรายการ
flowchart TD
hub@{ icon: 'carbon:virtual-private-cloud', label: 'Hub VNet' }
fw@{ icon: 'carbon:firewall', label: 'Azure Firewall' }
vpn@{ icon: 'carbon:gateway-vpn', label: 'VPN Gateway' }
spoke1@{ icon: 'carbon:ibm-cloud-subnets', label: 'Spoke 1 - Web' }
spoke2@{ icon: 'carbon:ibm-cloud-subnets', label: 'Spoke 2 - App' }
spoke3@{ icon: 'carbon:ibm-cloud-subnets', label: 'Spoke 3 - Data' }
onprem@{ icon: 'lucide:server', label: 'On-Premises DC' }
onprem --> vpn
vpn --> hub
hub --> fw
fw --> spoke1
fw --> spoke2
fw --> spoke3NVA HA พร้อม Load Balancer — ทราฟฟิกอินเทอร์เน็ต
หัวข้อที่มีชื่อว่า “NVA HA พร้อม Load Balancer — ทราฟฟิกอินเทอร์เน็ต”ทราฟฟิกอินเทอร์เน็ตขาเข้าจะผ่าน public load balancer ซึ่งกระจายทราฟฟิกไปยังอินสแตนซ์ NVA ใน hub จากนั้น NVA จะส่งทราฟฟิกที่ตรวจสอบแล้วไปยังเวิร์กโหลดใน spoke ทราฟฟิกขาออกจาก spoke จะถูกส่งผ่าน internal load balancer กลับไปยัง NVA เพื่อออกไปยังอินเทอร์เน็ต ขั้นตอนที่มีหมายเลขแสดงเส้นทางขาเข้า (1-3) และเส้นทางขาออก (4-6)
flowchart TD
subgraph internet[Internet]
cloud@{ icon: 'lucide:globe', label: 'Internet' }
end
subgraph hub[Hub VNet 10.0.0.0/24]
subgraph gwsub[Gateway Subnet 10.0.0.0/27]
gw@{ icon: 'azure:virtual-network-gateways', label: 'VPN/ER GW' }
end
subgraph nvasub[NVA Subnet 10.0.0.32/27]
intlb@{ icon: 'azure:load-balancers', label: 'Internal LB 10.0.0.36' }
nva@{ icon: 'azure:firewalls', label: 'NVA' }
end
publb@{ icon: 'azure:load-balancers', label: 'Public LB' }
end
subgraph spoke1[Spoke1 10.1.1.0/24]
app1@{ icon: 'azure:virtual-machine', label: 'App Server' }
end
subgraph spoke2[Spoke2 10.1.2.0/24]
app2@{ icon: 'azure:virtual-machine', label: 'App Server' }
end
onprem@{ icon: 'lucide:building', label: 'On-Premises 192.168.0.0/16' }
cloud -->|1| publb
publb -->|2| nva
nva -->|3| app2
app2 -->|4| intlb
intlb -->|5| nva
nva -->|6| cloud
onprem --> gw
gw --> intlbNVA HA พร้อม Load Balancer — ทราฟฟิกจากสถานที่ทำงาน
หัวข้อที่มีชื่อว่า “NVA HA พร้อม Load Balancer — ทราฟฟิกจากสถานที่ทำงาน”ทราฟฟิกจากสถานที่ทำงาน (on-premises) จะเข้ามาผ่านเกตเวย์ VPN หรือ ExpressRoute และถูกส่งไปยัง internal load balancer ที่อยู่หน้าอินสแตนซ์ NVA หลายรายการ NVA จะตรวจสอบและส่งทราฟฟิกไปยังเวิร์กโหลดใน spoke ทราฟฟิกขาออกจะผ่าน internal load balancer เดิมเพื่อให้มั่นใจในความสมมาตรของการไหล และป้องกันปัญหาการเลือกเส้นทางแบบไม่สมมาตร
flowchart TD
subgraph hub[Hub VNet 10.0.0.0/24]
subgraph gwsub[Gateway Subnet 10.0.0.0/27]
gw@{ icon: 'azure:virtual-network-gateways', label: 'VPN/ER GW' }
end
subgraph nvasub[NVA Subnet 10.0.0.32/27]
intlb@{ icon: 'azure:load-balancers', label: 'Internal LB 10.0.0.36' }
nva1@{ icon: 'azure:firewalls', label: 'NVA' }
nva2@{ icon: 'azure:firewalls', label: 'NVA' }
end
end
subgraph spoke1[Spoke1 10.1.1.0/24]
app1@{ icon: 'azure:virtual-machine', label: 'App Server' }
end
subgraph spoke2[Spoke2 10.1.2.0/24]
app2@{ icon: 'azure:virtual-machine', label: 'App Server' }
end
onprem@{ icon: 'lucide:building', label: 'On-Premises 192.168.0.0/16' }
onprem -->|1| gw
gw -->|2| intlb
intlb -->|3| nva1
nva1 -->|4| app2
app2 -->|5| intlb
intlb -->|6| nva2
nva2 -->|7| gw
gw -->|8| onpremNVA HA พร้อม PIP/UDR — Active/Standby
หัวข้อที่มีชื่อว่า “NVA HA พร้อม PIP/UDR — Active/Standby”คู่ NVA แบบ active/standby ซึ่ง NVA ที่ทำงานอยู่ (NVA1) จะถือครอง public IP address เมื่อเกิดความล้มเหลว NVA2 แบบ standby จะเรียก Azure API เพื่อกำหนด public IP ใหม่และอัปเดต user-defined routes ให้ชี้มาที่ตัวเอง วิธีนี้หลีกเลี่ยงการใช้ load balancer แต่ต้องการการประสานงาน failover ในระดับ API
flowchart TD
subgraph internet[Internet]
cloud@{ icon: 'lucide:globe', label: 'Internet' }
end
subgraph hub[Hub VNet 10.0.0.0/24]
pip@{ icon: 'azure:public-ip-addresses', label: 'Public IP' }
subgraph gwsub[Gateway Subnet 10.0.0.0/27]
gw@{ icon: 'azure:virtual-network-gateways', label: 'VPN/ER GW' }
end
subgraph nvasub[NVA Subnet 10.0.0.32/27]
nva1@{ icon: 'azure:firewalls', label: 'NVA1 Active 10.0.0.37' }
nva2@{ icon: 'azure:firewalls', label: 'NVA2 Standby 10.0.0.38' }
end
end
subgraph spoke1[Spoke1 10.1.1.0/24]
app1@{ icon: 'azure:virtual-machine', label: 'App Server' }
end
subgraph spoke2[Spoke2 10.1.2.0/24]
app2@{ icon: 'azure:virtual-machine', label: 'App Server' }
end
onprem@{ icon: 'lucide:building', label: 'On-Premises 192.168.0.0/16' }
cloud -->|1| pip
pip -->|2| nva1
nva1 -->|3| app2
app2 -->|4| nva1
nva1 -->|5| cloud
onprem --> gwNVA HA พร้อม Azure Route Server
หัวข้อที่มีชื่อว่า “NVA HA พร้อม Azure Route Server”ความพร้อมใช้งานสูงแบบ BGP โดยใช้ Azure Route Server โดย Route Server จะสร้างความสัมพันธ์ eBGP กับอินสแตนซ์ NVA ทั้งสองและกำหนดโปรแกรมเส้นทางที่มีผลกับ spoke แบบไดนามิก ECMP กระจายโหลดระหว่าง NVA โดยไม่ต้องใช้ user-defined routes Route Server จะแทรกรายการ next-hop สำหรับ IP ของ NVA ทั้งสองเข้าไปใน VNet ทั้งหมดที่เชื่อมต่อกัน
flowchart TD
subgraph internet[Internet]
cloud@{ icon: 'lucide:globe', label: 'Internet' }
end
subgraph hub[Hub VNet 10.0.0.0/24]
publb@{ icon: 'azure:load-balancers', label: 'Public LB' }
subgraph gwsub[Gateway Subnet 10.0.0.0/27]
gw@{ icon: 'azure:virtual-network-gateways', label: 'VPN/ER GW' }
end
subgraph nvasub[NVA Subnet 10.0.0.32/27]
nva1@{ icon: 'azure:firewalls', label: 'NVA1 10.0.0.37' }
nva2@{ icon: 'azure:firewalls', label: 'NVA2 10.0.0.38' }
end
subgraph rssub[Route Server Subnet 10.0.0.64/27]
rs@{ icon: 'azure:virtual-router', label: 'Route Server' }
end
end
subgraph spoke1[Spoke1 10.1.1.0/24]
app1@{ icon: 'azure:virtual-machine', label: 'App Server' }
end
subgraph spoke2[Spoke2 10.1.2.0/24]
app2@{ icon: 'azure:virtual-machine', label: 'App Server' }
end
cloud -->|1| publb
publb -->|2| nva1
nva1 -->|3| app2
app2 -->|4| nva1
nva1 -->|5| cloud
rs <-.->|eBGP| nva1
rs <-.->|eBGP| nva2
gw --> rsNVA HA พร้อม Gateway Load Balancer
หัวข้อที่มีชื่อว่า “NVA HA พร้อม Gateway Load Balancer”การแทรก NVA แบบโปร่งใสโดยใช้ Azure Gateway Load Balancer ทราฟฟิกที่มุ่งหน้าไปยังแอปพลิเคชันจะถูกเบี่ยงเบนอย่างโปร่งใสจาก public standard load balancer ไปยัง Gateway LB ใน VNet ของ NVA แยกต่างหาก NVA จะตรวจสอบทราฟฟิกและส่งกลับไปยัง Gateway LB ซึ่งจะส่งต่อกลับไปยังแอปพลิเคชัน โดยไม่จำเป็นต้องมี VNet peering หรือ UDR ระหว่าง VNet ของ NVA และแอปพลิเคชัน
flowchart TD
subgraph internet[Internet]
cloud@{ icon: 'lucide:globe', label: 'Internet' }
end
subgraph nvavnet[NVA VNet]
gwlb@{ icon: 'azure:load-balancers', label: 'Gateway LB' }
nva1@{ icon: 'azure:firewalls', label: 'NVA' }
nva2@{ icon: 'azure:firewalls', label: 'NVA' }
end
subgraph appvnet[App VNet]
publb@{ icon: 'azure:load-balancers', label: 'Public Std LB' }
web@{ icon: 'azure:virtual-machine', label: 'Web Server' }
end
cloud -->|1| publb
publb -->|2| gwlb
gwlb -->|3| nva1
nva1 -->|4| gwlb
gwlb -->|5| publb
publb -->|6| web
gwlb --> nva2