- 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.
199 lines
5.4 KiB
Markdown
199 lines
5.4 KiB
Markdown
# 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?
|
|
|
|
1. **Quota Optimization**: Each VM family has separate quotas
|
|
2. **Cost Efficiency**: Dv2 and Dsv6 families may have better pricing
|
|
3. **Availability**: Reduces dependency on single family quota
|
|
4. **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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
terraform init
|
|
```
|
|
|
|
### 4. Plan Deployment
|
|
|
|
```bash
|
|
terraform plan -out=tfplan
|
|
```
|
|
|
|
### 5. Apply Deployment
|
|
|
|
```bash
|
|
terraform apply tfplan
|
|
```
|
|
|
|
## Benefits of Multi-Region Deployment
|
|
|
|
1. **High Availability**: Geographic redundancy
|
|
2. **Quota Utilization**: Uses available quotas across regions
|
|
3. **Performance**: Lower latency for regional users
|
|
4. **Disaster Recovery**: Automatic failover capability
|
|
5. **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
|
|
|
|
1. **Automatic**: Kubernetes cluster autoscaling
|
|
2. **Manual**: Traffic routing via Application Gateway
|
|
3. **DNS**: Failover via Cloudflare DNS
|
|
|
|
## Next Steps
|
|
|
|
1. ✅ Review quota availability in all regions
|
|
2. ✅ Configure multi-region Terraform
|
|
3. ⏳ Deploy primary region (West Europe)
|
|
4. ⏳ Deploy secondary regions (North Europe, France Central)
|
|
5. ⏳ Configure cross-region networking
|
|
6. ⏳ Set up global load balancing
|
|
7. ⏳ Configure monitoring and alerting
|
|
|
|
## Troubleshooting
|
|
|
|
### Quota Issues
|
|
|
|
If a region runs out of quota:
|
|
1. Check alternative VM families
|
|
2. Reduce node counts in that region
|
|
3. Add additional regions
|
|
4. Request quota increase for specific family
|
|
|
|
### Network Issues
|
|
|
|
If cross-region connectivity fails:
|
|
1. Verify VNet peering
|
|
2. Check NSG rules
|
|
3. Validate private endpoints
|
|
4. Review Application Gateway configuration
|
|
|