Set up Floating IPs with OpenStack
Make sure that nova is configured with the correct public network interface. The default is eth0, but you can change it like:
$> ifconfig eth0 eth0: error fetching interface information: Device not found $> ifconfig em1 em1: flags=... $> echo '--public_interface=em1' | sudo tee -a /etc/nova/nova.conf $> sudo service openstack-nova-network restart
Ensure that ICMP (ping) and SSH are allowed to your instances.
$> euca-authorize -P icmp -t -1:-1 default $> euca-authorize -P tcp -p 22 default
How to test
If you've followed all of the test cases, the private network used for OpenStack instances is 10.0.0.0/24. The purpose of this functionality is to be able to assign a pool of floating public IP addresses to instances, as well.
The details of this test case are a bit specific to the environment you are using to test. For this documentation, we're going to assume that the the OpenStack server's public interface is on the 192.168.122.0/24 subnet. We are going to take an unused address from this subnet, 192.168.122.150, and define it as a floating IP address to be used by OpenStack.
$> sudo nova-manage floating create 192.168.122.150/27
Allocate an address to use for an instance:
$> euca-allocate-address ADDRESS 192.168.122.150
Associate the allocated address with a running instance:
$> euca-associate-address -i i-00000001 192.168.122.150 ADDRESS 192.168.122.150 i-00000001
Verify that the public IP address got assigned to your public network interface on the OpenStack server.
$> ip addr ... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:db:c8:51 brd ff:ff:ff:ff:ff:ff inet 192.168.122.58/24 brd 192.168.122.255 scope global eth0 inet 192.168.122.150/32 scope global eth0
Verify that you can now ssh into the instance using the newly assigned address:
$> cd ~/novacreds $> ssh -i nova_key.priv -o UserKnownHostsFile=/dev/null email@example.com
Check for new errors in the logs:
$> grep -i error /var/log/nova/*.log
If you would like, you can now disassociate and release the address assigned for testing.
$> euca-disassociate-address 192.168.122.150 ADDRESS 192.168.122.150 $> euca-release-address 192.168.122.150 ADDRESS 192.168.122.150