Etcd Clustering in AWS(engineering.monsanto.com) |
Etcd Clustering in AWS(engineering.monsanto.com) |
This was basically the repeated experience I had which caused me to abandon etcd for the time being.
If it can barely ever heal, what the fuck good is it? And I found that it could barely ever heal. A 3-node CoreOS cluster I ran _always_ crashed when it attempted a coordinated update, and rarely could be repaired with the help of #CoreOS over hours.
Because CoreOS pushes out updates with versions of etcd incompatible with recent versions, the etcd cluster could never survive the upgrade.
Add this to the fact that the CEO of CoreOS told me in person that he expected them to be the _only_ Operating System on the internet, and I'm generally not along for the ride with CoreOS any longer.
Consul, Mesos, and Docker are looking good.
Anyone interested in this space should check out:
https://github.com/CiscoCloud/microservices-infrastructureBut I also handle upgrading releases differently, that's not something I trusted from the beginning and it's easy enough to disable their update system and stand up new instances with upgraded CoreOS images.
Also, looking at your quote I would consider it very out of context, the previous sentence right before that:
"If there were any changes to these etcd machines, AWS would reboot them to apply the changes, potentially all at the same time."
So they had Cloudformation potentially rebooting all there machines at the same time, I think any cluster is going to have an issue when that happens and really has nothing to do with CoreOS's update system.
> Also, looking at your quote I would consider it very out of context, the previous sentence right before that:
> "If there were any changes to these etcd machines, AWS would reboot them to apply the changes, potentially all at the same time."
>So they had Cloudformation potentially rebooting all there machines at the same time, I think any cluster is going to have an issue when that happens and really has nothing to do with CoreOS's update system.
Two things:
(a) I'm saying that etcd has a tendency to break in _exactly_ _the_ _same_ _way_ without AWS rebooting anything.
(b) Production systems have a tendency to fail completely and all power on (or experience the end of a network partition) at the same time. It is absolutely necessary for anything as essential as etcd claims to be to be able to deal with a situation where all machines are powered off or unreachable to each other, and that comes to a sudden end.
CoreOS's update system happens to trigger this on its' own, because when it updates, it relies on etcd.
If you're not going to rely on CoreOS to update itself, what in the world is the point of CoreOS?
I'm just saying there are other boxes of sticks, putting some sticks in a box ain't that fuckin' hard, and these particular stick-gatherers are suffering from a dangerous bout of megalomania.
Feel free to lean your livelihood up against whatever box of sticks you please. :)
On the other hand I've never seen the problem you describe where the cluster won't heal after an upgrade.
I really want to like the CoreOS ecosystem, but IMO it's still beta-quality software.
Obviously, CoreOS is going to start wanting your money pretty soon, as well.
Having worked for one of the earliest commercial linux distributors, I have little faith in such an effort to get anywhere. Red Hat and Canonical can barely make a dime.
Mesosphere isn't really an alternative to etcd, though. It relies on Zookeeper, which isn't perfect, but is much more battle torn than either Consul or etcd.
I have high hopes for something to replace Zookeeper, but I'm not deploying something in infancy which inherently can't heal from outages.
Mesos is an Apache project, did you mean Mesosphere?
That's the part that would concern me the most. The guy sounds delusional at best.
In all seriousness, this is really interesting. They solved some of the problems associated with persisting a cluster and we're likely going to use that. Feels weird thanking them for anything though.
Edit: Is anyone using CoreOS in a physical DC? We're using AWS with ~1.5k VMs but have another 5-6k hosts in physical DCs. Trying to move us towards containers but struggling.
For example, we use CF (old version), and we hit https://github.com/coreos/etcd/issues/863.
Autoscaling Groups can be configured to have instances join multiple ELBs. We have one be the regular ELB to access the instances with, and the other is an internal ELB that only allows connections from instances in the cluster to other instances in the cluster on the etcd port (controlled via security groups).
When an instance comes up, it adds itself to the cluster via the internal ELB's hostname. The hostname is set in Route 53.
The biggest issues we've been having with etcd continue to be simultaneous reboots and/or joins to the cluster. It would also be great if the membership timeout feature that used to exist in 0.4 made its way back in. Right now, each member has to be explicitly removed rather than eventually timing out if it hasn't joined back in.
Looking forward to hear any other approaches folks have taken.
Here's one reason to run Docker on AWS: Putting everything in Docker containers makes it far easier to migrate off AWS if/when you want to.
/etc is where your config files go on your server etcd is where your config goes for the distributed system
Redhat Fiscal 2015 revenue: $1.79 billion. Net income: $180 million.
Their fastest growing business areas are incidentally exactly in this space: OpenShift, OpenStack and Ceph.