190 lines
7.0 KiB
Markdown
190 lines
7.0 KiB
Markdown
|
|
# 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
|
|||
|
|
|