GithubHelp home page GithubHelp logo

digitaloptimizationgroup / microservices-infrastructure Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mantl/mantl

0.0 3.0 0.0 10.77 MB

Mantl is a modern platform for rapidly deploying globally distributed services

Home Page: http://microservices-infrastructure.readthedocs.org/en/latest/

License: Apache License 2.0

Shell 5.50% Python 44.69% Makefile 0.38% Go 11.97% JavaScript 17.33% HTML 2.15% HCL 17.97%

microservices-infrastructure's Introduction

image

Microservices-Infrastructure is now MANTL.

See http://mantl.io for more details.

Existing Developer? For information on how the rename affects you, see our handy FAQ

Overview

Join the chat at https://gitter.im/CiscoCloud/microservices-infrastructure Stories in Ready

Mantl is a modern, batteries included platform for rapidly deploying globally distributed services

Table of Contents

Features

  • Terraform deployment to multiple cloud providers
  • etcd distributed key-value store for Calico
  • Calico a new kind of virtual network
  • Mesos cluster manager for efficient resource isolation and sharing across distributed services
  • Marathon for cluster management of long running containerized services
  • Consul for service discovery
  • Vault for managing secrets
  • Docker container runtime
  • collectd for metrics collection
  • Logstash for log forwarding
  • mesos-consul populating Consul service discovery with Mesos tasks
  • marathon-consul update consul k/v with Marathon tasks
  • GlusterFS for container volume storage
  • Traefik for proxying external traffic
  • Mantl API easily install supported Mesos frameworks on Mantl
  • Mantl UI a beautiful administrative interface to Mantl
  • Multi-datacenter support
  • High availability
  • Security

Architecture

The base platform contains control nodes that manage the cluster and any number of resource nodes. Containers automatically register themselves into DNS so that other services can locate them.

Single-DC

Once WAN joining is configured, each cluster can locate services in other data centers via DNS or the Consul API.

Mult-DC

Control Nodes

The control nodes manage a single datacenter. Each control node runs Consul for service discovery, Mesos leaders for resource scheduling and Mesos frameworks like Marathon.

In general, it's best to provision 3 or 5 control nodes to achieve higher availability of services. The Consul Ansible role will automatically bootstrap and join multiple Consul nodes. The Mesos Ansible role will provision highly-availabile Mesos and ZooKeeper environments when more than one node is provisioned.

Control Node

Resource Nodes

Resource nodes launch containers and other Mesos-based workloads.

Resource Node

Edge Nodes

Edge nodes are responsible for proxying external traffic into services running in the cluster.

Edge Node

Getting Started

All development is done on the master branch. Tested, stable versions are identified via git tags.

    git clone https://github.com/CiscoCloud/microservices-infrastructure.git

To use a stable version, use git tag to list the stable versions:

git tag
0.1.0
0.2.0
...
0.5.0

git checkout 0.5.0

A Vagrantfile is provided that provisions everything on a single VM. To run, first ensure that your system has 4GB of RAM free, then:

sudo pip install -r requirements.txt
./security-setup
vagrant up

Note:

  • There is no support for Windows at this time, however support is planned.
  • Vagrant 1.7.3+ is required for best results.
  • There is no support for the VMware Fusion Vagrant provider; hence your provider is set to Virtualbox in your Vagrantfile. In order to start running just issue the vagrant up command.

Software Requirements

Requirements for running the project are listed in requirements.txt. Of note: Ansible 1.9 or later is required; also Python 2.7 is required. All the software requirements are currently distributed as Python modules, and you can pip install -r requirements.txt to get them all at once.

Deploying on multiple servers

Please refer to the Getting Started Guide, which covers multi-server and OpenStack deployments.

Documentation

All documentation is located at https://microservices-infrastructure.readthedocs.org.

To build the documentation locally, run:

sudo pip install -r requirements.txt
cd docs
make html

Roadmap

Core Components and Features

  • Calico
  • Mesos
  • Consul
  • Multi-datacenter
  • High availability
  • Rapid immutable deployment (with Terraform + Packer)

Mesos Frameworks

  • Marathon
  • Kubernetes
  • Kafka
  • Riak
  • Cassandra
  • Elasticsearch
  • HDFS
  • Spark
  • Storm
  • Chronos
  • MemSQL

Note: The most up-to-date list of Mesos frameworks that are known to work with Mantl is always in the mantl-universe repo.

Security

  • Manage Linux user accounts
  • Authentication and authorization for Consul
  • Authentication and authorization for Mesos
  • Authentication and authorization for Marathon
  • Application load balancer (based on HAProxy and consul-template)
  • Application dynamic firewalls (using consul template)

Operations

  • Logging
  • Metrics
  • In-service upgrade with rollback
  • Autoscaling of Resource Nodes
  • Self maintaining system (log rotation, etc)
  • Self healing system (automatic failed instance replacement, etc)

Platform Support

  • Vagrant (Mac OSX + VirtualBox)
  • Vagrant (Windows + VirtualBox)
  • OpenStack
  • Cisco Cloud Services
  • Cisco MetaCloud
  • Cisco Unified Computing System
  • Amazon Web Services
  • Microsoft Azure
  • Google Compute Engine
  • VMware vSphere
  • Apache CloudStack
  • Digital Ocean

Please see milestones for more details on the roadmap.

Development

If you're interested in contributing to the project, install Terraform and the Python modules listed in requirements.txt and follow the Getting Started instructions. To build the docs, enter the docs directory and run make html. The docs will be output to _build/html.

Good issues to start with are marked with the low hanging fruit tag.

Getting Support

If you encounter any issues, please open a Github Issue against the project. We review issues daily.

We also have a gitter chat room. Drop by and ask any questions you might have. We'd be happy to walk you through your first deployment.

Cisco Intercloud Services provides support for OpenStack based deployments of Mantl.

License

Copyright © 2015 Cisco Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License").

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

microservices-infrastructure's People

Contributors

stevendborrelli avatar keithchambers avatar brianhicks avatar chrisaubuchon avatar ryane avatar langston-barrett avatar avnik avatar zogg avatar kenjones-cisco avatar tanyacouture avatar corebug avatar floriangrundig avatar oleksandrberchenko avatar peterlamar avatar robodenitro avatar tpolekhin avatar tdeckers avatar metahertz avatar wangqiang8511 avatar bketelsen avatar eirslett avatar objectivejoe avatar maier avatar abn avatar bbaassssiiee avatar remmelt avatar ctrlrsf avatar saswatp avatar sjoerdmulder avatar gitter-badger avatar

Watchers

Ilija Ljubicic avatar James Cloos avatar Shalom Volchok avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.