Prevents duplicate polling in multi-node production environment: - Replace DynamicSupervisor with Horde.DynamicSupervisor (distributed) - Replace Registry with Horde.Registry (cluster-aware) - Each device monitor runs on exactly ONE node across the cluster - Each SNMP poller runs on exactly ONE node across the cluster - Automatic failover when nodes go down - Automatic rebalancing when nodes join/leave Architecture: - Horde.Registry for process naming (distributed lookup) - Horde.DynamicSupervisor for DeviceMonitor processes - Horde.DynamicSupervisor for PollerWorker processes - Task.Supervisor remains local per-node for parallel operations - members: :auto enables automatic cluster discovery via libcluster Production impact: - 2 replicas = devices split ~50/50 across both pods - No duplicate SNMP polls to same device - If pod dies, surviving pod takes over all devices - When new pod starts, devices rebalance automatically Dependencies added: - horde ~> 0.9.0 (distributed supervisor/registry) - delta_crdt (Horde dependency for CRDT-based state) - libring (Horde dependency for consistent hashing) |
||
|---|---|---|
| .. | ||
| mix/tasks | ||
| towerops | ||
| towerops_web | ||
| towerops.ex | ||
| towerops_web.ex | ||