Updated May 8, 2026 A reserved IP can be moved from one VM to another without changing the address. Detach it from VM A, attach it to VM B — the IP stays the same, your DNS records stay valid, partner whitelists stay correct, and the only thing that changes is which server traffic lands on. This is the standard pattern for blue/green deploys, manual failover, and “promote a candidate VM by repointing the IP” workflows. This page covers reserved IPs only. Auto-assigned IPs cannot be moved — when you detach an auto-assigned IP, it returns to the regional pool and may be allocated to someone else. If you need this workflow, reserve an IP first.Documentation Index
Fetch the complete documentation index at: https://docs.rafftechnologies.com/llms.txt
Use this file to discover all available pages before exploring further.
Before you start
- A reserved IP — the Type column on the Public IPs tab will say “Reserved” (not “VM” or “Gateway”)
- A target VM in the same region as the IP — IPs are region-locked
- The target VM should not already have a public IP of the same type (IPv4 ↔ IPv4, IPv6 ↔ IPv6) — remove its existing one first, or assign the moved IP to the IPv6 slot if it’s free
1. Detach from the source VM
Two equivalent paths — pick whichever is closer:| From | How |
|---|---|
| VM detail → Network tab | Click Remove Public IP on the IP’s card. Confirm the dialog (it shows “reserved IP — will stay in your account”). |
| Networking → Public IPs | Find the IP’s row, click ⋮ → Detach from VM. |
| Networking diagram | Click the blue IP chip floating above the source VM → Detach from VM. |
— (or Unassigned) and the IP is ready to re-attach.
The address stays the same. Active SSH/RDP/HTTP sessions to the IP drop because they’re now hitting nothing — that’s expected. DNS records pointing at this IP keep resolving correctly; they just temporarily don’t have a backend until you complete step 2.
2. Check the target VM — and remove any existing public IP of the same type first
Once the target VM’s same-type slot is empty, attach via one of three equivalent paths:| From | How |
|---|---|
| VM detail → Network tab (target VM) | Click Add Public IP → choose Reserved IP → pick this IP from the list |
| Networking → Public IPs | Find the IP’s row, click ⋮ → Attach to VM → pick the target |
| Networking diagram | Click the unattached IP node → Attach to VM → pick the target (when this entry point is wired in the diagram) |
What this does not change
- The IP address itself — same
1.2.3.4before and after - DNS records — anything pointing at the IP is still valid; you don’t need to update DNS
- TLS certificates pinned to the IP — still valid
- Partner whitelists by IP — still match
- Your billing for the IP — $3/month continues uninterrupted
What it does change
- The MAC address behind the IP — it’s now the new VM’s NIC
- Active TCP connections — drop on detach. Clients reconnect; the new VM serves them
- Outbound source IP — outbound traffic from the new VM now appears to originate from the moved IP
- The Public IPs tab’s Assigned To column — points at the new VM
- The diagram — the blue IP chip moves above the new VM card
Blue/green deploy pattern
The canonical “swap the green VM in” workflow:- Build a fresh VM (the “green” candidate) — runs in parallel, no traffic
- Test green via its own auto-assigned IP, an internal VPC IP, or a hosts-file override
- When ready, detach the reserved IP from the current “blue” VM
- Attach it to the green VM — traffic immediately flips
- Keep blue running for a rollback window. If green is healthy, delete blue (or the reverse if not)
Failover pattern
When a primary VM is unhealthy and you keep a warm-standby:- Standby VM exists in the same region, configured identically, with no public IP
- Detect failure (manually or via monitoring)
- Detach the reserved IP from the failed primary
- Attach to the standby
- Standby starts serving the same address; clients reconnect
Related
Reserve a static IP
Make an IP movable by reserving it.
Manage from a VM
Per-VM Network tab walkthrough.
Release an IP
Stop billing when you don’t need the IP.
