Skip to content

Instantly share code, notes, and snippets.

@ericfode
Created June 2, 2014 21:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ericfode/bbd45ea75144ea91fb8f to your computer and use it in GitHub Desktop.
Save ericfode/bbd45ea75144ea91fb8f to your computer and use it in GitHub Desktop.
Welcome document
Goal
------
Set up a dynamic, scalable, sutainable application stack using ansible.
Components
----------------
* Web application (Bitcoin metrics thing in a few langs)
* Postgres (Database) http://www.postgresql.org/
* Consul (Dynamic DNS and config store) http://www.consul.io/
* Riemann (Monitoring) http://riemann.io/
* Librato (Metric Visualization) http://librato.com
* Hipache (Load balancing) https://github.com/dotcloud/hipache
* Redis (KV store for Hipache) https://redis.io
Design Goals
===========
**Application**
* The web app needs to use a database for something
* The web app needs to generate metrics and log them to reimann
* The web app needs to have an endpoint that a stream of bitcoin/stock metrics can be dumped into
* The web app is load balenced by hipache
**DNS (Consul)**
* Consul monitors what servers are currently attached to the cluster
* Consul holds all of the configuration information
* Consul is running checks to monitor the health of our systems
**Database (Postgres)**
* One database instances per web app
* One slave database per web app
* Metrics of some sort
**Metrics Pipeline (Reimann)**
* Reimann is accessable from all servers in all datacenters
* Reimann has all metrics generated forwarded to it
* Reimann has repl accessable from the outside world
* Reimann forwards some metrics things to librato
Iterations
=========
**Set up service discovery with consol**
Everything is going to need to be able to discover eachother and the rudimentory monitor should be nifty. So this is the first component that needs to be setup.
*You will probably have to set up firewall rules to be able to get to the consul web interface*
1. Consul on single instance [ http://www.consul.io/intro/getting-started/install.html http://www.consul.io/intro/getting-started/agent.html ]
2. Consul web interface setup http://www.consul.io/intro/getting-started/ui.html
2. Consul as ansible cookbook
3. Consul on bootstraped node and member node
**Set up simple web app**
This should be a simple sinatra app that just displays the name of the instance that it is running on as the only thing on a web page. This will allow us to make sure that the routing is working properly with consul.
1. Put this on a single instance
* it is accessible from the outside world
* only ssh and http ports are accessable
* health check with consul http://www.consul.io/intro/getting-started/checks.html
* registered as service with consul http://www.consul.io/intro/getting-started/services.html
2. Put app on multiple instances
* the page is different most times you load it
* all of the servers should be visible in consul
3. App should log every time a user accesse it
**Reimann**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment