- Update: přidal jsem do článku další věci zmíněné v komentářích, všem děkuji za příspěvky.
- Update 23.2.2015: Přidán odkaz na Centurion od New Relic
V poslední době se zabývám technologiemi pro řízení clusterů s docker konteinery.
Pokud by to někoho zajímalo, zkusím jsem shrnout s čím jsem se potkal a kde vidím možné využití.
Nástroje, které můžete použít cluster management:
- Apache Mesos (cpp, api for java, python, c++)
- Docker Swarm (golang)
- CoreOS Fleet (golang)
- Google Kubernetes (golang)
- Spotify Helios (java)
- New Relic Centurion (ruby)
potom k tomu ješte patří některé frameworky pro Mesos a to Marathon a Chronos. A Kubernetes Framework for Apache Mesos.
Ještě potřebujete nástroj pro service discovery:
- CoreOS Etcd (golang)
- Hashicorp Consul (golang)
- Apache Zookeeper (java)
Etcd používá Kubernetes a další projekty. Service discovery je potřeba pro management clusteru. Můžete použít stejně jednoduše i ostatní projekty.
Apache Mesos umí pracovat s různorodým prostředím včetně Amazon ECS service. Framework Marathon vám potom slouží k pouštění dlouho běžících konteinerů pro aplikace a Chronos typicky pro batch processing například pro zpracování velkých dat. S Mesosem musíte provozovat ZooKeeeper pro discovery service.
Protože se snažím Javě vyhnout a raději volím nástroje v jiných jazycích, kde mám větší znalosti. Pro discovery service clusteru bych raději použil Consul nebo Etcd.
Google Kubernetes je poměrně vyspělý nástroj používaný pro Google Cloud a adaptovaný například RedHatem pro OpenShift V3. Tam mám trochu výhradu, že to nemá podporu pro více uživatelů a neumí pracovat s externím filesystémy co vím. Ale dá se používat na tvorbu dokonce hybridních clusterů mezi více poskytovateli (AWS, Google Cloud, OpenShift, fyzické stroje).
Docker Swarm je nástroj pro řízení clusterů konteinerů přímo od Dockeru, ale kromě základních příkladů není k dispozici nic většího, poporuje několik discovery service (etcs, consul, zookeeper). Nevím o nikom, kdo by to používal ve větším měřítku.
CoreOS Fleet je systemd a etcd a nemám s ním zkušenosti vůbec žádné. Projekty kolem CoreOS jsou zajímavé. Mají vlastní technologii konteinerů Rocket.
Stejně jako CoreOS snaží se o podobnou věc i Project Atomic od RedHatu. Vytvořit základní systém pro práci s konteinery.
Závěr je asi takový, že pokud budete chtít řídít vlastní cluster asi zvolíte buď Mesos nebo Kubernetes. Osobně asi budu volit Kubernetes, co vy?