service & cloud computing - tu dresden · fakultät informatik, institut für...
TRANSCRIPT
![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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/1.jpg)
Fakultät Informatik, Institut für Systemarchitektur, Professur Rechnernetze
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/2.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/3.jpg)
• 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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/4.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/5.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/6.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/7.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/8.jpg)
● 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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/9.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/10.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/11.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/12.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/13.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/14.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/15.jpg)
[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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/16.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/17.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/18.jpg)
● 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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/19.jpg)
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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/20.jpg)
● 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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/21.jpg)
● 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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/22.jpg)
● 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](https://reader031.vdokument.com/reader031/viewer/2022020412/5b16c05f7f8b9a776d8d7ae2/html5/thumbnails/23.jpg)
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