- 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.
4.2 KiB
4.2 KiB
Connectivity Issue and Solutions
Problem Identified
No VNet Peering/Routing between:
- Nginx Proxy VNet:
az-p-wst-proxy-vnet(West Europe - 10.10.0.0/16) - Besu Node VNets: 5 US regions (10.1-10.5.0.0/16)
Impact
- ❌ Nginx cannot reach backend Besu nodes (100% packet loss)
- ❌ RPC requests timeout (Error 524)
- ❌ Backend nodes use private IPs only (no public access)
- ❌ Cross-region connectivity blocked
Current Architecture
West Europe (Nginx Proxy)
├── VNet: az-p-wst-proxy-vnet (10.10.0.0/16)
├── Subnet: 10.10.1.0/24
└── Nginx: 10.10.1.4 (public IP: 20.160.58.99)
US Regions (Besu Nodes)
├── Central US: 10.3.0.0/16 → 10.3.1.4
├── East US: 10.1.0.0/16 → 10.1.1.4
├── East US 2: 10.4.0.0/16 → 10.4.1.4
├── West US: 10.2.0.0/16 → 10.2.1.4
└── West US 2: 10.5.0.0/16 → 10.5.1.4
❌ No connectivity between regions
Solutions
Option 1: Cloudflare Tunnel on Backend VMs ⭐ Recommended
Deploy Cloudflare Tunnel on each Besu VM to expose RPC endpoints
Implementation
- Install
cloudflaredon each backend VM - Create Cloudflare Tunnel for each VM
- Configure tunnel to expose port 8545
- Update Nginx backend configuration to use Cloudflare Tunnel endpoints
Pros
- ✅ Quick to deploy (minutes per VM)
- ✅ No Azure networking changes required
- ✅ Already have Cloudflare Tunnel setup scripts
- ✅ Works with existing Cloudflare account
- ✅ Secure (encrypted tunnel)
Cons
- ⚠️ Additional Cloudflare Tunnel instances (5 tunnels)
- ⚠️ Cloudflare bandwidth usage
Steps
# For each backend VM:
1. SSH to VM
2. Run: setup-cloudflare-tunnel-backend.sh
3. Authenticate with Cloudflare
4. Create tunnel
5. Configure to expose port 8545
6. Update Nginx backend config with tunnel endpoint
Option 2: Azure VPN Gateway
Deploy VPN Gateways and establish site-to-site VPN connections
Implementation
- Deploy VPN Gateway in West Europe (Nginx region)
- Deploy VPN Gateways in each US region (Besu nodes)
- Establish site-to-site VPN connections
- Configure routing tables
- Update NSG rules for VPN traffic
Pros
- ✅ Native Azure solution
- ✅ Secure (IPSec VPN)
- ✅ No external dependencies
- ✅ Full network connectivity
Cons
- ⚠️ Complex setup (multiple gateways)
- ⚠️ Higher cost (VPN Gateway SKUs)
- ⚠️ Longer deployment time
- ⚠️ Requires VPN Gateway configuration
Estimated Cost
- VPN Gateway Basic: ~$0.19/hour per gateway
- 6 gateways (1 Nginx + 5 Besu): ~$1.14/hour = ~$820/month
- Data transfer: Additional costs
Option 3: VNet Peering
Not Available - User confirmed no VNet peering/routing
Would require:
- Peering between West Europe and each US region
- Global VNet peering (if supported)
- Route tables configuration
Recommendation
Option 1: Cloudflare Tunnel on Backend VMs
Why This Solution
- Fastest to implement - Scripts already exist
- No infrastructure changes - No Azure networking modifications
- Cost-effective - No additional Azure resources
- Already using Cloudflare - Nginx proxy already has tunnel
- Secure - Encrypted tunnel traffic
Implementation Plan
-
Deploy Cloudflare Tunnel on each backend VM
- Use existing script:
setup-cloudflare-tunnel-backend.sh - Create tunnel per VM
- Expose port 8545
- Use existing script:
-
Update Nginx Backend Configuration
- Replace private IPs with Cloudflare Tunnel endpoints
- Or use Cloudflare Tunnel IP ranges
-
Test Connectivity
- Verify Nginx can reach backend nodes
- Test RPC endpoint
Next Steps
- ✅ Documentation: Complete (this document)
- ⏳ Deploy Cloudflare Tunnels: On each backend VM
- ⏳ Update Nginx Config: Use tunnel endpoints
- ⏳ Test RPC Endpoint: Verify connectivity
Files Available
scripts/setup-cloudflare-tunnel-backend.sh- Backend VM tunnel setupCLOUDFLARE_TUNNEL_SETUP.md- Detailed setup instructionsconnectivity/README.md- Connectivity options documentation
Status: ⚠️ Connectivity Issue Identified, Solution Recommended
No VNet peering/routing exists. Cloudflare Tunnel on backend VMs is the recommended solution for Phase 1.