-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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
Implement dynamic cluster configuration #1016
Comments
@jonboulle @unihorn The first thing is to think about different scenarios when people need this. |
Would it be feasible to implement self-configuration when machines are added and removed for any reason (even unexpectedly)? Please see #941. This would make things much easier for operators. |
@sbward Not really. Operators should involve in every configuration change. etcd itself should never make configuration change (we have deprecated the standby mode, which can do auto promote and demote). The reason behind this is that: etcd is the source of trust; if there is a problem inside etcd cluster, the operator must treat it seriously. in the future, we might provide a way to do self-coordination (introducing non-voting members, so you can have 13 node cluster). |
The idea I had commented in #941 was to make sure we can have clusters configured easier. My idea was to make etcd instances easily configurable between themselves. For example, I had thought about the following usecase: A machine has etcd runnning, B machine wants to join A, so B is launched with an env var with A address. After some time, C wants to join A and B, and it is lauched with an env var pointing to A. Syncs, and suddenly contact with A is lost. Thanks to the new implementation, C would also have B's address and would be able to communicate with it till A joins the group again. This has the danger that having two parallel etcd clusters in this automatic mode has to be done carefully, as if two nodes belonging to different clusters happen to connect, it will automatically merge both clusters. Anyway, I think this is a great feature, that if possible to be enabled through a configuration file would make etcd nearly a droplet application. |
@txomon We will have a bootstraping and dynamic configuration proposal very soon (within next week). We hope to get you feedback and make etcd easier to operate. Thanks! |
Also depends on #1370 |
Is there any docs on how to use this feature? |
This is really nice! Feedback: Adding a member seems tedious to me. Is there any idea to simplify the API? I would try to suppress all the options in the member's launch, meaning that we would be able to add a member to the cluster by just knowing one of the known members. I can't think on a use case where the Error case could be justified or not automated. In case the cluster doesn't exists, then it gets created, no need to specify that in the etcd launch command. I would indeed think on that as the default workmode. With this, I mean that the only membership change that can't be "supposed" is the deletion of a member, although etcd could trigger a command to the cluster when stopped to notify it's stop. I will try to write down a use case. |
We could, but we probably will not. We want the dynamic configuration process to be as explicit as possible.
That will work. Again we want the dynamic configuration working in a step-by-step fashion and as explicit as possible. We ask the newly joined member to provide an expected configuration to match the current cluster configuration to ensure it joins into the cluster it wants. We will not make this process simpler by sacrificing explicitness. The reason is that:
|
Ok! It's clear to me now. Anyway, I was thinking on environments where you want to resize the datacenter. Thanks for the info! |
You probably think of running some etcd proxies on a lots of machines in the dc. That requires frequent changes. We will have a plan for that. :) |
Dynamic cluster resizing will be performed manually by cluster operators. Expose the necessary means (e.g. API operations) to do so.
Tracker ticket - work remaining:
etcdctl admin
commands to add/remove - add etcdctl admin commands for cluster configuration #1370The text was updated successfully, but these errors were encountered: