GithubHelp home page GithubHelp logo

carol8421 / paas-tools Goto Github PK

View Code? Open in Web Editor NEW

This project forked from imperodesign/paas-tools

0.0 1.0 0.0 9.47 MB

Impero PaaS tools.

License: MIT License

Makefile 2.56% Ruby 0.61% Go 39.50% Dockerfile 0.48% Shell 7.06% Batchfile 0.41% Python 47.77% HCL 0.06% HTML 0.49% CSS 0.86% JavaScript 0.20%

paas-tools's Introduction

Impero PaaS Tools

CAUTION: FOR REAL DEV/OPS ONLY!

This repo contains everything you need to:

  • set up the Impero PaaS infrastructure from scratch on AWS
  • update Impero PaaS infrastructure
  • create, deploy, and destroy an application

Impero PaaS infrastructure is built on top of Deis and AWS. Read more about Deis components.

A brief of whattafuck we use at Impero

The infrastructure

At Impero we have an infrastructure basically composed of two Deis clusters, two MongoDB Replica Set, two PostgreSQL and two AWS Aurora databases, one of each for production and staging. Our staging resources are of course reduced at the minimum. Since Deis is a multi-host clustered PaaS, we can easily scale up when we are running out of resourced on the cluster.

Logging and Data Analysis

We use a combination of Sentry, Sumologic and Papertrail for logging and data analysis.

Applications workflow

Every git repository has two branches master and development, production and staging respectively. The idea of the flow is the following:

checkout development -> app changes -> local tests -> commit -> push development -> CI tests -> staging deployment -> user tests -> merge development into master -> local tests -> push master -> CircleCI tests -> production deployment -> final user tests

Architecture

Architecture

More details [here](http://docs.deis.io/en/latest/understanding_deis/architecture/).

Components

Deis consists of a number of components that combine to create a distributed PaaS. Each Deis component is deployed as a container or set of containers. The components are: Controller, Database, Builder, Registry, Logspout, Logger, Publisher, Router, Store.

Three nodes cluster (impero default) failover

Losing One of Three Nodes

Losing one of three nodes will have the following effects: Ceph will enter a health warn state but will continue to function. Anything scheduled on the downed node will be rescheduled to the other two nodes. If your remaining nodes don’t have the resources to run the new units, this could take down the entire platform When you scale up to three nodes again, Ceph and Etcd will still think one member is down. You will need to manually remove the downed node from Ceph and Etcd.

Losing Two of Three Nodes

Losing two of three nodes will have the following effects: Ceph will enter a degraded state and go into read-only mode. Etcd will enter a degraded state and go into read-only mode. Anything scheduled on the downed node will be rescheduled to remaining node. If your remaining node doesn’t have the resources to run the new units, this could take down the entire platform. When you scale up to three nodes again, Ceph and Etcd will still think two members are down. You will need to manually remove the downed nodes from Ceph and Etcd.

Repository Organisation

deis

This folder contain the infrastructure provisioning files, both for staging and production clusters.

.deis

This folder contain deis units.

bin

This folder has been created to contain deis and deisctl respectively. deis is a “dev” tool, used to deploy and scale applications to a Deis platform. deisctl is an “ops” tool, used to configure and manage the Deis platform itself.

scripts

Scripts helpers for PaaS application management. See instructions.

dockerfiles

Blank dockerfiles to use with your web app.

Readings

References

  • Deis - Open source PaaS that makes it easy to deploy and manage applications on your own servers
  • CoreOS - Minimal operating system that supports popular container systems out of the box
  • Fleet - A scheduling backend included with CoreOS
  • Docker - Containers wrap up a piece of software in a complete filesystem
  • PostgreSQL - Object-relational database system
  • Git - Distributed version control system
  • Ceph - Distributed object store and file system designed to provide excellent performance, reliability and scalability
  • Nginx - HTTP and reverse proxy server
  • Logspout - Log routing for Docker container logs

paas-tools's People

Contributors

jacopodaeli avatar

Watchers

Carl 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.