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-runonce 和 deploy-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 创建的资源。