managing openstack in a cloud-native way · component ha model web services haproxy haproxy...

27
Managing Openstack in a cloud-native way

Upload: others

Post on 23-May-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Managing Openstack

in a cloud-native way

Page 2: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

• Red Hat Cloud Architect

• Over 5 years helping companies to

adopt emerging technologies

• Network engineer in a previous life

Alberto García

• Leading the Architecture of Swisscom’s

ElasticStack and PaaS

• Member of CloudFoundry’s Technical

Advisory Board

• Automate all the things!

• Background in SystemEngineering and

Software Development

Marcel Haerry

Page 3: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Our motivation

Page 4: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Use Cases

https://developer.swisscom.com

https://www.mycloud.ch

Page 5: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Modern IT philosophy at Swisscom

rapid release cycles

to iterate quickly on new features

and bugfixes

Promoting a devops culture throughthe teams

High availability andscalability as you grow

fault tolerant andsecure deployments

and lifecycle

Building platforms for the next

generation workload

Strong and thorough CI/CD approach.Highly automated and tested before promotion through stages.

Page 6: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Is it doable?

Page 7: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Openstack control plane

• Components are decoupled: load balancer,

messaging bus

• State is in the database

• Allows dynamic topologies: Can be scaled

in/out based on control plane load due to

workload usage

• Control plane services can be virtualized

• Openstack dedicated projects for deployment

automation

Page 8: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

The pacemaker HA approach

• All in one deployment doesn’t scale as it is

(rabbitmq, galera)

• Big VMs doesn’t fit well in virtual environments

• Life cycle of baremetal is slow

• CI/CD is more complex -> How to iterate on

individual components?

• Clustering software is stateful

• Binding control plane to infrastructure

Page 9: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

HAProxy/Keepalived HA approach

• Based on Javier Peña’s architecture https://github.com/beekhof/osp-ha-deploy/blob/master/HA-keepalived.md

• Pacemaker free architecture

• Distributed control plane fits well in this model

• Virtualization is feasible thanks to flexibility in

the services layout design

• Does not bind application to infrastructure

Page 10: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Seems doable,

let’s design it

Page 11: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Distributed & virtualized control plane

• Pulling the pieces apart towards a

distributed architecture

• Horizontal scalable services (wherever

possible)

• virtualized control-plane

• Isolate shared state

(Galera & RabbitMQ)

Page 12: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

(Double) Highly Available Architecture

Component HA model

Web Services HAProxy

HAProxy Keepalived

Mysql Galera

Mongo Replica-set

Rabbitmq Rabbitmq native clustering

Redis Sentinel

Non-API components Resiliency in the

application

Application Level Infrastructure Level

Page 13: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Control Plane

• Hyperconverged

• High density hardware

• Network isolation of storage,

control & data

• Network HA with bonding

• Part of a layer 3 spine-leaf

design

• Local ephemeral storage

• Simple networking, one network

for everything

• Grouping services per major

component

• Including lightweight supporting

services in the role

• Small sized virtual machines

Compute

Modeling the components

Control Plane

Page 14: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Lifecycle• CI/CD Framework

Multiple stages to gain confidence in changes

Clear separation between code and configuration

• Puppet & Deployment Orchestrator for Puppet

Virtual Machines & Storage described in code

ScaleOut purely through API Calls

Page 15: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Storage

• Hyperconverged compute nodes

• Cinder with Scaleio

scales with the amount of disks & so servers

• ObjectStore

completely externally (Atmos)

• Glance

using external S3 Backend

caching of images in the control plane

Page 16: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

distributed network

services for SDN

Page 17: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Big picture

Page 18: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

our journey

Page 19: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Active-Active HA support in Openstack components

http://gorka.eguileor.com/simpler-road-to-cinder-active-active/

Page 20: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Bootstrapping clusters

Page 21: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

• Monitor health

• automate simple

remediations

NO MAGICAL RECOVERY

Page 22: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Benefits & drawbacks

Page 23: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Cloud like architecture

• Control services can be treated as stateless applications

• Operation of Openstack control plane similar to cloud

workloads

• Dynamic and agile control plane for Openstack

• Cost effective solution (thanks to virtualization)

• Openstack control plane does not depend on

infrastructure

Page 24: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Cloud like day 2 operations

• Measurable & scalable per component

• On-boarding new services -> deploy new roles

• Parallel deployment of Control Plane for upgrades

• Backup only the stateful services, restage

everything else

• Redeployment of nodes in case of failure /

problems

Page 25: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Drawbacks

• Not fully A/A ready: Cinder-volume & Galera

• RabbitMQ/MariaDB don’t scale horizontally

• No magical recovery

• Network partitions & keepalived

• Horizon needs sticky sessions -> RRDNS does not

work

Page 26: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

Future work• OpenStack components

Build services A/A from the beginning

Built-in health-endpoints in services (e.g. query from

HAProxy or monitoring)

• Deployment

Packaging deployment as containers (Kolla?!)

• Architecture

Decoupling storage from compute?

Page 27: Managing Openstack in a cloud-native way · Component HA model Web Services HAProxy HAProxy Keepalived Mysql Galera Mongo Replica-set Rabbitmq Rabbitmq native clustering Redis Sentinel

THANK YOU