网络拓扑自动分配¶
Mitaka 版本中引入的自动分配功能简化了为最终用户设置外部连接的过程,也被称为 为我创建一个网络。
此前,用户必须配置一系列网络资源才能启动服务器并访问互联网。例如,需要执行以下步骤:
创建网络
创建一个子网
创建路由器
将路由器连接到外部网络
将路由器连接到之前创建的子网
这些步骤需要在虚拟机需要连接的每个逻辑段上执行,并且可能需要用户不具备的网络知识。
此功能旨在自动化项目的基础网络配置。配置基本网络的步骤在实例启动期间运行,从而实现免手动设置的网络配置。
为此,提供一个默认的外部网络和默认的子网池(IPv4 的一个,或 IPv6 的一个,或两者都有),以便网络服务可以在没有输入的情况下选择要执行的操作。一旦这些设置就绪,用户就可以在不指定任何网络细节的情况下启动他们的虚拟机。计算服务将自动使用此功能为用户虚拟机接线。
启用自动分配的部署¶
要使用此功能,neutron 服务必须启用以下扩展:
auto-allocated-topologysubnet_allocationexternal-netrouter
在最终用户可以使用自动分配功能之前,操作员必须创建将用于自动分配网络拓扑创建的资源。要执行此任务,请按照以下步骤操作:
设置默认外部网络
假设要用于自动分配功能的外部网络名为
public,请使用以下命令将其设为default外部网络:$ openstack network set public --default
注意
标志
--default(以及--no-default标志)仅对外部网络有效,对常规(或内部)网络没有影响。创建默认子网池
自动分配功能至少需要一个默认子网池。IPv4 的一个,或 IPv6 的一个,或两者都有。
$ openstack subnet pool create --share --default \ --pool-prefix 192.0.2.0/24 --default-prefix-length 26 \ shared-default +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | address_scope_id | None | | created_at | 2017-01-12T15:10:34Z | | default_prefixlen | 26 | | default_quota | None | | description | | | headers | | | id | b41b7b9c-de57-4c19-b1c5-731985bceb7f | | ip_version | 4 | | is_default | True | | max_prefixlen | 32 | | min_prefixlen | 8 | | name | shared-default | | prefixes | 192.0.2.0/24 | | project_id | 86acdbd1d72745fd8e8320edd7543400 | | revision_number | 1 | | shared | True | | tags | [] | | updated_at | 2017-01-12T15:10:34Z | +-------------------+--------------------------------------+ $ openstack subnet pool create --share --default \ --pool-prefix 2001:db8:8000::/48 --default-prefix-length 64 \ default-v6 +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | address_scope_id | None | | created_at | 2017-01-12T15:14:35Z | | default_prefixlen | 64 | | default_quota | None | | description | | | headers | | | id | 6f387016-17f0-4564-96ad-e34775b6ea14 | | ip_version | 6 | | is_default | True | | max_prefixlen | 128 | | min_prefixlen | 64 | | name | default-v6 | | prefixes | 2001:db8:8000::/48 | | project_id | 86acdbd1d72745fd8e8320edd7543400 | | revision_number | 1 | | shared | True | | tags | [] | | updated_at | 2017-01-12T15:14:35Z | +-------------------+--------------------------------------+
为我创建一个网络¶
在操作员已按照上述说明设置资源的部署中,他们可以按如下方式获取或创建其自动分配的网络拓扑:
$ openstack network auto allocated topology create --or-show
+------------+--------------------------------------+
| Field | Value |
+------------+--------------------------------------+
| id | a380c780-d6cd-4510-a4c0-1a6ec9b85a29 |
| project_id | cfd1889ac7d64ad891d4f20aef9f8d7c |
+------------+--------------------------------------+
注意
当使用 --or-show 选项时,该命令如果拓扑已经存在则返回拓扑信息,如果不存在则创建它。
操作员(以及具有管理员角色的用户)可以通过指定项目 ID 来获取或创建项目的自动分配拓扑:
$ openstack network auto allocated topology create --project \
cfd1889ac7d64ad891d4f20aef9f8d7c --or-show
+------------+--------------------------------------+
| Field | Value |
+------------+--------------------------------------+
| id | a380c780-d6cd-4510-a4c0-1a6ec9b85a29 |
| project_id | cfd1889ac7d64ad891d4f20aef9f8d7c |
+------------+--------------------------------------+
此命令返回的 ID 是一个网络,可用于启动虚拟机。
$ openstack server create --flavor m1.small --image \
cirros-0.3.5-x86_64-uec --nic \
net-id=8b835bfb-cae2-4acc-b53f-c16bb5f9a7d0 vm1
用户的自动分配拓扑永远不会更改。实际上,当用户启动服务器而不省略 --nic 选项,并且有多个网络可用时,计算服务将调用 auto allocated topology create 背后的 API,获取网络 UUID,并在启动过程中传递它。
或者,可以按如下方式删除其自动分配的网络拓扑:
$ openstack network auto allocated topology delete
验证自动分配的要求¶
要验证所需的资源是否已正确设置为自动分配,而无需实际配置任何内容,请使用 --check-resources 选项:
$ openstack network auto allocated topology create --check-resources
Deployment error: No default router:external network.
$ openstack network set public --default
$ openstack network auto allocated topology create --check-resources
Deployment error: No default subnetpools defined.
$ openstack subnet pool set shared-default --default
$ openstack network auto allocated topology create --check-resources
+---------+-------+
| Field | Value |
+---------+-------+
| dry-run | pass |
+---------+-------+
验证选项对所有用户表现相同。但是,它被认为主要是管理员或服务实用程序,因为操作员必须设置要求。
自动分配创建的项目资源¶
自动分配功能在每个使用它的项目中创建一个网络拓扑。项目的自动分配网络拓扑包含以下资源:
资源 |
名称 |
|---|---|
network |
|
子网 (IPv4) |
|
子网 (IPv6) |
|
router |
|
兼容性说明¶
Nova 使用 API 微版本 2.37 或更高版本的 auto allocated topology 功能。这是因为,与 Mitaka 版本中实现的 neutron 功能不同,nova 的集成是在 Newton 版本周期中完成的。请注意,只要项目没有超过一个可用网络,就可以省略 CLI 选项 --nic,否则 nova 将以 400 错误失败,因为它不知道使用哪个网络。此外,nova 不会开始使用该功能,无论用户是否请求微版本 2.37 或更高版本,除非所有 nova-compute 服务都在运行 Newton 级别的代码。