Question

Some background: I'm building a pretty involved website (as far as used stack concerned). Components among some other smaller stuff include:

  • Elasticsearch
  • Redis
  • ZeroMQ
  • Couchbase
  • RethinkDB
  • traffic through Nginx -> Node

The intention is to have a high available website running but be pretty lean (and low cost) at the same time.

Current topology I'm considering:

  • 2 webservers in active/active config with DNS-loadbalancing. (Nginx, static asset serving, etc. + loadbalancing to the second tier:
  • 2 appservers in active/active. Most of the components like Elasticsearch can do sharding/replication themselves so this should not be as hard to set-up (fingers crossed)
  • session handling in replicated Redis

Naturally I want monitoring and alerting when something is wrong, and ideally the system should be able to handle failures automatically. Stuff like: promote Redis from Slave to Master, or even initialize a new ec2-instance, if I were to be on Ec2 that is.

However, I want to be free from a particular hosting provider. Which I believe (please correct if wrong) is where Openstack comes in.

Is it correct that: - openstack allows me to control the entire lifecycle of my website-stack (covering multiple boxes / virtual machines? ) - Does it allow me to (with work on config of course) to spin-up instances, monitor, alert when something goes wrong, take appropriate actions in those scenario's, etc.?

Or is Openstack just entirely the wrong tool for the job? Anything else that would fit better as a sort of "management layer" on top of my entire website?

Thanks

Was it helpful?

Solution

OpenStack isn't VMWare ESX. It's not a very good straight up simple virtual machine hosting environment. If what you want is a way to easily manage virtual machines I might suggest Ganeti. It even has HA failover of virtual machines. In a two physical host environment, this is probably the way to go.

What OpenStack gives you that Ganeti won't is RESTful APIs. It has AWS Compatible APIs, but it has OpenStack APIs that are even better. If you want to automate elasticity or healability this is huge. Being able to link up in python using existing client APIs and just write scripts that spin up instances as needed is something joe DevOps is all about.

So I guess it comes down to what your level of commitment is and what you need. For 2 physical machines OpenStack probably isn't the best solution. But, down the line when you've got more apps and more vms than you can manage manually, openstack will be there to help you write code that makes your datacenter dance to your melodic tunes.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top