Files
smom-dbis-138/docs/deployment/VALIDATOR_RPC_DEPLOYMENT.md
defiQUG 1fb7266469 Add Oracle Aggregator and CCIP Integration
- 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.
2025-12-12 14:57:48 -08:00

190 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Validator and RPC Node Deployment Strategy
## Core Requirements
### Validator Nodes
- **Deployment**: ALL non-US Commercial Azure regions (42 regions)
- **VM Size**: `Standard_D4_v2` (4 vCPUs) - **MUST be the SAME across ALL regions**
- **VM Family**: Dv2 Family
- **Count**: 1 validator per region (minimum for consensus)
- **Purpose**: Consensus and block validation
- **Critical**: All validator nodes must use identical VM specifications
### RPC Nodes (Core Backbone)
- **Deployment**: ALL non-US Commercial Azure regions (42 regions)
- **VM Size**: `Standard_D8s_v6` (8 vCPUs) - **MUST be the SAME across ALL regions**
- **VM Family**: Dsv6 Family
- **Count**: 1 RPC node per region (core backbone)
- **Purpose**: Internal networking, core backbone infrastructure
- **Critical**: RPC nodes are the internally networked backbone - must be in ALL regions
### System Nodes
- **Deployment**: ALL regions (required for AKS)
- **VM Size**: `Standard_D2_v2` (2 vCPUs)
- **VM Family**: Dv2 Family
- **Count**: 1 system node per region
- **Purpose**: AKS system pool
### Sentry Nodes
- **Deployment**: Distributed as needed based on quotas
- **VM Size**: `Standard_D4_v2` (4 vCPUs)
- **VM Family**: Dv2 Family
- **Count**: 0-1 per region (distributed)
- **Purpose**: P2P connectivity
- **Note**: Can be distributed based on quota availability
## All 42 Non-US Commercial Azure Regions
| # | Region | Code | Validator | RPC | System | Sentry |
|---|--------|------|-----------|-----|--------|--------|
| 1 | Belgium Central | bc | ✅ | ✅ | ✅ | ⚪ |
| 2 | Brazil South | bs | ✅ | ✅ | ✅ | ⚪ |
| 3 | Brazil Southeast | bse | ✅ | ✅ | ✅ | ⚪ |
| 4 | Canada Central | cc | ✅ | ✅ | ✅ | ⚪ |
| 5 | Canada East | ce | ✅ | ✅ | ✅ | ⚪ |
| 6 | Central India | ci | ✅ | ✅ | ✅ | ⚪ |
| 7 | Chile Central | chc | ✅ | ✅ | ✅ | ⚪ |
| 8 | East Asia | ea | ✅ | ✅ | ✅ | ⚪ |
| 9 | France Central | fc | ✅ | ✅ | ✅ | ⚪ |
| 10 | France South | fs | ✅ | ✅ | ✅ | ⚪ |
| 11 | Germany North | gn | ✅ | ✅ | ✅ | ⚪ |
| 12 | Germany West Central | gwc | ✅ | ✅ | ✅ | ⚪ |
| 13 | Indonesia Central | ic | ✅ | ✅ | ✅ | ⚪ |
| 14 | Israel Central | ilc | ✅ | ✅ | ✅ | ⚪ |
| 15 | Italy North | in | ✅ | ✅ | ✅ | ⚪ |
| 16 | Japan East | je | ✅ | ✅ | ✅ | ⚪ |
| 17 | Japan West | jw | ✅ | ✅ | ✅ | ⚪ |
| 18 | Jio India Central | jic | ✅ | ✅ | ✅ | ⚪ |
| 19 | Jio India West | jiw | ✅ | ✅ | ✅ | ⚪ |
| 20 | Korea Central | kc | ✅ | ✅ | ✅ | ⚪ |
| 21 | Korea South | ks | ✅ | ✅ | ✅ | ⚪ |
| 22 | Malaysia West | mw | ✅ | ✅ | ✅ | ⚪ |
| 23 | Mexico Central | mc | ✅ | ✅ | ✅ | ⚪ |
| 24 | New Zealand North | nzn | ✅ | ✅ | ✅ | ⚪ |
| 25 | North Europe | ne | ✅ | ✅ | ✅ | ⚪ |
| 26 | Norway East | no | ✅ | ✅ | ✅ | ⚪ |
| 27 | Norway West | nw | ✅ | ✅ | ✅ | ⚪ |
| 28 | Poland Central | pc | ✅ | ✅ | ✅ | ⚪ |
| 29 | Qatar Central | qc | ✅ | ✅ | ✅ | ⚪ |
| 30 | South Africa North | san | ✅ | ✅ | ✅ | ⚪ |
| 31 | South Africa West | saw | ✅ | ✅ | ✅ | ⚪ |
| 32 | Southeast Asia | sea | ✅ | ✅ | ✅ | ⚪ |
| 33 | South India | si | ✅ | ✅ | ✅ | ⚪ |
| 34 | Spain Central | sc | ✅ | ✅ | ✅ | ⚪ |
| 35 | Sweden Central | swc | ✅ | ✅ | ✅ | ⚪ |
| 36 | Switzerland North | sn | ✅ | ✅ | ✅ | ⚪ |
| 37 | Switzerland West | sw | ✅ | ✅ | ✅ | ⚪ |
| 38 | UAE Central | uac | ✅ | ✅ | ✅ | ⚪ |
| 39 | UAE North | uan | ✅ | ✅ | ✅ | ⚪ |
| 40 | UK South | uks | ✅ | ✅ | ✅ | ⚪ |
| 41 | UK West | ukw | ✅ | ✅ | ✅ | ⚪ |
| 42 | West Europe | we | ✅ | ✅ | ✅ | ⚪ |
| 43 | West India | wi | ✅ | ✅ | ✅ | ⚪ |
**Legend**: ✅ = Required, ⚪ = Optional (distributed)
## Per-Region Configuration
### Standard Configuration
```hcl
node_count = {
system = 1 # Required for AKS
validators = 1 # Required in ALL regions (SAME VM size)
sentries = 0 # Optional, distributed as needed
rpc = 1 # Required in ALL regions (core backbone)
}
vm_families = {
system = "Standard_D2_v2" # 2 vCPUs - Dv2 Family
validators = "Standard_D4_v2" # 4 vCPUs - Dv2 Family (SAME across ALL)
sentries = "Standard_D4_v2" # 4 vCPUs - Dv2 Family (distributed)
rpc = "Standard_D8s_v6" # 8 vCPUs - Dsv6 Family (SAME across ALL)
}
```
### Quota Requirements Per Region
- **Dv2 Family**: 6 vCPUs (system: 2, validators: 4, sentries: 0)
- **Dsv6 Family**: 8 vCPUs (RPC: 8)
- **Total**: 14 vCPUs per region (minimum)
With sentries:
- **Dv2 Family**: 10 vCPUs (system: 2, validators: 4, sentries: 4)
- **Dsv6 Family**: 8 vCPUs (RPC: 8)
- **Total**: 18 vCPUs per region (with sentries)
## Total Deployment Summary
### Global Resources
- **Total Regions**: 42 (all non-US Commercial Azure)
- **Total Validator Nodes**: 42 (1 per region, SAME VM size)
- **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
**Minimum (without sentries)**:
- **Dv2 Family**: 252 vCPUs (6 per region × 42)
- **Dsv6 Family**: 336 vCPUs (8 per region × 42)
- **Total**: 588 vCPUs
**Maximum (with sentries)**:
- **Dv2 Family**: 420 vCPUs (10 per region × 42)
- **Dsv6 Family**: 336 vCPUs (8 per region × 42)
- **Total**: 756 vCPUs
## Key Design Principles
### 1. Validator Consistency
- **Same VM size** (`Standard_D4_v2`) across ALL 42 regions
- Ensures consistent performance and behavior
- Simplifies monitoring and management
- Critical for consensus reliability
### 2. RPC Backbone
- **RPC nodes in ALL 42 regions** for core backbone
- Internally networked for high availability
- Critical infrastructure component
- Same VM size (`Standard_D8s_v6`) across all regions
### 3. Flexible Distribution
- **System nodes**: Required in all regions (AKS)
- **Sentry nodes**: Distributed based on quotas and needs
- Allows optimization per region
## Deployment Configuration
The configuration is defined in `terraform/multi-region-global.tf`:
- Uses `local.standard_validator_vm_size = "Standard_D4_v2"` for all validators
- Uses `local.standard_rpc_vm_size = "Standard_D8s_v6"` for all RPC nodes
- Automatically generates configuration for all 42 regions
- Ensures consistency across all regions
## Monitoring
### Validator Monitoring
- Monitor all 42 validator nodes
- Ensure all use `Standard_D4_v2`
- Track consensus health across regions
- Alert on any validator VM size deviations
### RPC Backbone Monitoring
- Monitor all 42 RPC nodes
- Ensure all use `Standard_D8s_v6`
- Track internal networking health
- Monitor cross-region connectivity
## Benefits
1. **Consistent Validators**: Same VM size ensures uniform behavior
2. **Resilient Backbone**: RPC nodes in all regions for redundancy
3. **Global Coverage**: 42 regions provide worldwide presence
4. **Flexible Scaling**: System/sentry nodes can be adjusted per region
5. **High Availability**: Geographic redundancy across all regions