Tacker - NFV 编排

“Tacker 是一个 OpenStack 服务,用于 NFV 编排,具有通用的 VNF 管理器,用于在 NFV 平台上部署和运行虚拟网络功能 (VNF) 和网络服务。它基于 ETSI MANO 架构框架。” 有关 Tacker 的更多详细信息,请参阅 OpenStack Tacker 文档

概述

从 Pike 版本开始,tacker 需要启用以下服务才能正确运行。

  • 核心计算堆栈 (nova, neutron, glance 等)

  • Heat

  • Barbican(仅多节点部署时需要)

可选地,tacker 支持以下服务和功能。

  • Aodh

  • Ceilometer

  • Networking-sfc

  • Opendaylight

准备和部署

默认情况下,tacker 和所需的服务在 group_vars/all/tacker.yml 文件中处于禁用状态。为了启用它们,您需要编辑文件 /etc/kolla/globals.yml 并设置以下变量

注意

Heat 默认启用,请确保它没有被禁用。

enable_tacker: "yes"
enable_barbican: "yes"

警告

Barbican 在多节点部署中是必需的,用于共享 VIM fernet_keys。如果未启用,只有一台 tacker-server 主机将拥有这些密钥,并且对不同 tacker-server 的任何请求都将失败,并出现类似于 No such file or directory /etc/tacker/vim/fernet_keys 的错误

警告

在 Train 版本中,Tacker 开始使用本地文件系统来存储 VNF 包和 CSAR 文件。 Kolla Ansible 不提供共享文件系统功能,因此每个 Tacker 服务只部署一个实例,并且全部部署在同一主机上。

部署 tacker 和相关服务。

$ kolla-ansible deploy

验证

生成凭证文件。

$ kolla-ansible post-deploy

加载凭证文件。

$ . /etc/kolla/admin-openrc.sh

在 kolla-ansible git 仓库中,kolla-ansible/contrib/demos/tacker/ 中存在一个 tacker demo,它将从 cirros 镜像在 demo-net 网络中创建一个非常基本的 VNF。

安装 python-tackerclient。

$ pip install python-tackerclient

警告

您可以自由使用以下 init-runonce 脚本用于演示目的,但请注意,您不必运行它才能使用您的云。根据您的自定义设置,它可能无法工作,或者可能与您想要创建的资源冲突。你已被警告。

从 kolla-ansible git 仓库中,执行 init-runoncedeploy-tacker-demo 脚本来初始化 demo VNF 创建。

$ ./tools/init-runonce
$ ./contrib/demos/tacker/deploy-tacker-demo

Tacker demo 脚本将创建示例 VNF 描述符 (VNFD) 文件,然后注册默认 VIM,创建 tacker VNFD,最后从之前创建的 VNFD 部署 VNF。

几分钟后,tacker VNF 变为 ACTIVE 状态,并在 nova 中运行一个 cirros 实例,并且其相应的 heat 堆栈 CREATION_COMPLETE。

验证 tacker VNF 状态为 ACTIVE。

$ openstack vnf list

+--------------------------------------+------------------+-----------------------+--------+--------------------------------------+--------------------------------------+
| ID                                   | Name             | Mgmt Url              | Status | VIM ID                               | VNFD ID                              |
+--------------------------------------+------------------+-----------------------+--------+--------------------------------------+--------------------------------------+
| c52fcf99-101d-427b-8a2d-c9ef54af8b1d | kolla-sample-vnf | {"VDU1": "10.0.0.10"} | ACTIVE | eb3aa497-192c-4557-a9d7-1dff6874a8e6 | 27e8ea98-f1ff-4a40-a45c-e829e53b3c41 |
+--------------------------------------+------------------+-----------------------+--------+--------------------------------------+--------------------------------------+

验证 nova 实例状态为 ACTIVE。

$ openstack server list

+--------------------------------------+-------------------------------------------------------+--------+--------------------+--------+-----------------------------------------------------------------------------------------------------------------------+
| ID                                   | Name                                                  | Status | Networks           | Image  | Flavor                                                                                                                |
+--------------------------------------+-------------------------------------------------------+--------+--------------------+--------+-----------------------------------------------------------------------------------------------------------------------+
| d2d59eeb-8526-4826-8f1b-c50b571395e2 | ta-cf99-101d-427b-8a2d-c9ef54af8b1d-VDU1-fchiv6saay7p | ACTIVE | demo-net=10.0.0.10 | cirros | tacker.vnfm.infra_drivers.openstack.openstack_OpenStack-c52fcf99-101d-427b-8a2d-c9ef54af8b1d-VDU1_flavor-yl4bzskwxdkn |
+--------------------------------------+-------------------------------------------------------+--------+--------------------+--------+-----------------------------------------------------------------------------------------------------------------------+

验证 Heat 堆栈状态为 CREATE_COMPLETE。

$ openstack stack list

+--------------------------------------+----------------------------------------------------------------------------------------------+----------------------------------+-----------------+----------------------+--------------+
| ID                                   | Stack Name                                                                                   | Project                          | Stack Status    | Creation Time        | Updated Time |
+--------------------------------------+----------------------------------------------------------------------------------------------+----------------------------------+-----------------+----------------------+--------------+
| 289a6686-70f6-4db7-aa10-ed169fe547a6 | tacker.vnfm.infra_drivers.openstack.openstack_OpenStack-c52fcf99-101d-427b-8a2d-c9ef54af8b1d | 1243948e59054aab83dbf2803e109b3f | CREATE_COMPLETE | 2017-08-23T09:49:50Z | None         |
+--------------------------------------+----------------------------------------------------------------------------------------------+----------------------------------+-----------------+----------------------+--------------+

在验证了 tacker 的正确功能后,可以通过执行 cleanup-tacker 脚本来清理 tacker demo。

$ ./cleanup-tacker

警告

上述操作不会清理 init-runonce 创建的资源。