9 ms·
Call Me Maybe: Chronos
- fweespeech 11y ago> Transient resource or network failures can completely disable Chronos. Most systems tested with Jepsen return to some sort of normal operation within a few seconds to minutes after a failure is resolved. In no Jepsen test has Chronos ever recovered completely from a network failure. As an operator, this fragility does not inspire confidence. Honestly, that is the money shot. Its not worth running an off the shelf cluster system that isn't self-healing from a network partition and/or a node loss->node restored cycle.
- sbilstein 11y agoAnother big takeaway for me: "This isn’t the end of the world–it does illustrate the fragility of a system with three distinct quorums, all of which must be available and connected to one another, but there will always be certain classes of network failure that can break a distributed scheduler." As we build increasingly complex distributed from what are essentially modular distributed systems themselves, this is something to be aware of. The failure characteristics of all the underlying systems will bubble up in surprising ways.
- fweespeech 11y agoYes but the number of times I've had to manually heal a cluster in production in my professional life can be counted on one hand. A network partition like Jepsen tests for is a once-every-other-month problem due to network maintenance, hardware failures, etc. So yeah, it is the end of the world for me. I like not having to wake up in the middle of the night every few months.
- SEJeff 11y agoOne thing to note here, is that upstream mesos is working on removing Zookeeper as a dependency. That would at a minimum remove one of the three pieces. Note that I briefly evaluated Chronos, but tossed it aside as a toy when realizing it didn't support any form of constraints. Aurora is a very nice scheduler for HA / distributed cron (with constraints!) and long running services. It would be fantastic if Kyle would test out Aurora, if not only to break it so that upstream fixes it. He is generally successful in breaking ALL THE THINGS.
- bbrazil 11y agoMesos is looking at allowing things other than Zookeeper to be the dependency, I'm not aware of them removing the dependency altogether. https://issues.apache.org/jira/browse/MESOS-1806 https://issues.apache.org/jira/browse/MESOS-1806
- fidget 11y agoI do wonder why the GP would want to, given how ridiculously reliable zookeeper is.
- SEJeff 11y agoOh I love zookeeper and have no issues whatsoever with it. However, it is almost universally the first thing I hear people moan about when someone suggest they use Mesos. People don't like Zookeeper.
- SEJeff 11y agoIn MESOS-1806, it mentions replacing ZK with ReplicatedLog or etcd. The replicated log is a mesos native construct, that has no external dependencies. If you can replace ZK with a native Mesos construct, seems like it allows you to remove ZK entirely. I meant to say "optionally allow removing ZK as a dependency" in the original post. You're totally correct in that regard.
- ianburrell 11y agoThe latest version of Chronos added support for constraints, at least for simple EQUALS constraints. The annoying problem that I also encountered with Chronos was the lack of error reporting from the REST API. Invalid jobs would just return "400 Bad Request" with no error message. The error sometimes wouldn't even be reported in the logs.
- SEJeff 11y agoYeah I was playing with it > 6 months ago, and Aurora was solid then as well.
- rdtsc 11y agoIt all depends on the claim vendors make. I think that is the great stuff about Kyle's series -- he often looks at how the systems behave vs. how they are documented and promoted. If vendors fix things after the test, there are usually 2 types of fixes -- docs or code. Docs mean tell people how system really behaves and how data might be corrupted or actually fix the problem if possible. So if Chronos just says in bold red letters on the front -- "You'll lose data in a partition" or "Our system is neither C or A if you use these options" that's ok too. The users can then at least make an informed choice.
- deleted 11y ago[deleted]
- sbilstein 11y ago"Ordinarily in Jepsen we’d refer to these as “primary” and “secondary” or “leader” and “follower” to avoid connotations of, well, slavery, but the master nodes themselves form a cluster with leaders and followers, and terms like “executor” have other meanings in Mesos, so I’m going to use the Mesos terms here." hahaha, well naming things is one of the hardest problems in computer science after all.
- vezzy-fnord 11y agoIt's a total bikeshed issue, in any event. No one seems to mind the issue of Unix routinely forcing you to commit filicide and general killing of children, for instance.
- saryant 11y agoOr Akka's lovely akka.actor.dungeon.ChildrenContainer... http://doc.akka.io/japi/akka/2.3.9/akka/actor/dungeon/ChildrenContainer.html http://doc.akka.io/japi/akka/2.3.9/akka/actor/dungeon/Childr...
- duskwuff 11y agoWith a method called "shallDie", no less!
- justizin 11y agoThere's a difference between that and trying to work on a diverse team with people whose ancestors were slaves and avoiding common phrases like: "We need more slaves!" It's a bit of nomenclature that would never be used if people weren't mimicking choices from decades ago. What name to use other than slave might be a bikeshed issue, but the bikeshed is currently painted with a confederate flag. ;)
- vezzy-fnord 11y agoYou're only proving my point, really. The only things you can think of are Confederate flags and the trans-Atlantic slave trade, when slavery as an institution is as old as human civilization itself (and continues on well to this day). Incidentally, filicide is also ancient and ongoing.
- orf 11y agoAwesome read. The issue he made on github[1] is also worth it, brndnmtthws could have definitely handled that better. 1. https://github.com/mesos/chronos/issues/513 https://github.com/mesos/chronos/issues/513
- pavlov 11y agoNo kidding. Someone raises reasonable points, and the engineer responds with: "Like I suggested before, you should stop by our offices @ 88 Stevenson for lunch some day, and you can chat with our best and brightest about this (and other things) until the cows come home. Then you can save yourself a lot of back and forth, and nerdraging about computers." Aphyr spending his time finding bugs and unspecified behavior in their software is dismissed as "nerdraging". And instead of discussing it openly, he should spend a day and go to "88 Stevenson", wherever that is... I'm going to assume he means Stevenson Avenue, Polmont, Falkirk, Stirlingshire, United Kingdom -- since that's the first Google result I got for "Stevenson" as an address.
- dandandan 11y agoIt means San Francisco, they're both there.
- pavlov 11y agoSorry, I forgot the sarcasm tags. The point was that it's not the kind of reply you should make in a public issue tracker. It comes off as: "We're only interested in talking to people who are in San Francisco and are cool enough to hang out with us."
- bbrazil 11y ago> Several engineers suggest that Aurora is more robust, though more difficult to set up, than Chronos. I haven’t evaluated Aurora yet, but it’s likely worth looking in to. I've tried out Aurora (and helped improve the setup docs a small bit) and found it quite nice. If you're going to try it out use vagrant, and to deploy it in production I suggest working off the Vagrant setup: https://github.com/apache/aurora/blob/master/examples/vagrant/provision-dev-cluster.sh https://github.com/apache/aurora/blob/master/examples/vagran... > Instrument your jobs to identify whether they ran or not Prometheus.io let's you alert on when the job last succeeded, which is generally what you want. http://prometheus.io/docs/instrumenting/pushing/ http://prometheus.io/docs/instrumenting/pushing/ has a full example for Java.
- haosdent 11y agoAwesome analyze! :-)
- rdtsc 11y agoKyle series "Call Me Maybe" is great. The general take-away from most of them is -- do not believe the vendors of distributed systems. Even systems that were meant to solve consensus (etcd, consul) failed: https://aphyr.com/posts/316-call-me-maybe-etcd-and-consul https://aphyr.com/posts/316-call-me-maybe-etcd-and-consul Elasticsearch didn't do well, MongoDB, Kafka, etc. The only ones that did ok that I remember were: Zookeeper, Riak (with siblings), and maybe Cassandra.
- jxf 11y agoHe's also pretty favorable about Postgresql: https://aphyr.com/posts/282-call-me-maybe-postgres https://aphyr.com/posts/282-call-me-maybe-postgres
- rdtsc 11y agoPostgres was a bit of a funny one. I don't know what to think of it. The partition case studies was with a single server and clients. The failure was found related to the server accepting the transaction but the ack never reaching the client (due to partition) so client thinks transaction hasn't completed.
- perlgeek 11y agoYes, that surprised me too; I expected a cluster of several Pg servers instead.
- justizin 11y agoAnyone who has run a number of postgres replicas can tell you that their ability to recover from a network partition is directly proportionate to their wal_keep_segments value and there isn't otherwise much to it. If the network recovers while the last WAL log your replica read still exists on the server, your replica probably get to catch up, as long as your replica can read the logs as fast as they're being rotated out. Postgres doesn't really try much else in the realm of distributed systems, so there's not much else you can test. Skytools would be interesting, though, I've never felt particularly comfortable with replication schemes that trust an external process to ship rows and other changes, compared to the binary replication that will absolutely fail if you don't have every bit.
- 0xdeadbeefbabe 11y agoCan someone explain the call me maybe reference. Was it a movie or a song?
- zorked 11y agoIt's a song, and probably the tool and aphyr's blog posts will have more staying power than the song and the singer they are named after.
- sanderjd 11y agoHa, that's a good and funny point that hadn't occurred to me. More info in answer to the parent's question: the song is "Call Me Maybe" by Carly Rae Jepsen.
- mynameiswhatwho 11y agoYou're probably right but I think her new stuff ain't bad at all!
- clebio 11y agoIt's explained more thoroughly (and with extended jokes) in the first post from the series: https://aphyr.com/posts/281-call-me-maybe-carly-rae-jepsen-and-the-perils-of-network-partitions https://aphyr.com/posts/281-call-me-maybe-carly-rae-jepsen-a...
- justin66 11y agoAs always people should check out Aphyr's twitter page for more detail and local color. "really wish I had more time to dig into chronos because it has so many fascinating failure modes but I've got 2 other systems before talks!"
- baq 11y agoif i worked on a distributed system, i'd be thrilled and horrified at the same time if i saw a bug report from aphyr. the whole series is a gem, well worth an afternoon (or five).
- tpetr 11y agoAwesome post -- it'd be cool to see Kyle test more Mesos frameworks. Singularity (http://github.com/HubSpot/Singularity http://github.com/HubSpot/Singularity) is another good option for running scheduled jobs in Mesos (along with web services, background workers, and one-off tasks). It fails fast like Chronos, but we made it clear to use monit, supervisor, or systemd in the docs. ;) We run our entire product on it (~1,600 deployable items) with no issues. Our PROD cluster has launched 8,000,000 tasks so far in 2015!
- lordlarm 11y agoAre there many of you actually using Chronos in production? I'm not sold that this project will still be with us in a couple of years.. I'm not saying the idea is bad, but comparing the developer community of Marathon with Chronos you see some obvious differences in commits, developers, issues (and responses), releases etc. We've been using it in conjunction with Marathon and Mesos, and my impression is that it's a now half-dead project riddled with bugs (especially in the web UI) and I'm unsure whether we should invest more resources and infrastructure around this project. Aurora does look interesting. But Apache doesn't have a much better reputation, and I'm not particularly keen on going away from Marathon. Any DevOps engineers with container/mesos infrastructures wanting to chime in?
- jacques_chester 11y agoHave a look at Lattice (http://lattice.cf http://lattice.cf), which is extracted from Cloud Foundry. Disclaimer: I work for Pivotal (in Labs), which donates the largest chunk of engineering effort to Cloud Foundry, including the Lattice team.
- lordlarm 11y agoLooks like a very interesting project which I'll keep a keen eye on. We're probably not ready to switch our entire stack from Mesos to Lattice though, especially considering you're missing some important bits such as external service discovery etc. (by the looks of it) We're currently doing Marathon on Mesos with gliderlabs/registrator which syncs Docker and Consul - and then we're using consul-template + HAProxy for exposing applications externally. Works quite nice. The differences (and advantages) between Lattice and Mesos could've been made clearer too I guess, although your docs and FAQs are quite nice.
- jacques_chester 11y agoIf you want the full stack, you go from Lattice to Cloud Foundry. It gives you service injection, logging, routing and a bunch of other stuff I forget right now. And it doesn't require you to build your own snowflake PaaS, which you'll be married to forever at your own expense. I've worked on CF so I'm biased in its favour. But my actual paying job is helping clients to deliver user value. Tinkering around with various tools is fun, but it's not delivering user value. Typing cf push app-name Is. And it works. It just plain old works. That makes my life 100x easier.
- deleted 11y ago[deleted]
- wereHamster 11y ago> for instance, it omits that Chronos nodes are fragile by design and must be supervised by a daemon to restart them. Wat? Why is that necessary to mention? Every process is fragile and needs to be supervised!