GithubHelp home page GithubHelp logo

edwardt / microservices-infrastructure Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mantl/mantl

0.0 3.0 0.0 4.65 MB

Microservices infrastructure is a modern platform for rapidly deploying globally distributed services

License: Apache License 2.0

Python 100.00%

microservices-infrastructure's Introduction

Overview

Microservices infrastructure is a modern platform for rapidly deploying globally distributed services

##Features

  • 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
  • Docker container runtime
  • Multi-datacenter support
  • High availablity

####Architecture The base platform contains control nodes that manage the cluster and any number of compute 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

####Compute Nodes

The compute nodes launch containers and other Mesos-based workloads. Registrator is used to update Consul as containers are launched and exit.

Compute Node

##Getting Started

A Vagrantfile is provided that provisions everything on a single VM. To run (ensure that your sytem has 4GB or RAM free):

	vagrant up

###Deploying on multiple servers If you already have running instances (Centos7 is the only Linux distribution supported at this time), do the following to deploy the software:

  1. Install the software components: sudo pip install -r requirements.txt
  2. Create an Ansible inventory file. You can use the the following files as examples, replacing the host names with your instances:
    • inventory/1-datacenter
    • inventory/2-datacenter Multi-DC with WAN join. Ensure that DCs have network connectivity to each other, especially for ports 8300-8302.
  3. Run ansible-playbook -i <your_inventory_file> site.yml

The Getting Started Guide 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

License

Copyright © 2015 Cisco Systems, Inc. All rights reserved.

Released under the Apache 2.0 License. See LICENSE.

microservices-infrastructure's People

Contributors

keithchambers avatar stevendborrelli avatar brianhicks avatar chrisaubuchon avatar npateriya avatar

Watchers

edwardt avatar James Cloos avatar  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.