Merge "Add devref for tacker conductor and vim monitoring"

This commit is contained in:
Jenkins 2017-06-22 23:48:25 +00:00 committed by Gerrit Code Review
commit 40261e5b11
3 changed files with 196 additions and 0 deletions

View File

@ -0,0 +1,70 @@
..
Copyright 2014-2015 OpenStack Foundation
All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
================
Tacker conductor
================
Tacker conductor is a component which is used to communicate with other
components via message RPC. In the conductor, the RPC server sides can
access the tacker base on behalf of them.
To start
==============
Tacker conductor can be started via python console entry script
'tacker-conductor':
.. code-block:: console
tacker-conductor --config-file /etc/tacker/tacker.conf
..
we can easily start many tacker-conductor instances with different 'host' value
in the configuration file:
.. code-block:: console
test@ubuntu64:~/devstack$ grep 'host = secondinstance' /etc/tacker/tacker2.conf
host = secondinstance
..
and then start the second instance:
.. code-block:: console
tacker-conductor --config-file /etc/tacker/tacker2.conf
..
Rabbitmq queues
===============
Tacker conductor is listening on three queues:
.. code-block:: console
test@ubuntu64:~/tacker$ sudo rabbitmqctl list_queues | grep CONDUCTOR
TACKER_CONDUCTOR 0
TACKER_CONDUCTOR.ubuntu64 0
TACKER_CONDUCTOR_fanout_0ea005c0b666488485a7b3689eb70168 0
..
But only TACKER_CONDUCTOR queue without host suffix is used.

View File

@ -0,0 +1,124 @@
..
Copyright 2014-2015 OpenStack Foundation
All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
===============================
Mistral workflow VIM monitoring
===============================
For the purpose to make tacker server scale, the mistral workflow is used to
re-implement the VIM monitoring feature.
The main monitoring process is like this:
- user registers a VIM
- tacker server saves it into database
- tacker server generates a mistral workflow and executes it
- the VIM monitor mistral action is executed and do the monitoring, if there
is status change, it will RPC call conductor
- the conductor changes the VIM status
Feature exploration
===================
Firstly register a VIM:
.. code-block:: console
$ tacker vim-register --config-file ~/testvim_config.yaml testvim2 -c id -c name -c status
Created a new vim:
+--------+--------------------------------------+
| Field | Value |
+--------+--------------------------------------+
| id | 4406cf8f-f2af-46cc-bfb9-e00add5805b7 |
| name | testvim2 |
| status | PENDING |
+--------+--------------------------------------+
..
The registered VIM's id is '4406cf8f-f2af-46cc-bfb9-e00add5805b7', after this,
there is a mistral workflow named as
'vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7', is generated in mistral:
.. code-block:: console
$ mistral workflow-list --filter name=vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 -c ID -c Name
+--------------------------------------+---------------------------------------------+
| ID | Name |
+--------------------------------------+---------------------------------------------+
| 0cd0deff-6132-4ee2-a181-1c877cd594cc | vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 |
+--------------------------------------+---------------------------------------------+
..
and it is executed:
.. code-block:: console
$ mistral execution-list --filter workflow_name=vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 -c ID -c 'Workflow name' -c State
+--------------------------------------+---------------------------------------------+---------+
| ID | Workflow name | State |
+--------------------------------------+---------------------------------------------+---------+
| 99ced0e2-be09-4219-ab94-299df8ee8789 | vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 | RUNNING |
+--------------------------------------+---------------------------------------------+---------+
..
The monitoring task is running too:
.. code-block:: console
$ mistral task-list --filter workflow_name=vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 -c ID -c 'Workflow name' -c Name -c State
+--------------------------------------+-----------------------------+---------------------------------------------+---------+
| ID | Name | Workflow name | State |
+--------------------------------------+-----------------------------+---------------------------------------------+---------+
| f2fe2904-6ff2-4531-9bd0-4c998ef1515f | monitor_ping_vimPingVIMTASK | vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 | RUNNING |
+--------------------------------------+-----------------------------+---------------------------------------------+---------+
..
Of course, the VIM's state is in 'REACHABLE' status:
.. code-block:: console
$ tacker vim-list --name testvim2 -c id -c name -c status
+--------------------------------------+----------+-----------+
| id | name | status |
+--------------------------------------+----------+-----------+
| 4406cf8f-f2af-46cc-bfb9-e00add5805b7 | testvim2 | REACHABLE |
+--------------------------------------+----------+-----------+
..
The deletion of VIM will lead to removal of all of these mistral resources.
Rabbitmq queues
===============
Each mistral VIM monitoring action is listening on three queues:
.. code-block:: console
~/tacker$ sudo rabbitmqctl list_queues | grep -i KILL_ACTION
KILL_ACTION 0
KILL_ACTION.4406cf8f-f2af-46cc-bfb9-e00add5805b7 0
KILL_ACTION_fanout_a8118e2e18b9443986a1b37f7b082ab9 0
..
But only KILL_ACTION with VIM id as suffix is used.

View File

@ -63,6 +63,8 @@ Feature Documentation
devref/vnffg_usage_guide.rst
devref/nsd_usage_guide.rst
devref/vnf_component_usage_guide.rst
devref/tacker_conductor.rst
devref/tacker_vim_monitoring.rst
API Documentation
=================