23
Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze [email protected] IaaS - Cloud Konfiguration mit OpenStack Service & Cloud Computing

Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze [email protected] IaaS - Cloud Konfiguration mit

Embed Size (px)

Citation preview

Page 1: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze

[email protected]

IaaS - Cloud Konfiguration mit OpenStack

Service & Cloud Computing

Page 2: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Gliederung

1) Übersicht zu OpenStack

2) OpenStack-Kernkomponenten

3) Authentifizierung / Identity-Verwaltung

4) Abläufe beim Anlegen von VMs

5) Neutron

6) Dashboard

7) OpenStack-API

8) Cloud-Init

2

Page 3: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

• Seit 2010 in Entwicklung befindliche Plattform für Public- und Private-Cloud-Lösungen

• Halbjährlicher Release-Zyklus• „Liberty“: 15.10.2015• „Mitaka“: 7.4.2016 • „Newton“: 6.10.2016• „Ocata“: 22.2.2017• „Pike“: 30.8.2017

• Offeriert neben eigener API eine zu Amazon EC2 and Amazon S3 kompatible API

• OpenStack wird im Wesentlichen aus mehreren modular einsetzbaren Komponenten mit unterschiedlichen Aufgabenfeldern gebildet

OpenStack (https://www.openstack.org/)

3

Nova Neutron

Cinder

Glance

Heat Keystone Telemetry Swift

Horizon

Ironic Sahara

Designate

Trove

Rally

Manila

MagnumTripleO

Barbician

Murano

Kolla

OS Ansible

OS Client

Docs

Kuryr

Tempest

Oslo RefStack

Page 4: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Nova

Swift

Keystone Glance

Cinder Neutron

● Keystone: Authentisierungs- und Autorisierungsdienst● Nova: Verwaltet Lebenszyklus von Virtuellen Maschinen● Glance: Verwaltung von Images und ihren Eigenschaften● Swift: Speicher für unstrukturierte Daten („Object Storage“)● Cinder: Bereitstellung von persistentem Speicher für VMs („Block Storage“)● Neutron: Verwaltung von Netzwerken und Anbindung von VMs an ein

Netzwerk

● Alle Basisprojekte sind bereits mindestens 4 Jahre in Entwicklung4

(Ursprüngliche) Basisprojekte

Page 5: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Relationale Datenbank (MariaDB

ggf. mit Galera)

AMQP (RabbitMQ)

Objekt-Cache(Memcached)

Load-Balancer(HAProxy)

Ausfallsicherung(Keepalived, Pacemaker)

Webserver (Apache mit mod_wsgi)

Telemetry Backend

(MongoDB, Gnocchi)

Konfigurations-management-

Server

DNS-Server

NTP-Server

LDAP-Server

...

5

Infrastrukturdienste

● Möglichkeit des Betriebs innerhalb von Kubernetes (innerhalb von Docker-Container)

Page 6: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

OpenStack – Interaktion der Komponenten

= Neutron

6

Page 7: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

OpenStack – Interaktion der Komponenten (vereinfacht)

„Nova“(Compute)

„Swift“(Object Storage)

„Glance“(Image Service)

„Heat“(Orchestration)

„Ceilometer“(Telemetry)

„Keystone“(Identity Service)

„Horizon“(Dashboard)

„Neutron“(Networking)

„Cinder“(Block Storage)

1

2

3 4

5

7

Page 8: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

● Authentisierungs- und Autorisierungsdienst für OpenStack● Unterstützt mehrere Backends für die Ablage von Login/Passwort

● Insbesondere: SQL-Datenbank, LDAP (repliziertes LDAP ermöglicht „dezentralisierte“ Cloud)

● Grundprinzip:● Ausstellung eines Tokens nach Authentifizierung, das mit jedem Request an die

REST-API mitgesendet wird● Dienste, die Token erhalten, überprüfen dieses mittels Keystone, dazu Angabe

von Informationen zu Keystone in jedem Dienst notwendig, z.B. für Nova:

● Vielzahl von Konfigurationen von Keystone möglich, z.B.: Time-based One-time Password

[DEFAULT]...auth_strategy = keystone

[keystone_authtoken]...auth_uri = http://controller:5000auth_type = passwordproject_name = serviceusername = novapassword = SOMEPASS

8

Identity-Dienst: Keystone

Page 9: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

client OS-API keystone

LoginPasswort

Prüfung

Erzeugung CMS-Token

Keystone-DB

CMS-Token

Sign. KeySign. Cert

CAkeyCACert

API Request+

CMS-Token

Prüfung CMS-Token

Sign. CertCACert

Valide?

Request bearbeitenRequest ablehnen

HTTP200

HTTP401

janein

Cryptographic Message Syntax (CMS):● CMS-Format gemäß RFC 5652● Generiert u.a. unter

Verwendung des Service-Katalogs, von Tenant-Informationen und User-Rollen

● Beinhaltet Expiration-Date

9

Identity-Dienst: Keystone - CMS

Page 10: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Domain

Project

User

Role

● Zentrale Einheit, der Ressourcen zugewiesen werden kann

● Beinhaltet Nutzer

● Menge von Projekten (projects), Gruppen (groups) und Nutzern (user)

● Entitäten, die auf API-Endpunkte zugreifen können● Einem Projekt zugeordnet

● Ermöglicht Zuordnung von Rechten und Privilegien zu Nutzeraccount (Rechte in policy.json des jeweiligen Dienstes festgelegt)

Service● OpenStack-Projekt, das Keystone zur Authentifizierung nutzt● Keystone verwaltet Liste von Diensten (openstack service list)

Endpoint● Schnittstelle hin zu einem API-Dienst, über den auf Funktion

des OpenStack-Projektes zugegriffen werden kann● Keystone verwaltet Liste von Endpunkten (openstack

endpoint list)

10

Identity-Dienst: Keystone – Konzepte (v3)

Page 11: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

OpenStack – Interaktion der Komponenten

Nova API

REST

Nova Compute

Datenbank(u.a. Informationen zu

erstellten VMs, ...)

Virtualisierungstechnologien(Libvirt + KVM)

Nova Scheduler

Nova Conductor

Message Queue(RabbitMQ)

Direkter Zugriff

11

Page 12: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Controller Node

Compute Node

nova-api, nova-conductor, nova-consoleauth, nova-novncproxy, nova-cert, nova-api, nova-scheduler, ...

nova-compute

Dienste

● Feingranulare Verteilung von Diensten in produktiven Installationen zur Vergrößerung der Skalierbarkeit und für Hochverfügbarkeit:● Dienste auf „Controller Node“ können auf zwei Knotentypen aufgeteilt

werden:● nova-api, nova-consoleauth, nova-novncproxy, nova-cert: Zugriff von

extern● nova-scheduler, nova-conductor: Zugriff von intern

● Weiterhin: Neutron / Nova Network● Zusätzliche mögliche Dienste auf Controller: Proxy für HA (z.B. HAProxy),

Datenbanken plus Keystone-Infrastruktur

Controller Node

Compute NodeCompute NodeCompute

NodeCompute

NodeVM VM

12

Knotenrollen

Page 13: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

OpenStack CLI /Horizon

Keystone 2

Novanova-api

nova-schedulerMessageQueue

NovaDB

3

4

5

6

7

8

9

● In Schritt 9 ist ein physischer Host bestimmt, auf dem die VM ausgeführt wird.

● Nova-Scheduler sendet im Schritt 9 eine rpc.cast-Nachricht an die Message Queue, um die VM auf dem selektierten Host zu starten.

113

Anlegen einer VM: Selektion des Hypervisors

KeystoneDB

Page 14: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Keystone

KeystoneDB

Nova

nova-computeMessageQueue

NovaDB

11

12

10

Glance Neutron Cinder

nova-conductor

14 16

13

15 18 21

17 19 2020 22

● In Schritt 23 wird auf dem Hypervisor (lokaler Zugriff durch nova-compute) unter Verwendung der ermittelten Parameter eine VM gestartet und in das Netzwerk integriert.

● Durchlaufene Tasks: Scheduling, Networking, Block Device Mapping, Spawning

23

Hypervisor

14

Anlegen einer VM: Instanziierung auf Host

Page 15: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

[DEFAULT]core_plugin = ml2service_plugins =

neutron.confml2_conf.ini

● Neutron (früher: Quantum) offeriert modulare Konfiguration des Netzwerks● Setzt technisch auf Basismechanismen des Linux-Kernels auf (Network

Namespaces, Linux Bridge, iptables, …)● Projekt umfasst neben Server (auf Control-Node auszuführen) insbesondere mehrere

Agents (z.B. für DHCP) wie auch Plugins (z.B. zur Untersützung verschiedener L2-Mechanismen)

● Minimalsetup (Provider-Network) mittels Linux Bridge unter Verwendung von Controller- plus Compute-Node möglich

[ml2]type_drivers = flat,vlantenant_network_types =mechanism_drivers = linuxbridgeextension_drivers = port_security

[ml2_type_flat]flat_networks = provider

[ml2_type_vlan]network_vlan_ranges = provider

[securitygroup]firewall_driver = iptables

[linux_bridge]physical_interface_mappings = provider:eth1[vxlan]enable_vxlan = False

[securitygroup]firewall_driver = iptablesenable_security_group = True

linuxbridge_agent.ini

Zusätzlich: Konfiguration in dhcp_agent.ini

Modular Layer 2 Framework

15

Neutron

Page 16: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Network Node

Open vSwitch

L3 Agent

qrouter(network

namespace)

DHCP Agent

qdhcp(network

namespace)

Open vSwitchAgent

IntegrationBridgebr-int

TunnelBridgebr-tun

TunnelBridgebr-tun

VLANBridgebr-vlan

ExternalBridgebr-ext

MetadataAgent

Interface 1

Interface 2

Interface 3

VxLAN/GRE

VLAN

Internet

● Vier Komponenten auf Network Node benötigt:● Open vSwitch für die

Bereitstellung virtueller Switches● DHCP-Agent● Router● Metadata-Agent

● Zentrale Bridge: br-int (führt verschiedene Netze zusammen)

16

Neutron – Übersicht zum Network Node

Page 17: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Compute Node

Open vSwitch

Linux Bridgeqbr

SecurityGroups

Open vSwitchAgent

IntegrationBridgebr-int

TunnelBridgebr-tun

TunnelBridgebr-tun

VLANBridgebr-vlan

Instanz

Interface 1

Interface 2

VxLAN/GRE

VLAN

● Zwei Komponenten auf Compute Node benötigt:● Open vSwitch für die

Bereitstellung virtueller Switches

● Linux Bridge (Anwendung von iptables-Regeln)

● Instanz wird an Linux Bridge angebunden

17

Neutron – Übersicht zum Compute Node

Page 18: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

● Web-basierte Benutzungsoberfläche für OpenStack-Basisprojekte (bzw. weitere Projekte)

● Implementiert unter Verwendung von Django● Kann durch eigene Themes in Bezug auf Design / Layout adaptiert werden● Integration von weiteren Sichten sehr leicht realisierbar durch Registrierungs-

Mechanismus in horizon/openstack_dashboard/enabled

Dashboards

Panel

Tab

18

Dashboard: Horizon

Page 19: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

OpenStack API

• Ermöglicht Kontrolle der Cloud-Ressourcen (insbesondere Anlegen, Konfigurieren, Löschen) mittels REST-API

• Neben OpenStack-spezifischer API wird zu AWS konforme API offeriert

• Für API-Operationen ist Token erforderlich, das mittels Keystone angefordert wird

curl -i -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "username", "domain": { "id": "default" }, "password": "xyz" } } } }}' http://ENDPOINT:5000/v3/auth/tokens ; echo

