Mesos Cluster
Last updated
Last updated
Summary:
The INDIGO-DataCloud PaaS relies on for:
managed service deployment
user applications execution
The instantiation of the high-available Mesos cluster is managed by the INDIGO in a fully automated way as soon as a user request described by a TOSCA template is submitted. Once the cluster is up and running, it can be re-used for successive requests.
Mesos is able to manage cluster resources (cpu, mem) providing isolation and sharing across distributed applications (frameworks)
and are two powerful frameworks that can be deployed on top of a Mesos Cluster.
Sophisticated two-level scheduling and efficient resource isolation are the key-features of the Mesos middleware that are exploited in the INDIGO PaaS, in order to run different workloads (long-running services, batch jobs, etc) on the same resources while preserving isolation and prioritizing their execution.
INDIGO PaaS uses:
Marathon to deploy, monitor and scale Long-Running services, ensuring that they are always up and running.
Chronos to run user applications (jobs), taking care of fetching input data, handling dependencies among jobs, rescheduling failed jobs.
Automatic deployment through Ansible recipes embedded in TOSCA and HOT templates
All the services run in docker containers;
High-availability of the cluster components:
Leader election among master nodes managed by Zookeeper;
HA Load-balancing;
-Service discovery through Consul that provides also DNS functionality and health checks;
services are automatically registered in Consul as soon as they are deployed on the cluster
The external access to the deployed services is ensured through load-balancers in HA (unique entrypoint: cluster Virtual IP)
Cluster elasticity and application auto-scaling through CLUES plugin
Job submission and service deployment requests are described through TOSCA templates
The core components are:
These components are distributed on the cluster nodes as shown in the diagram below.
Master nodes
On every master node the following (dockerized) components run: zookeeper, mesos master, consul server, marathon, chronos
Slave nodes
On every slave node the following (dockerized) components run: mesos slave, consul agent
Load-balancers
On the two load-balancers the following (dockerized) components run: keepalived and haproxy-consul. keepalived ensures the high-availability of the load-balancer managing the cluster Virtual IP.
The following roles are available in Ansible Galaxy:
indigo-dc.zookeeper:
indigo-dc.consul:
indigo-dc.mesos:
indigo-dc.chronos:
indigo-dc.marathon:
indigo-dc.haproxy-consul:
indigo-dc.keepalived:
These ansible roles can be installed through ansible-galaxy command: ansible-galaxy install indigo-dc.rolename
Release
Component version
indigo_1
Mesos 0.28.0 Marathon 1.1.1 Chronos 2.4.0
Apache mesos
Marathon
Chronos
Please use the [INDIGO - DataCloud CatchAll GGUS Support Unit](
and for cluster set-up featuring high-availability, service-discovery and load-balancing;
Integration with the INDIGO
Definition of custom TOSCA for describing Chronos jobs and Marathon application
Cluster elasticity through plugin
Zabbix monitoring for Mesos, Marathon and Chronos;
for service discovery
cluster manager for efficient resource isolation and sharing across distributed services
a distributed task scheduler
for cluster management of long running containerized services
container runtime
populating Consul service discovery with Mesos tasks
bridging Marathon information to Consul KV
for dynamic haproxy configuration using Consul
source:
source:
source:
source:
-source:
source:
source:
Web site:
Documentation:
Releases:
Code repo:
Issue Tracker:
Web site:
Documentation:
Releases:
Code repo:
Issue Tracker:
Web site:
Documentation:
Releases:
Code repo:
Issue tracker:
)