Clouds, leicht beherrschbar

Post on 05-Dec-2014

551 views 1 download

description

Vortrag der OOP 2014 Ein Einstieg in die Software Juju für das Provisioning und die Konfiguration von Clouds sowie ein Überblick über Architekturaspekte.

Transcript of Clouds, leicht beherrschbar

Clouds, leicht beherrschbar

Frank Müller

Oldenburg Baujahr 1965

Entwickler Fachautor

!

frank@mweb.de @themue

Was sind Clouds?

Bereitgestellte Infrastruktur …

… ist nichts ohne bereitgestellteDienste

mysql

wordpressBekanntes

Szenario auf

individuellen Servern

Mehr Komplexität in Clouds

wordpress

mediawikihaproxy-w mediawiki memcached

haproxy-b

wordpress mysql

wordpressvarnish

Ein mühsamer Weg

Juju - Open Source Tool zur Automatisierung von Clouds

http://juju.ubuntu.com

Plattformen

Plattformen

EC2 OpenStack HP Cloud Azure ...

wordpress

mediawikihaproxy-w mediawiki memcached

haproxy-b

wordpress mysql

wordpressvarnish

Provisionierung

Bootstrapping

juju init juju bootstrap

Bootstrap

Zentrale Funktionen

Bootstrap

State

API

Provisioner

...

Service Deployment

juju deploy juju-gui juju deploy wordpress juju deploy mysql juju expose juju-gui

Bootstrap

juju-gui wordpress mysql

Relationen

Services verknüpfen

juju add-relation wordpress mysql juju expose wordpress

Bootstrap

juju-gui wordpress mysql

Konfiguration

Konfigurieren

juju set mysql dataset-size=50% juju set wordpress tuning=optimized

Bootstrap

juju-gui wordpress* mysql*

Skalieren

Skalieren

juju deploy memcached juju add-relation wordpress memcached juju add-unit wordpress

wordpress*

Bootstrap

juju-gui wordpress* mysql*

memcached

Varianten

Wie viele Units pro Maschine?

ContainerDirekte AbhängigkeitStandard

Unit

Unit

Unter- geordnete

Unit

Unit

Unit

Unit

Komfort als Geschenk

Juju GUI (1)

Juju GUI (2)

Charms

Charm-Bestandteile

Metadaten

Konfigurationsoptionen

Unit Hooks install / config-changed / start

upgrade-charm / stop

Relation Hooks x-relation-joined / x-relation-changed x-relation-departed / x-relation-broken

Bauplan aus

statischen und

dynamischen Bestandteilen

Vom Charm zur Unit

Individuelle Agenten Machiner / Uniter

Zentrale Agenten Provisioner / Firewaller

Unit

Charm

Einige Charms …

ceph

mediawiki mongodb

cassandra

rails

mysql

wordpressrabbitmq

haproxy

apache2

hadoop squid

hbase

couchdb

postgresqlnfsntp

Architektur

Implementierungin Google Go

State / API / Worker

State

Provisioner

GUI

CLI

Firewaller

Machiner

Deployer

Uniter

API!

Watcher- Sammlungen- Individuelle Objekte

- MongoDB- Zugriffsschicht

Ereigniskette

State

API!

CLI Worker

Worker

Worker

Bestandteile der API

Netz und Crypto

Reflection für Dispatching

WebSockets

Serialisierung via JSON

Nebenher und doch zusammen

Command / Agent

Worker

Worker

Goroutine Goroutine

Goroutine Goroutine

• Command / Agent abhängig

von Dateiname und

Argumenten

• Einsatz als individuelles

Kommando oder Daemon

• Verschiedene parallele Worker

je nach Command / Agent

• Goroutines (Google Go) für

nebenläufige Aufgaben

Beispiel: Firewaller

State

Main Loop

Machine LoopMachine Loop Unit LoopUnit Loop Service LoopService Loop

Environment Configuration

Machines

MachinesPorts

Exposes

Plattformen kapseln

Environment

EC2 OpenStack Azure MAAS

EC2 OpenStack Azure MAAS

Command …Worker

Vom Umgang mit heißen Situationen

Strikte Fehlerkontrolle

• Keine Exceptions in Go

• Rückgabe von Fehlerwerten

• Kein Ignorieren von Fehlern

• launchpad.net/tomb für Fehler und Lebenszyklus von Goroutines

Wiederanlauf

• Soll-Zustand in State ist Master

• Nach Ausfall Abfrage des Soll-Zustands

• Abgleich mit Ist-Zustand

• Bei Abweichung Anpassung an Soll-Zustand

Viel Spaß in den Wolken

❝Zitat hier eingeben.

–Christian BauerBildquellen 123RFiStockphotoeigene Quellen