19

Page 20: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

● Alle Basisdienste plus weitere Dienste verfügen über dedizierte Kommandozeilenwerkzeuge (in Python implementiert; CLI-Werkzeug selbst überwiegend deprecated) mit zugehöriger Bibliothek

● Werkzeug „openstack“ greift auf Bibliotheken zu, um mit verschiedenen Diensten zu interagieren

● Installation via „pip install python-openstackclient“● Run-Command-Datei für Export der Authentifizierungsinformationen in

Umgebung (wird von Kommandozeilenwerkzeugen verwendet)

#!/bin/bash

export OS_USERNAME=maxmustermannexport OS_TENANT_NAME=maxmustermannexport OS_AUTH_URL=http://identity.someprovider.com:5000/v2.0export OS_REGION_NAME=SOME_REGION

echo "Please enter your OpenStack Password: "read -sr OS_PASSWORD_INPUTexport OS_PASSWORD=$OS_PASSWORD_INPUT

20

Kommandozeilenwerkzeuge

Page 21: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

● Beispiel: Abfrage von Informationen von Basisdiensten und Anlegen einer VM:

$ ssh-keygen -q -N ""$ openstack keypair create --public-key ~/.ssh/id_rsa.pub keyname$ openstack security group rule create --proto icmp default$ openstack security group rule create --proto tcp --dst-port 22 default$ openstack flavor list$ openstack image list$ openstack security group list$ openstack server create --flavor m1.tiny --image cirros \ --security-group default \ --key-name keyname mynewinstance

