From 0e2ed78737c6c5df956ebcc79c8f6f29a317122a Mon Sep 17 00:00:00 2001 From: "jing.liuqing" Date: Thu, 22 Jun 2017 10:55:49 +0800 Subject: [PATCH] Add devref for tacker conductor and vim monitoring Change-Id: I1bb23908227637f1500ae285665dc85c25ff41cb Implements: blueprint refactor-vim-monitor --- doc/source/devref/tacker_conductor.rst | 70 +++++++++++ doc/source/devref/tacker_vim_monitoring.rst | 124 ++++++++++++++++++++ doc/source/index.rst | 2 + 3 files changed, 196 insertions(+) create mode 100644 doc/source/devref/tacker_conductor.rst create mode 100644 doc/source/devref/tacker_vim_monitoring.rst diff --git a/doc/source/devref/tacker_conductor.rst b/doc/source/devref/tacker_conductor.rst new file mode 100644 index 000000000..e69b20824 --- /dev/null +++ b/doc/source/devref/tacker_conductor.rst @@ -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. diff --git a/doc/source/devref/tacker_vim_monitoring.rst b/doc/source/devref/tacker_vim_monitoring.rst new file mode 100644 index 000000000..36ea164f5 --- /dev/null +++ b/doc/source/devref/tacker_vim_monitoring.rst @@ -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. diff --git a/doc/source/index.rst b/doc/source/index.rst index ee6f890aa..a2dc52b86 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -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 =================