Created
June 2, 2014 21:03
-
-
Save ericfode/bbd45ea75144ea91fb8f to your computer and use it in GitHub Desktop.
Welcome document
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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