CLI-Kommandos

catalog

...

imagenetworkkeypair

quota

server

snapshot

tokenflavor

21

Kommandozeilenwerkzeuge

Page 22: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

● Beispiel: Anlegen einer IP-Adresse und Zuweisung zu einer VM:

#Anlegen einer sogenannten „floating IP“$ openstack floating ip create provider# Zuweisen der IP zu Server$ openstack server add floating ip $INSTANCE_NAME 87.20.20.54

CLI-Kommandos

catalog

...

imagenetworkkeypair

quota

server

snapshot

tokenflavor

22

Kommandozeilenwerkzeuge

Page 23: Service & Cloud Computing - TU Dresden · Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze marius.feldmann@tu-dresden.de IaaS - Cloud Konfiguration mit

Cloud-Init

• Cloud-Init ermöglicht es, Information als Parameter an eine startende Instanz zu übergeben und automatisiert Skripte nach dem Start der Instanz auszuführen

• Informationen werden als „user-data“ übergeben• Unterschiedliche Syntax verfügbar:

● Cloud-config-Dateien● Shellskripte

23

#cloud-configusers: - name: ubuntu groups: sudo shell: /bin/bash sudo: ['ALL=(ALL) NOPASSWD:ALL'] ssh-authorized-keys: - ssh-rsa AAAAuzaueeafz...adca user@domainruncmd: - touch /home/ubuntu/demo.txt