Why we need Container Orchestration
- We don't like pets in server farms :)
- We want zero downtime
- We want auto-scaling
- We want to go across different cloud providers
Container Orchestration Options
- Docker Swarm
- Mesos Marathon
- Cloud Foundry Diego
- Apache Aurora
- Amazon ECS
- Azure container Service
As you could guess, it becomes difficult to choose one. So we thought of taking one Real World App and deploy it in different orchestration engines. For now we would look into Docker Swarm, Kubernetes and Mesos marathon.
What is needed to do the Container Orchestration
Multiple Nodes to be part of a cluster
Unique ID/Token to bind all the nodes in a unique cluster
Single source of truth about configuration for nodes
- Key-Value Store like etcd, consul
Network for containers of different nodes to talk to each other
- Some form of Overlay network like VxLAN.
- With possibility to plug different neworking solution like Calico.
One or more cluster master to manage the cluster and schedule the jobs/tasks
Scheduler to schedule the containers on nodes based on
- Constraints, like run the container where SSD storage is available
Service discovery within the cluster
- Internal DNS server
- Through environment variables
- Load balancer, HA proxy
Access to external shared storage
- Volume plugins
We are going to look at two examples :-
This is a simple example, which I borrowed from from DockerCon EU tutorial. In that tutorial, the steps are given to orchestrate the simple chat application using Docker Swarm. Here would take that same app and deploy it using Kubernetes and Mesos.
We thought a real world e-commerce platform would be a nice and came across Magento. While doing some browsing we came across this blog post to deploy Magento2 on Tutum., which gave us good reference.
So first we would deploy Magneto on differnet orhestration engines and then experiment with features like replication, auto-scaling etc.
Mark Shust for providing Magento2 Docker Compose file https://github.com/mageinferno/magento2-docker-compose