- 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.
208 lines
5.6 KiB
Markdown
208 lines
5.6 KiB
Markdown
# Global Multi-Region Deployment Strategy
|
||
|
||
## Overview
|
||
|
||
This deployment strategy ensures:
|
||
1. **Validator nodes** in ALL non-US Commercial Azure regions
|
||
2. **Same validator VM size** across ALL regions (for consistency)
|
||
3. **RPC nodes** in ALL regions (core backbone, internally networked)
|
||
4. **System and sentry nodes** distributed as needed based on quotas
|
||
|
||
## Deployment Requirements
|
||
|
||
### Validator Nodes
|
||
- **Location**: ALL non-US Commercial Azure regions (42 regions)
|
||
- **VM Size**: `Standard_D4_v2` (4 vCPUs) - **SAME across ALL regions**
|
||
- **Count**: 1 validator per region (minimum for consensus)
|
||
- **Family**: Dv2 Family
|
||
- **Purpose**: Consensus and block validation
|
||
|
||
### RPC Nodes (Core Backbone)
|
||
- **Location**: ALL non-US Commercial Azure regions (42 regions)
|
||
- **VM Size**: `Standard_D8s_v6` (8 vCPUs) - **SAME across ALL regions**
|
||
- **Count**: 1 RPC node per region (core backbone)
|
||
- **Family**: Dsv6 Family
|
||
- **Purpose**: Internal networking, core backbone infrastructure
|
||
|
||
### System Nodes
|
||
- **Location**: ALL regions (required for AKS)
|
||
- **VM Size**: `Standard_D2_v2` (2 vCPUs)
|
||
- **Count**: 1 system node per region
|
||
- **Family**: Dv2 Family
|
||
- **Purpose**: AKS system pool
|
||
|
||
### Sentry Nodes
|
||
- **Location**: Distributed as needed based on quotas
|
||
- **VM Size**: `Standard_D4_v2` (4 vCPUs)
|
||
- **Count**: 0-1 per region (distributed)
|
||
- **Family**: Dv2 Family
|
||
- **Purpose**: P2P connectivity, can be distributed
|
||
|
||
## All Non-US Commercial Azure Regions (42)
|
||
|
||
1. Belgium Central
|
||
2. Brazil South
|
||
3. Brazil Southeast
|
||
4. Canada Central
|
||
5. Canada East
|
||
6. Central India
|
||
7. Chile Central
|
||
8. East Asia
|
||
9. France Central
|
||
10. France South
|
||
11. Germany North
|
||
12. Germany West Central
|
||
13. Indonesia Central
|
||
14. Israel Central
|
||
15. Italy North
|
||
16. Japan East
|
||
17. Japan West
|
||
18. Jio India Central
|
||
19. Jio India West
|
||
20. Korea Central
|
||
21. Korea South
|
||
22. Malaysia West
|
||
23. Mexico Central
|
||
24. New Zealand North
|
||
25. North Europe
|
||
26. Norway East
|
||
27. Norway West
|
||
28. Poland Central
|
||
29. Qatar Central
|
||
30. South Africa North
|
||
31. South Africa West
|
||
32. Southeast Asia
|
||
33. South India
|
||
34. Spain Central
|
||
35. Sweden Central
|
||
36. Switzerland North
|
||
37. Switzerland West
|
||
38. UAE Central
|
||
39. UAE North
|
||
40. UK South
|
||
41. UK West
|
||
42. West Europe
|
||
43. West India
|
||
|
||
## Per-Region Configuration
|
||
|
||
### Standard Configuration (All Regions)
|
||
|
||
| Node Type | VM Size | vCPUs | Family | Count | Required |
|
||
|-----------|---------|-------|--------|-------|----------|
|
||
| System | Standard_D2_v2 | 2 | Dv2 | 1 | Yes (AKS) |
|
||
| Validators | Standard_D4_v2 | 4 | Dv2 | 1 | Yes (ALL regions) |
|
||
| Sentries | Standard_D4_v2 | 4 | Dv2 | 0-1 | Optional |
|
||
| RPC | Standard_D8s_v6 | 8 | Dsv6 | 1 | Yes (ALL regions) |
|
||
| **Total** | | **14-18** | | **3-4** | |
|
||
|
||
### Quota Requirements Per Region
|
||
|
||
- **Dv2 Family**: 6-10 vCPUs (system: 2, validators: 4, sentries: 0-4)
|
||
- **Dsv6 Family**: 8 vCPUs (RPC: 8)
|
||
- **Total**: 14-18 vCPUs per region
|
||
|
||
## Total Deployment Summary
|
||
|
||
### Global Resources
|
||
|
||
- **Total Regions**: 42 (all non-US Commercial Azure)
|
||
- **Total Validator Nodes**: 42 (1 per region)
|
||
- **Total RPC Nodes**: 42 (1 per region - core backbone)
|
||
- **Total System Nodes**: 42 (1 per region - AKS)
|
||
- **Total Sentry Nodes**: 0-42 (distributed as needed)
|
||
- **Total Nodes**: 126-168 nodes
|
||
|
||
### Total vCPUs
|
||
|
||
- **Dv2 Family**: 252-420 vCPUs (6-10 per region × 42)
|
||
- **Dsv6 Family**: 336 vCPUs (8 per region × 42)
|
||
- **Total**: 588-756 vCPUs
|
||
|
||
## Key Design Principles
|
||
|
||
### 1. Validator Consistency
|
||
- **Same VM size** (`Standard_D4_v2`) across ALL regions
|
||
- Ensures consistent performance and behavior
|
||
- Simplifies monitoring and management
|
||
|
||
### 2. RPC Backbone
|
||
- **RPC nodes in ALL regions** for core backbone
|
||
- Internally networked for high availability
|
||
- Critical infrastructure component
|
||
|
||
### 3. Flexible Distribution
|
||
- **System nodes**: Required in all regions (AKS)
|
||
- **Sentry nodes**: Distributed based on quotas and needs
|
||
- Allows optimization per region
|
||
|
||
## Deployment Steps
|
||
|
||
### 1. Enable Global Multi-Region
|
||
|
||
```bash
|
||
cd terraform
|
||
cp terraform.tfvars.multi-region terraform.tfvars
|
||
# Edit terraform.tfvars to set enable_multi_region = true
|
||
```
|
||
|
||
### 2. Review Configuration
|
||
|
||
The configuration in `terraform/multi-region-global.tf` includes:
|
||
- All 42 non-US Commercial Azure regions
|
||
- Standard validator VM size across all regions
|
||
- RPC nodes in all regions
|
||
- Flexible system/sentry distribution
|
||
|
||
### 3. Deploy
|
||
|
||
```bash
|
||
terraform init
|
||
terraform plan -out=tfplan
|
||
terraform apply tfplan
|
||
```
|
||
|
||
## Monitoring
|
||
|
||
### Per-Region Metrics
|
||
|
||
- **Validator Health**: Monitor all 42 validator nodes
|
||
- **RPC Backbone**: Monitor all 42 RPC nodes
|
||
- **Quota Usage**: Track quota consumption per region
|
||
- **Performance**: Compare performance across regions
|
||
|
||
### Global Metrics
|
||
|
||
- **Total Validators**: 42 (all regions)
|
||
- **Total RPC Nodes**: 42 (all regions)
|
||
- **Geographic Distribution**: Global coverage
|
||
- **Consensus Health**: Monitor validator consensus
|
||
|
||
## Cost Estimate
|
||
|
||
### Monthly Costs (Approximate)
|
||
|
||
- **Per Region**: ~$200-300/month (3-4 nodes)
|
||
- **Total (42 regions)**: ~$8,400-12,600/month
|
||
|
||
*Note: Costs vary based on VM sizes, usage, and Azure pricing*
|
||
|
||
## Benefits
|
||
|
||
1. **Global Coverage**: 42 regions provide worldwide presence
|
||
2. **Consistent Validators**: Same VM size ensures uniform behavior
|
||
3. **Resilient Backbone**: RPC nodes in all regions for redundancy
|
||
4. **Flexible Scaling**: System/sentry nodes can be adjusted per region
|
||
5. **High Availability**: Geographic redundancy across all regions
|
||
|
||
## Next Steps
|
||
|
||
1. ✅ Configure global multi-region Terraform
|
||
2. ⏳ Verify quotas in all 42 regions
|
||
3. ⏳ Deploy primary regions first
|
||
4. ⏳ Deploy remaining regions
|
||
5. ⏳ Configure cross-region networking
|
||
6. ⏳ Set up global monitoring
|
||
7. ⏳ Deploy Besu network nodes
|
||
|