How To Use Floating IPs on DigitalOcean
A DigitalOcean Floating IP is a publicly-accessible static IP address that you can assign to a Droplet. It provides an additional static address you can use to access a Droplet without replacing or changing the Droplet's original public IP.
Floating IPs can be instantly remapped from one Droplet to another in the same datacenter. This functionality is available via both the DigitalOcean Control Panel and the DigitalOcean API. You can use the API for automatic reassignment, like a failover mechanism as part of a high availability server infrastructure.
When Should I Use Floating IPs?
The instant remapping capability of Floating IPs allows you to add redundancy to the entry point, or gateway, to your servers. This is a key component in a high availability server infrastructure, which is a setup with no single points of failure. A complete HA setup requires redundancy at every layer of your infrastructure, including your application and database servers.
DigitalOcean Floating IPs At a Glance
- Cost: Free when assigned to a Droplet. $.006/hour when unassigned.
- Regional availability: All regions.
- Additional details:
- Floating IPs are created in specific datacenters and can only be assigned to Droplets within the same datacenter.
- A Droplet must have an anchor IP before a Floating IP can be assigned to it. Droplets created after October 20, 2015 automatically have an anchor IP, and you can create an anchor IP on older Droplets.
Managing DigitalOcean Floating IPs
To manage your Floating IPs via the DigitalOcean Control Panel, click the Networking link in the main navigation, then choose Floating IPs. When you have no Floating IPs, you'll be invited to choose a Droplet and assign one:
To reserve and assign a Floating IP to one of your Droplets, locate it using the Search for a Droplet, then click the Assign Floating IP button. Floating IPs are free to use as long as they are attached to a Droplet.
If you prefer to reserve a floating IP address without assigning it yet, use the click here link in the header text. Due to limited IPv4 availability, we charge $0.006 per hour for floating IPs that have been reserved but not assigned to a Droplet.
Note: If you assign a Floating IP to a Droplet that was created before October 20, 2015, you will be presented with a modal message including instructions for enabling Floating IPs with older Droplets.
After a few moments, you will have a new Floating IP that points to the Droplet that you selected:
Once you have at least one Floating IP, this page will display a list of your Floating IPs, which includes the following details about each entry:
- Address: The Floating IP address, which is how it can be accessed and also how it is internally identified.
- Datacenter: The datacenter in which the Floating IP was created. A Floating IP can only be assigned to Droplets within the same datacenter.
- Droplet: The Droplet that the Floating IP is assigned to. Requests sent to the Floating IP address will be directed to this Droplet. This can also be set to "Unassigned", which means the Floating IP is reserved but will not pass network traffic to any Droplet.
From here, you can choose to:
- Reassign the Floating IP to a different Droplet within the same datacenter.
- Unassign the Floating IP. Once it is unassigned, you will be charged until it is deleted or reassigned.
- Delete the Floating IP from your account.
Droplet Anchor IPs
Network traffic between a Floating IP and a Droplet flows through an anchor IP, which is an IP address aliased to the Droplet's public network interface (
eth0). As such, a Droplet must have an anchor IP before you can assign a Floating IP to it. Droplets created after October 20, 2015 automatically have an anchor IP, and you can add an anchor IP to older Droplets to use a Floating IP with them.
An anchor IP is only accessible to the Droplet that it belongs to and the Floating IP that is assigned to the Droplet. You should bind any public services that you want to make highly available through a Floating IP to the anchor IP.
For example, if you are using a Floating IP in an active/passive load balancer setup, you should bind your load balancer services to their respective Droplet anchor IPs so they can only be accessed via the Floating IP address. This prevents your users from using the public IP addresses of your Droplets to bypass your Floating IP.
Getting Anchor and Floating IP Information
To retrieve your Droplet's anchor IP, you can use something like
ip addr show eth0, but the easiest way is using the Droplet Metadata service. One way to do this is running the following command on the Droplet:
- curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address
You can get other information about the anchor IP, like its netmask or gateway, by replacing the final
/address in the command above with
A Droplet can also see if it has a Floating IP assigned to itself by using Metadata. One way to do this is by running the following command on the Droplet, which will return a
- curl -s http://169.254.169.254/metadata/v1/floating_ip/ipv4/active
If a Floating IP is assigned, the Droplet can similarly retrieve the address of the Floating IP:
- curl -s http://169.254.169.254/metadata/v1/floating_ip/ipv4/ip_address
This information can be very useful when implementing an HA server setup.
See the API Metadata documentation for more details.
While you can manage your Floating IPs using the Control Panel, the same functionality is also available in the DigitalOcean API with the added benefit of allowing you to programmatically make changes.
Here are some additional resources on managing Floating IPs with the DO API:
- Learn how to use the DigitalOcean API v2.
- Read full DigitalOcean API documentation or the Floating IP API section specifically.
- Try the official DigitalOcean API wrappers for Ruby (DropletKit) and Go (Godo), which both have full Floating IP support.
However, a Floating IP alone does not automatically provide high availability. For a setup to be highly available, you need to implement a failover mechanism, which automates the process of detecting failures of the active server and reassigning the Floating IP to a passive server.
Here are several tutorials that will walk you through the creation of various active/passive high availability setups. Each tutorial uses a different software solution to achieve HA, so choose the one that is the best fit for your needs.
- In How To Create a High Availability Setup with Heartbeat and Floating IPs on Ubuntu 16.04, we use Heartbeat's clustering functionality with Floating IPs to implement a basic 2-node HA server setup. This simple setup is a demonstration of high availability rather than a recommended production solution.
- In How To Create a High Availability Setup with Corosync, Pacemaker, and Floating IPs on Ubuntu 14.04, we set up more robust active/passive high availability at the gateway level (i.e. including the Floating IP and the primary and secondary load balancers). Corosync provides a messaging layer, which enables servers to communicate as a cluster, while the cluster resource manager Pacemaker controls how the cluster behaves.
- In How To Set Up Highly Available Web Servers with Keepalived and Floating IPs on Ubuntu 14.04, we monitor two web servers with the Keepalived monitoring daemon and implement an automatic failover mechanism by using the DigitalOcean API to claim ownership of a shared Floating IP address from the secondary web server.