Merge "Blueprint: ceilometer-central-agent-ha"
This commit is contained in:
commit
32f5fd8f43
213
specs/6.1/ceilometer-central-agent-ha.rst
Normal file
213
specs/6.1/ceilometer-central-agent-ha.rst
Normal file
@ -0,0 +1,213 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
==============================================
|
||||
Add central agent HA and workload partitioning
|
||||
==============================================
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/ceilometer-central-agent-ha
|
||||
|
||||
Implement Redis installation and using it as a coordination backend
|
||||
for ceilometer central agents
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
A detailed description of the problem:
|
||||
|
||||
* Currentrly ceilometer central agent is the only one ceilometer component
|
||||
that didn't support HA and workload partitioning. During Juno release
|
||||
cycle this feature was intorduced to the ceilometer in the upstream code
|
||||
using tooz coordination openstack library. This library supports several
|
||||
backends (zookeeper, redis, memcached among them). It was decided
|
||||
to introduce this built-in ceilometer feature to MOS as well.
|
||||
Redis was chosen as the coordination backend.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
This feature is experimental and should be implemented as fuel-plugin.
|
||||
It's implementation requires following things to be done:
|
||||
* Implement Redis installation on controller nodes only in HA mode
|
||||
* Prepare Redis packages and it's dependencies
|
||||
* Configure ceilometer central agents to work with redis
|
||||
|
||||
Installation diagram is as follows
|
||||
|
||||
::
|
||||
|
||||
+---------------------+
|
||||
| |
|
||||
| +---------------+ |
|
||||
| | ceilometer +-------------------------+
|
||||
| | central agent | | |
|
||||
| +---------------+ | |
|
||||
| | |
|
||||
| Primary controller | |
|
||||
| | |
|
||||
| +---------------+ | |
|
||||
| | redis <------------------------------+
|
||||
| | master | | | |
|
||||
| +---------------+ | | |
|
||||
| | | |
|
||||
+---------------------+ | |
|
||||
| |
|
||||
+---------------------+ | |
|
||||
| | | |
|
||||
| +---------------+ | | |
|
||||
| | ceilometer +-------------------------+ |
|
||||
| | central agent | | | |
|
||||
| +---------------+ | | |
|
||||
| | +------v----+--+
|
||||
| controller 1 | | |
|
||||
| | | Coordination |
|
||||
| +---------------+ | | |
|
||||
| | redis | | +------^----+--+
|
||||
| | slave1 | | | |
|
||||
| | <------------------------------+
|
||||
| +---------------+ | | |
|
||||
| | | |
|
||||
+---------------------+ | |
|
||||
| |
|
||||
+---------------------+ | |
|
||||
| | | |
|
||||
| +---------------+ | | |
|
||||
| | ceilometer +-------------------------+ |
|
||||
| | central agent | | |
|
||||
| +---------------+ | |
|
||||
| | |
|
||||
| controller 2 | |
|
||||
| | |
|
||||
| +---------------+ | |
|
||||
| | redis | | |
|
||||
| | slave2 <------------------------------+
|
||||
| | | |
|
||||
| +---------------+ |
|
||||
| |
|
||||
+---------------------+
|
||||
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
This feature could be implemented by default, but it has experimental status.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Upgrade impact
|
||||
--------------
|
||||
|
||||
These changes will be needed in puppet scripts:
|
||||
|
||||
* Add redis module
|
||||
|
||||
* Configure ceilometer central agent to use redis as backend
|
||||
|
||||
This change will be needed in packages:
|
||||
|
||||
* Use upstream Redis packages and it's dependencies
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
This could be installed only in HA mode with ceilometer
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
Ivan Berezovskiy
|
||||
|
||||
Other contributors:
|
||||
Dina Belova
|
||||
|
||||
Reviewer:
|
||||
Vladimir Kuklin Sergii Golovatiuk
|
||||
|
||||
QA:
|
||||
Vadim Rovachev
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Implement redis installation from puppet (iberezovskiy)
|
||||
|
||||
* Configure ceilometer central agent (iberezovskiy)
|
||||
|
||||
* Write a documentation (dbelova)
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Testing approach:
|
||||
|
||||
* Environment with ceilometer in HA mode should be succesfully deployed
|
||||
|
||||
* Ceilometer should collect all enabled polling meters for deployed
|
||||
environment
|
||||
|
||||
* Polling meters should be divided on groups by ceilometer central agents
|
||||
|
||||
* Redis cluster should be with one master and two slaves
|
||||
|
||||
* Ensure that after one central agent was broken, during the next polling
|
||||
cycle all measurements will be rescheduled between two another,
|
||||
and still all of them will be collected
|
||||
|
||||
* Ensure that after node with redis master was broken ceilometer central
|
||||
agents can work with new redis master and can poll meters
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
A note should be added about redis plugin installation and
|
||||
how ceilometer agent can work in HA mode
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
None
|
Loading…
Reference in New Issue
Block a user