- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
5.4 KiB
5.4 KiB
Multi-Region Deployment Strategy
Overview
This deployment uses multi-region architecture with different VM families per region to maximize utilization of available quotas without requiring quota increases.
Subscription Information
- Subscription ID:
6d3c4263-bba9-497c-8843-eae6c4e87192 - Regions: West Europe, North Europe, France Central
- Strategy: Distribute workload across regions using different VM families
Available Quotas by Region
West Europe (Primary)
| VM Family | Available | Used | Total |
|---|---|---|---|
| Standard DSv3 Family | 4 | 6 | 10 |
| Standard D Family | 10 | 0 | 10 |
| Standard Dv2 Family | 10 | 0 | 10 |
| Standard Dv2 Promo Family | 10 | 0 | 10 |
| Standard Dsv6 Family | 10 | 0 | 10 |
| Standard Av2 Family | 10 | 0 | 10 |
Total Available: ~54 vCPUs across different families
Deployment Plan: West Europe
| Node Pool | VM Size | Family | Nodes | vCPUs | Quota Used |
|---|---|---|---|---|---|
| System | Standard_D2s_v3 | DSv3 | 2 | 4 | DSv3: 4/10 |
| Validators | Standard_D4_v2 | Dv2 | 2 | 8 | Dv2: 8/10 |
| Sentries | Standard_D4s_v6 | Dsv6 | 2 | 8 | Dsv6: 8/10 |
| RPC | Standard_D8_v2 | Dv2 | 1 | 8 | Dv2: 8/10 |
| Total | 7 | 28 | Within limits |
North Europe (Secondary)
| Node Pool | VM Size | Family | Nodes | vCPUs |
|---|---|---|---|---|
| System | Standard_D2s_v3 | DSv3 | 1 | 2 |
| Validators | Standard_D4_v2 | Dv2 | 1 | 4 |
| Sentries | Standard_D4s_v6 | Dsv6 | 1 | 4 |
| RPC | Standard_D8_v2 | Dv2 | 1 | 8 |
| Total | 4 | 18 |
France Central (Tertiary)
| Node Pool | VM Size | Family | Nodes | vCPUs |
|---|---|---|---|---|
| System | Standard_D2s_v3 | DSv3 | 1 | 2 |
| Validators | Standard_D4_v2 | Dv2 | 1 | 4 |
| Sentries | Standard_D4s_v6 | Dsv6 | 1 | 4 |
| RPC | Standard_D8_v2 | Dv2 | 1 | 8 |
| Total | 4 | 18 |
Total Multi-Region Deployment
| Region | Nodes | vCPUs |
|---|---|---|
| West Europe | 7 | 28 |
| North Europe | 4 | 18 |
| France Central | 4 | 18 |
| Total | 15 | 64 |
VM Family Distribution
Why Different Families?
- Quota Optimization: Each VM family has separate quotas
- Cost Efficiency: Dv2 and Dsv6 families may have better pricing
- Availability: Reduces dependency on single family quota
- Performance: Different families for different workloads
VM Family Specifications
| Family | Characteristics | Use Case |
|---|---|---|
| DSv3 | Premium SSD, latest gen | System nodes (low latency) |
| Dv2 | Standard SSD, proven | Validators, RPC (cost-effective) |
| Dsv6 | Premium SSD, latest gen | Sentries (high performance) |
Deployment Steps
1. Enable Multi-Region Deployment
cd terraform
cp terraform.tfvars.multi-region terraform.tfvars
2. Review Configuration
Edit terraform/multi-region.tf to adjust:
- Node counts per region
- VM families per region
- Regions to deploy
3. Initialize Terraform
terraform init
4. Plan Deployment
terraform plan -out=tfplan
5. Apply Deployment
terraform apply tfplan
Benefits of Multi-Region Deployment
- High Availability: Geographic redundancy
- Quota Utilization: Uses available quotas across regions
- Performance: Lower latency for regional users
- Disaster Recovery: Automatic failover capability
- Compliance: Data residency options
Network Architecture
Cross-Region Connectivity
- VNet Peering: Connect VNets across regions
- Private Endpoints: Secure cross-region communication
- Application Gateway: Global load balancing
- DNS: Multi-region DNS resolution
Traffic Distribution
- Primary: West Europe (28 vCPUs, 7 nodes)
- Secondary: North Europe (18 vCPUs, 4 nodes)
- Tertiary: France Central (18 vCPUs, 4 nodes)
Cost Optimization
Estimated Monthly Costs (Approximate)
| Region | Resource | Cost/Month |
|---|---|---|
| West Europe | 7 nodes (mixed families) | ~$500-700 |
| North Europe | 4 nodes (mixed families) | ~$300-400 |
| France Central | 4 nodes (mixed families) | ~$300-400 |
| Total | 15 nodes | ~$1,100-1,500 |
Note: Costs vary based on VM sizes, usage, and Azure pricing
Monitoring
Multi-Region Monitoring
- Azure Monitor: Cross-region metrics
- Log Analytics: Centralized logging
- Application Insights: End-to-end tracing
- Grafana: Multi-region dashboards
Disaster Recovery
Failover Strategy
- Automatic: Kubernetes cluster autoscaling
- Manual: Traffic routing via Application Gateway
- DNS: Failover via Cloudflare DNS
Next Steps
- ✅ Review quota availability in all regions
- ✅ Configure multi-region Terraform
- ⏳ Deploy primary region (West Europe)
- ⏳ Deploy secondary regions (North Europe, France Central)
- ⏳ Configure cross-region networking
- ⏳ Set up global load balancing
- ⏳ Configure monitoring and alerting
Troubleshooting
Quota Issues
If a region runs out of quota:
- Check alternative VM families
- Reduce node counts in that region
- Add additional regions
- Request quota increase for specific family
Network Issues
If cross-region connectivity fails:
- Verify VNet peering
- Check NSG rules
- Validate private endpoints
- Review Application Gateway configuration