-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added specification for expansion of cluster in tendrl post detection #254
Open
shtripat
wants to merge
2
commits into
Tendrl:master
Choose a base branch
from
shtripat:spec/expand_cluster
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,187 @@ | ||
= Automatic handling of cluster expansion from CLI in tendrl | ||
|
||
The intent of this change is make sure expansion of an existing gluster cluster | ||
by adding newer nodes to the system by admin using CLI is taken care properly | ||
and the cluster reflects the changes in tendrl UI as well as grafana dashboards. | ||
|
||
Later once tendrl supports day-1 and day-2 operations, there could be options | ||
for adding newer nodes to the cluster from UI itself but at the moment the same | ||
is not possible in tendrl and its out of scope for this document. | ||
|
||
This document talk about auto detection of any cluster expansion done from CLI | ||
and reflecting all its components details in tendrl properly. | ||
|
||
|
||
== Problem description | ||
|
||
If an existing gluster cluster which is already being managed by tendrl gets | ||
extended from CLI by admin, the same should be reflected and updated in tendrl | ||
and all its components like UI, grafana dashboards etc. | ||
|
||
Getting a new node in gluster cluster and managed by tendrl includes | ||
provisioning of the node with tendrl components so that it can update all its | ||
details to tendrl. To be precise it should cover | ||
|
||
* install tendrl-node-agent on the new node | ||
|
||
* install collectd and tendrl-gluster-integration on new node | ||
|
||
* Configure all the services and start them, so they start reporting their data | ||
to tendrl | ||
|
||
|
||
== Use Cases | ||
|
||
This addresses the scenario when there is node peer probed into a gluster | ||
cluster from CLI. This new node needs to be provisioned with tendrl components | ||
so that it can participate in the cluster managed in tendrl. | ||
|
||
|
||
== Proposed change | ||
|
||
This change works on the assumptions that admin manually takes care of | ||
installation of glusterfs bits on the new nodes and then adding it to the peers | ||
list. Post this tendrl comes into picture to get the new node known and accepted | ||
in tendrl eco-system. | ||
|
||
The required changes are as below - | ||
|
||
* Introduce a mechanism in tendrl-ansible which allows re-run of the play-books | ||
with updated inventory file with new nodes entries. This ideally would do the | ||
required tendrl-node-agent installation and configuration on the new gluster | ||
node leaving old ones untouched. | ||
|
||
* Update the tendrl-gluster-integration such a way that once it figures out a | ||
peer in the cluster which is not yet part of known nodes of the cluster, it | ||
understand that this is new peer. This flow should ideally invoke a import | ||
cluster flow targeted at the specific additional node only. This flow makes | ||
sure that collectd and tendrl-gluster-integration get installed on the new node | ||
and they are configured properly. | ||
|
||
* Update the peer attach event handler in tendrl-gluster-integration to tackle | ||
the scenario in which the new node is not yet imported in tendrl but its part of | ||
underlying cluster. Once node gets marked as imported, the required flows should | ||
be invoked in monitoring-integration for creation of alert dashboards. | ||
|
||
|
||
=== Alternatives | ||
|
||
An alternate option could be to get tendrl-ansible functionality within the | ||
node-agent on tendrl server node. When a new node is seen in peers list which is | ||
not yet imported in tendrl, a in memory inventory file with additional node can | ||
be passed to ansible-playbook and required node-agent setup could be done. Once | ||
node-agent setup is complete, there could be a separate job to start import | ||
cluster flow targeted at new specific node. | ||
|
||
This option is not considered at the moment. | ||
|
||
=== Data model impact | ||
|
||
None | ||
|
||
=== Impacted Modules: | ||
|
||
==== Tendrl API impact: | ||
|
||
None | ||
|
||
==== Notifications/Monitoring impact: | ||
|
||
* Raise an alert once cluster got expanded with details of new node | ||
|
||
==== Tendrl/common impact: | ||
|
||
None | ||
|
||
==== Tendrl/node_agent impact: | ||
|
||
None | ||
|
||
==== Sds integration impact: | ||
|
||
tendrl-gluster-integration needs to figure out the new node in the system in | ||
one of the nodes of the cluster and auto initiate the import cluster flow on the | ||
new node. | ||
|
||
==== Tendrl Dashboard impact: | ||
|
||
None | ||
|
||
=== Security impact: | ||
|
||
None | ||
|
||
=== Other end user impact: | ||
|
||
User get a notification about new node in the cluster, and manual work to be | ||
done for tendrl-ansible. Once tendrl-ansible does installation of node-agent on | ||
the new node, auto expansion of the cluster would happen and a notification | ||
would be raised once import successful for new node. | ||
|
||
=== Performance impact: | ||
|
||
None | ||
|
||
=== Other deployer impact: | ||
|
||
The tendrl-ansible module need to provide a mechanism to setup tendrl components | ||
and dependencies on additional new node in the cluster. | ||
|
||
<TBD> details to be added here of the plyabooks etc. | ||
|
||
=== Developer impact: | ||
|
||
None | ||
|
||
|
||
== Implementation: | ||
|
||
* https://github.com/Tendrl/commons/issues/805 | ||
|
||
|
||
=== Assignee(s): | ||
|
||
Primary assignee: | ||
shtripat | ||
mbukatov | ||
|
||
=== Work Items: | ||
|
||
* https://github.com/Tendrl/specifications/issues/253 | ||
|
||
|
||
== Dependencies: | ||
|
||
None | ||
|
||
== Testing: | ||
|
||
* Check if there is a notification in tendrl UI regarding new node in cluster. | ||
This notification should ask for using tendrl-ansible to set up new node for | ||
import in tendrl | ||
|
||
* Verify if tendrl-ansible is able to set up new node properly with node-agent | ||
|
||
* Verify once node-agent is setup on the additional node, the import for the | ||
new node is seamless and automatic | ||
|
||
* Verify that there is a notification of success of new node getting imported in | ||
tendrl | ||
|
||
* Verify that post detection and action from tendrl, the additional nodes and | ||
its related entities get reflected in UI and grafana dashbaords properly | ||
|
||
* Verify this auto expansion post detection applies to multiple nodes as well | ||
and doesn't limit to one node at a time | ||
|
||
== Documentation impact: | ||
|
||
* The new expand cluster feature needs to be updated in docs with details of | ||
involvement of tendrl-ansible for setting up node | ||
|
||
== References: | ||
|
||
* <TBD> link to tendrl-ansible issue to track the changes for this support | ||
|
||
* https://github.com/Tendrl/specifications/issues/257 to track the auto | ||
detection of additional node(s) in the cluster as a separate specification |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to add a short description of this use case into README file during work on Tendrl/tendrl-ansible#82