Update the documentation for MOS 8.0

Change-Id: Ifc135a32a832d8cc10b936389bb3494e2952bb76
This commit is contained in:
Nadya Shakhat 2016-03-22 17:55:45 +03:00
parent 1036a1cafb
commit 522de005bd
8 changed files with 107 additions and 29 deletions

View File

@ -1,17 +1,53 @@
Ceilometer Redis plugin
=======================
Ceilometer Redis Plugin provides a coordination mechanism for
`Ceilometer agents <https://ceilometer.readthedocs.org/en/latest/architecture.html>`_.
The first version of plugin will support only `Central Agent <https://ceilometer.readthedocs.org/en/latest/glossary.html#term-central-agent>`_.
It uses `tooz library <http://docs.openstack.org/developer/tooz/>`_ with
`Redis backend <http://redis.io>`_ to provide a set of resources
to be polled for each Central agent. The plugin also changes deployment of Ceilometer central agent:
now every controller has its own running ceilometer central service
which are joined into coordination group. These changes in deployment will be done automatically.
It also configures redis-server under pacemaker to monitor its process. The plugin configures
`redis-sentinel <http://redis.io/topics/sentinel>`_ to monitor the state of redis cluster,
to elect new master during failovers, to forward ceilometer agents to new elected redis master, to organize sync between redis nodes.
Ceilometer Redis Plugin aims to install Redis to MOS environment and provide a coordination mechanism for
`Ceilometer agents <https://ceilometer.readthedocs.org/en/latest/architecture.html>`_ and Alarm Evaluator
through the `tooz library <http://docs.openstack.org/developer/tooz/>`_ with a `Redis backend <http://redis.io>`_
The plugin supports coordination for the following Ceilometer services: central agent, notification agent
and alarm-evaluator. Each of these services are running on every controller after the plugin
is installed. All of them are joined into the corresponding coordination group (one coordination group
per each service). It differs from the default configuration when there should be only one central agent
and alarm-evaluator per cloud. The plugin also configures redis-server under pacemaker to monitor its process.
The plugin configures `redis-sentinel <http://redis.io/topics/sentinel>`_ to monitor the state of the redis
cluster, to elect new master during failovers, to forward ceilometer services to new elected redis master,
to organize sync between redis nodes.
Central agent
-------------
Ceilometer Central agent is responsible for polling all OpenStack resources except Nova's (Nova resources,
i.e. vms, are polled by a Compute agent). Without coordination enabled, only one Central agent should be running
per cloud. The reason is that all the central agents have the same set of OpenStack resources to poll every
configurable time interval. If coordination is not enabled, each OpenStack resource will be polled as many times
as many instances of Central agents are running in a cloud.
Thus, coordination provides a disjoint set of OpenStack resources to poll for every Central agent running on the
cloud to avoid polling one resource several times.
Alarm evaluator
---------------
Ceilometer alarm evaluator service is responsible for Ceilometer alarm evaluation.
By default, in MOS there is only one alarm evaluator per cloud. The reason is the same as for a central agent.
If there are several alarm evaluators and no coordination enabled, all of them will evaluate the same set of alarms
every configurable time interval. The alarm sets for evaluators should be disjoint. So, coordination is responsible
for providing the set of alarms to evaluate to each alarm-evaluator in the cloud.
Notification agent
------------------
Before Liberty, there was no need to coordinate Ceilometer notification agents. But starting from Liberty, samples
transformations started to be handled not by compute/central agents as it was before, but by a notification agent.
Some of Ceilometer transformers have a local cache where it is stored the data from previously processed samples.
For example, "cpu_util" metric are obtained from two consecutive Samples with "cpu" metric: one is subtracted from
another and divided to an amount of cpu (this information is stored in Sample's metadata).
Thus, it should be guaranteed that all the Samples which should be transformed by one transformer, will go to the
same notification agent. If some of the samples go to another, the cache cannot be shared and some data will be lost.
To handle this process properly, IPC queues was introduced - inter process communication queues in message bus
(RabbitMQ). With coordination enabled, each notification agent has two set of listeners: for main queues and for IPC
queues. All notification agents listen to _all_ the main queues (where we have all messages from OpenStack services
and polling-based messages from central/compute agents) and re-publish messages to _all_ IPC queues. Coordination
starts to work at this point: every notification agent in the cloud has it's own set of IPC queues to listen to. Thus,
we can be sure that local cache on each notification agent contains all the previous data required for transformation.
Requirements
@ -20,7 +56,7 @@ Requirements
======================= ================
Requirement Version/Comment
======================= ================
Fuel 7.0
Fuel 7.0, 8.0
tooz <0.14.0,>=0.13.1
======================= ================
@ -29,14 +65,14 @@ tooz <0.14.0,>=0.13.1
Limitations
-----------
* The plugin version 1.0-1.0.0-1 provides coordination only for Agent Central service.
Alarm evaluator and Notification agent will be supported in the next plugin
version.
* The plugin works correctly only on clouds with odd numbers of controllers.
This requirement is mandatory because Redis needs an odd number of nodes to
choose the master successfully.
* In MOS 8.0, there are no transformers configured by default. The plugin doesn't add any of them into
ceilometer's pipeline.yaml. Thus, you need to configure it manually if you want to use transformers.
If you don't need this feature, it is recommended to disable coordination for the notification agents.
.. include:: installation.rst
.. include:: guide.rst

View File

@ -2,19 +2,45 @@ User Guide
==========
Once the Ceilometer Redis plugin plugin has been installed (following `Installation Guide`_), you can
create *OpenStack* environments with Ceilometer whose Central agent works in workload_partitioned mode.
create *OpenStack* environments with Ceilometer whose Central agents, Notification agent and Alarm evaluator
work in workload_partitioned mode.
Ceilometer installation
-----------------------
This plugin was created to provide partitioning for Ceilometer services. So its
usage is senseless without Ceilometer installed.
So, you will need to `create a new OpenStack environment <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#create-a-new-openstack-environment>`_
with `Ceilometer <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#related-projects>`_ using the Fuel UI Wizard.
So, you will need to `create a new OpenStack environment <https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#create-a-new-openstack-environment>`_
with `Ceilometer <https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#related-projects>`_ using the Fuel UI Wizard.
Plugin configuration
--------------------
Plugin configuration in MOS 8.0
-------------------------------
#. First of all, make sure that plugin was successfully installed.
Go to the *Plugins* tab. You should see the following:
.. image:: images/redis-plugin-on8.0.png
:width: 100%
#. The next step is enable the plugin. Go to *Environments* tab and
select the *Redis plugin for Ceilometer* checkbox:
.. image:: images/redis-plugin-8.0.png
:width: 100%
#. When
`adding nodes to environment and assigning roles to them <https://docs.mirantis.com/openstack/fuel/fuel-8.0/operations.html#adding-redeploying-and-replacing-nodes>`_, please consider using odd number of controllers as mentioned in `Limitations`_.
#. Finish
`environment configuration <https://docs.mirantis.com/openstack/fuel/fuel-8.0/mos-planning-guide.html#fuel-reference-architecture-overview>`_
#. Run `network verification check <https://docs.mirantis.com/openstack/fuel/fuel-8.0/operations.html#network-issues>`_.
#. Press "Deploy button" to once you are done with environment configuration.
Plugin configuration in MOS 7.0
-------------------------------
#. First of all, make sure that plugin was successfully installed.
Go to the *Plugins* tab. You should see the following:
@ -39,18 +65,21 @@ Plugin configuration
#. Press `Deploy button <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#deploy-changes>`_ to once you are done with environment configuration.
How to check that plugin works
------------------------------
#. Check that ceilometer-agent-central service is running on each controller. Run ``pcs resource``
and you should see the following in the output::
#. Check that ceilometer-agent-central and ceilometer-alarm-evaluator services are running
on each controller. Run ``pcs resource`` and you should see the following in the output::
Clone Set: clone_p_ceilometer-agent-central [p_ceilometer-agent-central]
Started: [ node-1.domain.tld node-2.domain.tld node-3.domain.tld ]
Started: [ node-21.domain.tld node-27.domain.tld node-33.domain.tld ]
Clone Set: clone_p_ceilometer-alarm-evaluator [p_ceilometer-alarm-evaluator]
Started: [ node-21.domain.tld node-27.domain.tld node-33.domain.tld ]
``Started`` list should contain all controllers.
#. Check that samples are not duplicated. For this purpose you may choose
#. For the central agent: check that samples are not duplicated. For this purpose you may choose
any metric collected by central agent. All these metrics may be found here
`Measurements <http://docs.openstack.org/admin-guide-cloud/telemetry-measurements.html>`_ .
You may choose any section *except* OpenStack Compute and then select metric with 'Pollster' Origin.
@ -81,3 +110,16 @@ How to check that plugin works
.... 2015-11-05T10:26:38 |
.... 2015-11-05T10:26:26 |
.... 2015-11-05T10:26:17 |
#. For the notification agent: Check that IPC queues are created and have consumers:
ubuntu@ubuntu:/opt/stack/ceilometer$ sudo rabbitmqctl list_queues name messages consumers | grep ceilo
ceilometer-pipe-meter_source:meter_sink-0.sample 0 1
ceilometer-pipe-meter_source:meter_sink-1.sample 0 1
ceilometer-pipe-meter_source:meter_sink-2.sample 0 1
ceilometer-pipe-meter_source:meter_sink-3.sample 0 1
ceilometer-pipe-meter_source:meter_sink-4.sample 0 1
By default, you should see 10 queues in this list. Every queue should have one and only one consumer.
#. For the alarm evaluator, it is possible to see that everything works as expected only from the logs. Grep the
line "extract_my_subset". There should be different "My subset: [" results on each alarm evaluator instance.

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -13,7 +13,7 @@ To install the Redis plugin:
`Fuel Plugins Catalog <https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/>`_.
#. Move the plugin's rpm to the
`Fuel Master node <https://docs.mirantis.com/openstack/fuel/fuel-7.0/quickstart-guide.html#quickstart-guide>`_ with secure copy (scp)::
`Fuel Master node <https://docs.mirantis.com/openstack/fuel/fuel-8.0/quickstart-guide.html#quickstart-guide>`_ with secure copy (scp)::
scp fuel-plugin-ceilometer-redis/ceilometer-redis-1.0-1.0.0-1.noarch.rpm /
root@:<the_Fuel_Master_node_IP address>:/tmp
@ -31,7 +31,7 @@ To install the Redis plugin:
[root@fuel-master ~]# fuel plugins list
id | name | version | package_version
---|------------------|---------------|----------------
4 | ceilometer-redis | 1.0.0 | 2.0.0
4 | ceilometer-redis | 1.0.2 | 3.0.0

View File

@ -3,9 +3,9 @@ name: ceilometer-redis
# Human-readable name for your plugin
title: Redis plugin for Ceilometer
# Plugin version
version: 1.0.1
version: 1.0.2
# Description
description: Ceilometer extension that provide workload-partitioning and HA for ceilometer services
description: Ceilometer extension that provides a workload-partitioning and HA for ceilometer services
# Required fuel version
fuel_version: ['7.0','8.0']
# Specify license of your plugin