如何将浮动IP地址分配给OpenStack中的实例

时间:2020-02-23 14:41:12  来源:igfitidea点击:

我们想从公共网络分配OpenStack实例浮动IP地址?
在OpenStack中创建虚拟实例时,它将在分配它的网络中自动分配固定IP。
此IP地址与实例永久关联,直到实例终止。

OpenStack还可以选择使用从外部网络子网创建的浮动IP地址的选项。
"浮动IP"是可以动态添加到正在运行的虚拟实例的IP地址。
无论有问题的实例的状态如何,都可以随时修改浮动IP关联。

以下是我们将用于在OpenStack中创建浮动IP地址的过程,并将其分配给实例。

步骤1:在专用网络上创建一个实例

首先在专用网络中从OpenStack Horizo n Dashboard或者CLI创建虚拟实例。

我有两个网络 - 公共和私人。
实例将在私有子网上创建。

$openstack network list
+--------------------------------------+---------+--------------------------------------+
| ID                                   | Name    | Subnets                              |
+--------------------------------------+---------+--------------------------------------+
| b94431cb-08cf-42ea-be61-55f5cf459276 | private | 57601b99-ea64-41a8-a927-fbd591ae3f2b |
| f7ccac3b-73eb-49bf-a4ec-af750216b819 | public  | 7536e4a8-6aa8-45dc-aed6-1a98afcf416d |
+--------------------------------------+---------+--------------------------------------+
$openstack subnet list
+--------------------------------------+----------------+--------------------------------------+----------------+
| ID                                   | Name           | Network                              | Subnet         |
+--------------------------------------+----------------+--------------------------------------+----------------+
| 57601b99-ea64-41a8-a927-fbd591ae3f2b | private_subnet | b94431cb-08cf-42ea-be61-55f5cf459276 | 10.10.1.0/24   |
| 7536e4a8-6aa8-45dc-aed6-1a98afcf416d | public_subnet  | f7ccac3b-73eb-49bf-a4ec-af750216b819 | 96.220.99.8/29 |
+--------------------------------------+----------------+--------------------------------------+----------------+

我将创建一个名为testfloation的实例从Ubuntu 18.04模板。

openstack server create \
 --image Ubuntu-18 \
 --key-name jmutai \
 --flavor m1.small \
 --security-group  7fffea2a-b756-473a-a13a-219dd0f1913a  \
 --network private  \
 testfloating

VM创建可以从OpenStack仪表板完成。

创建后,确认服务器正在运行。

$openstack server show testfloating
+-------------------------------------+----------------------------------------------------------+
| Field                               | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| OS-EXT-SRV-ATTR:host                | server1.theitroad.com                            |
| OS-EXT-SRV-ATTR:hypervisor_hostname | server1.theitroad.com                            |
| OS-EXT-SRV-ATTR:instance_name       | instance-0000002e                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-SRV-USG:launched_at              | 2019-09-22T07:13:40.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | private=10.10.1.185                                      |
| config_drive                        |                                                          |
| created                             | 2019-09-22T07:13:35Z                                     |
| flavor                              | m1.small (1)                                             |
| hostId                              | da0a05ef20a03e97f301563551bab9b669ef04adbce232d941519946 |
| id                                  | a731e48d-d3b5-4fcf-8fc7-f8f280b51b44                     |
| image                               | Ubuntu-18 (7bd462ad-cc11-4d89-8b85-9aab0cfe114b)         |
| key_name                            | jmutai                                                   |
| name                                | testfloating                                             |
| progress                            | 0                                                        |
| project_id                          | 06bcc3c56ab1489282b65681e782d7f6                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | ACTIVE                                                   |
| updated                             | 2019-09-22T07:13:40Z                                     |
| user_id                             | 336acbb7421f47f8be4891eabf0c9cc8                         |
| volumes_attached                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

步骤2:从外部网络池保留浮动IP地址。

我们需要从外部网络子网池中保留浮动IP地址。
这可以从Web仪表板或者CLI完成。

来自CLI:

openstack floating ip create --project admin --subnet public_subnet public

其中:admin是所有者的项目。
创建的浮动IP将在此项目中可用.public_subnet是我们想要创建浮动IP.Public的子网的名称,用于分配浮动IP的网络名称。

通过执行查看所有选项:

$openstack floating ip create --help

来自仪表板:

以具有成员角色的用户登录仪表板。
导航到:

项目>网络>浮动IPS

单击"将IP分配给项目"按钮。
在新窗口中,选择一个池,提供描述,然后单击"分配IP"。

步骤3:将保留的浮动IP地址与实例相关联。

保留浮动IP地址后,我们可以将其与实例相关联。

来自CLI:

$openstack floating ip list
$openstack server list
$openstack server add floating ip <server> <ip-address>
# Example:
$openstack server add floating ip testfloating 96.220.99.11

来自仪表板:

选项1:项目>网络>浮动IPS>选择IP>关联

选择浮动IP,实例和端口以关联。

选项2:项目> Compute>实例

在"操作"下,选择"关联浮动IP"

选择IP地址,然后单击"关联"。

解除浮动IP地址

要解除IP地址,请使用以下任一方法:

CLI:

$openstack server remove floating ip <server> <ip-address>

仪表板:项目>网络>浮动IPS> DisassociateProjection> Compute>实例>操作>解剖浮动IP

这完全是如何将浮动IP地址与OpenStack上运行的实例相关联。