Solution for HA production infrastructure and server management

1/7/2018

My company mostly specialize in web and mobile development. Some of our clients want to have backend or web applications hosted and managed by us, because of that we have several apps and server to manage. I'm looking for a solution to have all these servers under one panel and most of all deploy all this application in High Availability. Moreover, we have servers in many different cloud providers and it would be nice if it would be possible to use them. I've already found and tested few solutions. Maybe someone had the same problem and found a better solution or maybe can you advise which one of these are the best?

1. Rancher + DNS Round Robin

It would be setting up Rancher in HA mode with use of cattle or Kubernetes. Then set up few host just for loadBalancer and achieve HA by using DNS Round Robin. Put ip of all LoadBalancer in DNS records for every web application.

Pros:

  • Easy to setup
  • Multiple environments. One panel to administrate development, production infrastructure.
  • No single point of failure
  • Very cheap

Cons:

  • Leaves failover to the client-side application
  • Not reliable
  • When one node down high response times for some clients (he needs to wait for request to timeout)

2. Rancher + Cloudflare Load Balancer As the previous set up Rancher in HA mode with use of cattle or Kubernetes. Then set up few host just for LoadBalancer and achieve HA by using Cloudflare LoadBancer pointing to rancher nodes used for LoadBalancers.

Pros:

  • Easy to setup
  • Multiple environments. One panel to administrate development, production infrastructure.
  • Theoretically, Cloudflare LB has 100% SLA

Cons:

  • The biggest problem is that Cloudflare LB uses DNS records for LoadBalancing. So our clients would need to redirect their domain to our DNS servers on Cloudflare or add CNAME record for our domain. Both of them are not ideal solutions :/ CNAME would be bad for SEO I think.
  • With many domains and many requests can get expensive.

Notes: I've tested this solution and it's working quite well, after shutting down node with LoadBalancer or with application downtime was about 20s-60s, so just time needed to spin new container.

3. Rancher + Floating IP + Keep alive As the previous set up Rancher in HA mode with use of cattle or Kubernetes. Then set up few host just for LoadBalancer. Then setting up keepalive and (DigitalOcean) floating IP for nodes that are for LoadBalancers.

DigitalOcean floating ip diagram

Pros:

  • Easy to setup
  • Multiple environments. One panel to administrate development, production infrastructure.
  • No single point of failer

Cons:

  • LoadBalancers nodes needs to be on DigitalOcean

4. Kubernets on Google Cloud Platform with Kubernetes Engine Setting up Kubernetes in HA mode on GCP.

Pros:

  • Super easy to setup on GCP. Just one click

Cons:

  • I couldn't find SLA of GCP Load Balancers. But probably single point of failer and SLA is not 100%
  • We would be attached with this Kubernetes cluster to one cloud provider
  • Having LB for every application, even if it's small could get expensive.
  • Worse web panel than the Rancher

5. Rancher 2.0 use all from above depending on environment With Rancher 2.0 we could use all of above solutions it allows to add existing Kubernetes clusters to Rancher. So it would work with Kubernetes engine on GCP. However, it's in alpha version and doesn't have HA deployment yet.

Mostly I'm thinking about setting up option 3. Then if the rancher 2.0 will be released change for it and for larger applications use GCP with Kubernetes Engine. Have someone better solution? or maybe should I use other solutions from provided?

-- Kuba Drynkowski
devops
high-availability
infrastructure
kubernetes
rancher

0 Answers