https://github.com/containersolutions/mesosframework
Create a mesos framework with just an application.properties file!
https://github.com/containersolutions/mesosframework
Last synced: 10 months ago
JSON representation
Create a mesos framework with just an application.properties file!
- Host: GitHub
- URL: https://github.com/containersolutions/mesosframework
- Owner: ContainerSolutions
- License: apache-2.0
- Created: 2016-03-10T14:22:09.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-04-18T07:22:44.000Z (about 10 years ago)
- Last Synced: 2025-08-17T13:32:50.863Z (10 months ago)
- Language: Java
- Size: 39.1 KB
- Stars: 11
- Watchers: 47
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# mesos-framework
Create a mesos framework with just an application.properties file!
# Introduction
Writing Frameworks for Apache Mesos is hard. We created the [Mesos Starter](www.github.com/containersolutions/mesos-starter) project to reduce the amount of boilerplate.
MesosFramework is a pre-built version of Mesos-Starter, that allows users to run a binary or Docker container as a Framework via a single configuration file.
# Features
(Most features come from the [Mesos-Starter](https://github.com/ContainerSolutions/mesos-starter) project)
- [x] State stored in ZooKeeper
- [x] Mesos Authorisation
- [ ] ZooKeeper Authorisation (requires testing)
- [x] Jar mode (no docker)
- [x] Resource specification (including port)
- [x] Import Kibana.yml settings file
- [x] "Spread" orchestration strategy (Spreads instances across distinct hosts)
- [x] Decoupled from Kibana. Use any version.
- [x] Decoupled from Mesos. Use any version 0.25+
- [x] Horizontal scaling via JMX
Added by MesosFramework:
- [x] Live horizontal scaling via a REST endpoint
- [x] Single endpoint to check health of all instances
- [x] Customizable mesos healthcheck command
# Quick start
Once you have decided upon a binary or Docker container to run, you simply need to call:
`docker run -d containersol/mesosframework:latest --spring.config.location=your.application.properties`
or if you don't want to use Docker:
`java -jar mesosframework-0.0.1.jar --spring.config.location=your.application.properties`
# Application properties
All options can be specified as either:
- A cli parameter: `--mesos.command=pwd`
- A properties file: `mesos.command=pwd`
- Java options: `-Dmesos.command=pwd`
- Environmental variables: `MESOS_COMMAND=pwd`
In that order of preference.
To pass a configuration file, the following property must be set:
- `--spring.config.location=my.properties` (Or the env var `SPRING_CONFIG_LOCATION`, etc.)
Valid configration options are specified by the [Mesos Starter](www.github.com/containersolutions/mesos-starter) project.
Please see the [examples](./docs/examples) folder for examples.
You can also provide new options with `${my.option}` inside the properties file. Now you can provide that option with `--my.option=Hi!`
# Extensions to the Mesos-starter project
This project adds to the Mesos-starter project on the following points:
## Horizontal scaling
It adds an endpoint at the following location to control the number of instances in the cluster. The endpoint matches the properties file definition of the same name:
`GET /mesos/resources/count` Returns the current number of requested instances. For example to get the current number of instances:
```
$ curl -s http://localhost:8080/mesos/resources/count
3
```
`POST /mesos/resources/count` with a body of type `Integer` will set the number of requested instances. For example, to set the number of instances to 1:
```
$ curl -XPOST -H 'Content-Type: text/plain' http://localhost:8080/mesos/resources/count -d 1
```
## Healthcheck
An extra healthchecks to monitor the state of the running tasks is exposed.
`GET /health` returns the health of the running tasks. If `count == running instances` the health will be `UP`. For example:
```
$ curl http://localhost:8080/health
{"status":"UP","task":{"status":"UP","mesos.resources.count":1,"instances":1,"TASK_STAGING":0,"TASK_STARTING":0,"TASK_RUNNING":3,"TASK_KILLING":0,"TASK_FINISHED":0,"TASK_FAILED":0,"TASK_KILLED":0,"TASK_LOST":0,"TASK_ERROR":0},"diskSpace":{"status":"UP","total":9896046592,"free":2796249088,"threshold":10485760}}%
```
# Sponsors
This project is sponsored by Cisco Cloud Services.
# License
Apache License 2.0