• Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created about 9 years ago
  • Updated over 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Cloud Foundry on Mesos Framework

CloudFoundry-Mesos

CloudFoundry-Mesos replaces the current auctioning process of CloudFoundry Diego with "Mesos Offers" and at the same time makes the Diego auctioneer component as a Mesos framework. This is a very initial version of the framework and is a work-in-progress. In the coming days and weeks, all of us as a community will keep refining these details as we go along. The main goal is to achieve “Improvements in Resource Management and Efficiencies as well as overall Scalability” across all applications frameworks, including Cloud Foundry PaaS environment.

Implementation

CloudFoundry-Mesos

  • Create Mesos Scheduler and Executor. The scheduler currently provides two strategies, binpack which tries to put CloudFoundry apps into as few cells as possible, and spread which is the opposite of binpack. Both of these scheduling strategies are based on the RAM usage and the implementation is simply for demo purpose at this time. The executor uses rep API to launch and monitor Diego Tasks and LRPs.

  • Package Diego cell into Docker image to minimize the Mesos Slave host system dependency and be able to create a cell on the fly. Due to Garden-Linux requirements, the Docker Container is started in privileged mode and uses the host networking. It also maps two directories for storing data and logs. The executor binary is packed together with the Diego Cell jobs (consul, metron, rep and garden) into this image as well.

    In the future, we are planning to make Mesos Garden aware so that Mesos can directly see the detail resource usage of each running garden container. There will be no need for nesting the Garden container within the Docker container.

  • Create a new auctionrunner that collects the auctions and hands them over to the Mesos scheduler.

  • Patch auctioneer by replacing the previous auctionrunner package.

  • Patch rep so the /state API would return not only LRPs but the Tasks as well (this is no longer needed in latest version of Diego).

Key Features on Mesos

  • On-demand Resource Allocation: CloudFoundry Diego cells are dynamically created and are removed if not needed.
  • Resource Sharing: A common Mesos cluster can support multiple frameworks for various application types such as Hadoop, Spark, Redis, CloudFoundry, etc.
  • Scheduling Algorithm Customization.
  • Mesos scales up to 10,000s of nodes. This may help increase the CloudFoundry cluster size.

Please find the demo video on YouTube.

Usage

To get up and running with CloudFoundry-Mesos, please follow the Getting Started Guid.

If you are not familiar with CloudFoundry or Mesos, the following documents would help:

Future Work

  • Garden as Mesos Containerizer
    • Garden container nested within Docker container may not be the right way
    • Granular resource monitoring
    • Requires Garden pre-installed in each Mesos slave
    • Probably requires to patch Diego rep and executor
  • BTRFS=>AUFS transition in latest Garden Linux
    • AUFS requires kernel support
  • Improve Error Handling
  • Scheduling strategy and constrains and more
  • Multiple RootFS support
  • Test for performance and scalability
  • Windows support?
  • Put other Cloud Foundry components on Mesos?
    • Scale other CF components (such as router for example)

Contributing

Contributions are welcome. Please refer to CONTRIBUTING.md for guidelines.

More Repositories

1

chronos

Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules
Scala
4,388
star
2

spark

Lightning-fast cluster computing in Java, Scala and Python.
Scala
1,426
star
3

mesos-go

Go language bindings for Apache Mesos
Go
543
star
4

mesos

PLEASE NOTE: Mesos is now hosted in Apache git! Get it using git clone https://git-wip-us.apache.org/repos/asf/mesos.git
C++
417
star
5

kafka

Apache Kafka on Apache Mesos
Scala
415
star
6

elasticsearch

Elasticsearch on Mesos
Java
242
star
7

hadoop

Hadoop on Mesos
Java
176
star
8

storm

Storm on Mesos!
Java
138
star
9

mr-redis

Redis on Apache Mesos
Go
127
star
10

mesos_exporter

Prometheus Mesos Exporter
Go
104
star
11

logstash

Logstash on Mesos
Java
67
star
12

docker-compose-executor

DEPRECATED: Find the new docker compose executor here https://github.com/paypal/dce-go
Java
56
star
13

kibana

Kibana on Mesos
Shell
27
star
14

mesos-distcc

Distcc framework for Mesos.
Python
27
star
15

modules

Mesos modules examples and open source modules outside of the Apache Mesos source tree.
C++
26
star
16

cdh-mesos

Patched version of Cloudera's Distribution of Hadoop with Mesos support
Java
13
star
17

mih

Mesos-in-Hadoop: allows launching a Mesos cluster as a Hadoop job
Java
9
star
18

go-proto

Mesos protobuf bindings for Go.
Go
5
star
19

llvm

Mesos LLVM tools
Dockerfile
4
star
20

mesos-packaging

Packaging for Apache Mesos.
Shell
3
star
21

3rdparty

Collection of the 3rdparty dependencies bundled into Mesos.
3
star
22

homebrew-llvm

[DECPRECATED, USE https://github.com/mesos/llvm INSTEAD] Mesos LLVM tools for OS X
Ruby
1
star
23

mesos-rxjava

RxJava client for Apache Mesos HTTP APIs
Java
1
star