A comprehensive multi-tier Azure infrastructure demonstrating enterprise-grade networking patterns with auto-scaling web applications, cross-VNet communication, and advanced load balancing. Built for AZ-104 Azure Administrator certification preparation and real-world enterprise deployment scenarios.
- π Multi-VNet Design: Cross-network communication with VNet peering
- βοΈ Dual Load Balancing: Layer 4 (Azure Load Balancer) + Layer 7 (Application Gateway)
- π Enterprise Security: WAF, NSGs, jump box pattern, private DNS
- π Auto-scaling: CPU-based VMSS scaling (1-10 instances)
- π·οΈ Service Discovery: Private DNS zone with comprehensive records
- π‘οΈ Zero-Trust Network: Segmented subnets with security group controls
- Azure CLI (2.50+)
- Bicep CLI
- SSH key pair
- Azure subscription with Contributor access
# Clone repository
git clone https://github.com/hfxcarl/azure-multivnet-architecture-demo.git
cd ./azure-multivnet-architecture-demo/
# Update parameters (add your SSH key and IP)
vi deployment/main.bicepparam
# Deploy infrastructure
./deploy.sh
# Test web applications
curl http://<application-gateway-ip>
curl http://<load-balancer-ip>
# Test cross-VNet connectivity
ssh azuser@jumpbox.az104lab.internal
ssh azuser@backend-vm.az104lab.internal
Component | Purpose | Configuration |
---|---|---|
VNet1 | Frontend/Web Tier | 10.0.0.0/16 with 3 subnets |
VNet2 | Backend/Database Tier | 10.1.0.0/16 with 2 subnets |
VMSS | Auto-scaling Web Servers | Ubuntu 22.04, Nginx, 1-10 instances |
Application Gateway | Layer 7 Load Balancer + WAF | WAF_v2 with OWASP 3.2 rules |
Azure Load Balancer | Layer 4 Load Balancer | Standard SKU with health probes |
Jump Box | Secure Management Access | Ubuntu 22.04 with Azure CLI |
Private DNS | Service Discovery | az104lab.internal domain |
VNet Peering | Cross-VNet Communication | Bidirectional with traffic forwarding |
Internet
β
ββββ Application Gateway (Layer 7 + WAF) ββββ 130.107.46.126
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β VNet1 (10.0.0.0/16) β
β β βββββββββββββββ ββββββββββββββββ βββββββββββββββ β
β β β Subnet1 β β Subnet2 β β AppGW Subnetβ β
β β β (VMSS) β β (Jump Box) β β β β
β β β 10.0.1.0/24 β β 10.0.2.0/24 β β 10.0.3.0/24 β β
β β βββββββββββββββ ββββββββββββββββ βββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β VNet Peering
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β VNet2 (10.1.0.0/16) β
β β ββββββββββββββββββ βββββββββββββββββββββββ β
β β β Backend Subnet β β Database Subnet β β
β β β (API Services)β β (MySQL Database) β β
β β β 10.1.1.0/24 β β 10.1.2.0/24 β β
β β ββββββββββββββββββ βββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββ Azure Load Balancer (Layer 4) ββββ 4.206.179.100
azure-multivnet-architecture/
βββ π deployment/
β βββ main.bicep # Complete infrastructure template
β βββ main.bicepparam # Parameters file
β βββ deploy.sh # Automated deployment script
βββ π scripts/
β βββ 01_create_jumpbox.sh # Jump box setup
β βββ 02_create_vmss.sh # VMSS web servers
β βββ 03_create_appgw.sh # Application Gateway + WAF
β βββ 04_create_private_dns.sh # Private DNS zone
β βββ 05_create_vnet2_peering.sh # VNet2 + Peering
βββ π docs/
β βββ architecture-guide.md # Detailed technical documentation
β βββ deployment-guide.md # Step-by-step deployment
β βββ troubleshooting.md # Common issues and solutions
β βββ π images/ # Architecture diagrams
βββ π tests/
β βββ connectivity-test.sh # Network connectivity validation
β βββ dns-test.sh # DNS resolution testing
β βββ performance-test.sh # Load testing scripts
βββ π README.md # This file
βββ π LICENSE # MIT License
βββ π .gitignore # Git ignore file
- VNet Peering: Bidirectional communication between VNets
- Network Security Groups: Granular traffic control
- Private DNS Zones: Internal service discovery
- Service Endpoints: Secure access to Azure services
- Dual Load Balancing: Layer 4 + Layer 7 traffic distribution
- Health Probes: Automated health monitoring
- Auto-scaling: CPU-based scaling policies
- Availability Zones: Multi-zone deployment support
- Web Application Firewall: OWASP Top 10 protection
- Network Segmentation: Multi-tier security model
- SSH Key Management: Secure authentication
- Jump Box Pattern: Controlled administrative access
- Azure Monitor Integration: Metrics and alerting
- Auto-scaling Events: Detailed scaling activity logs
- Health Monitoring: Application and infrastructure health
- Cost Optimization: Resource tagging and monitoring
# Run all tests
./tests/run-all-tests.sh
# Individual test categories
./tests/connectivity-test.sh # Network connectivity
./tests/dns-test.sh # DNS resolution
./tests/performance-test.sh # Load testing
- Cross-VNet Communication: SSH between VNet1 and VNet2
- DNS Resolution: Service discovery via private DNS
- Auto-scaling: CPU load generation and scaling observation
- Security: NSG rule validation and traffic filtering
- High Availability: Instance failure and recovery testing
This project demonstrates proficiency in key AZ-104 Azure Administrator domains:
- β Virtual networks and subnets
- β Network security groups and application security groups
- β VNet peering and service endpoints
- β Azure Load Balancer and Application Gateway
- β Private DNS zones and name resolution
- β Virtual machines and availability sets
- β Virtual machine scale sets
- β Azure Resource Manager templates (Bicep)
- β Network access to storage accounts
- β Storage service endpoints
- β Azure Monitor and Log Analytics
- β Network monitoring and diagnostics
Resource Type | Estimated Monthly Cost (CAD Central) |
---|---|
VMSS Instances (1-10) | $30 - $300 |
Application Gateway WAF_v2 | ~$150 |
Standard Load Balancer | ~$25 |
Jump Box + Backend VMs | ~$90 |
Public IP Addresses (3x) | ~$15 |
VNet Peering + Private DNS | ~$10 |
Total Estimated | $320 - $590/month |
π‘ Cost Optimization: Use auto-shutdown policies, spot instances for dev/test, and reserved instances for production workloads.
// Add microservice to VNet2
resource microserviceVm 'Microsoft.Compute/virtualMachines@2023-09-01' = {
name: 'microservice-vm'
// ... configuration
}
// Add DNS record
resource microserviceDns 'Microsoft.Network/privateDnsZones/A@2020-06-01' = {
parent: privateDnsZone
name: 'microservice'
// ... DNS configuration
}
- Deploy template in multiple Azure regions
- Configure global load balancing with Traffic Manager
- Implement cross-region VNet peering
- Set up geo-redundant DNS resolution
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Azure Bastion integration
- Key Vault for secrets management
- Container instances deployment
- Azure Monitor dashboards
- Terraform alternative templates
- PowerShell deployment scripts
This project is licensed under the MIT License - see the LICENSE file for details.
This repository demonstrates practical skills for:
- AZ-104: Microsoft Azure Administrator
- AZ-303/304: Microsoft Azure Architect Technologies/Design
- AZ-500: Microsoft Azure Security Technologies
Built with β€οΈ for the Azure community and AZ-104 certification journey