Local SSD Storage

Local SSD Storage verwenden

├ťbersicht

Standard Shared Storage auf Basis von Ceph hat ein ausgewogenes Leistungsprofil, das nicht f├╝r alle Anwendungsf├Ąlle geeignet ist. Insbesondere Etcd und transaktionale Datenbanken wie Postgres sind daf├╝r bekannt, dass es hier zu Performance-Problemen kommt.

pluscloud open bietet Local SSD Storage als Option f├╝r die Speicherung von Daten auf Instanzen an. Local SSD Storage ist ein nicht gemeinsam genutzter Speicher, der physisch mit der Instanz verbunden ist und hohe Input/Output-Operationen pro Sekunde (IOPS) und geringe Latenzzeiten bietet. Er ist ideal f├╝r Anwendungen, die eine hohe Leistung und eine geringe Latenzzeit erfordern.

Local SSD Storage ist ideal f├╝r fl├╝chtige oder tempor├Ąre Arbeitslasten wie Caches. Ebenfalls gute Kandidaten f├╝r Local SSD Storage sind hochautomatisierte replizierte Datenbanken oder Key-Value-Stores wie Patroni oder Etcd, bei denen automatische Replikation und Failover in den Software-Stack integriert sind.

Vergleich der Eigenschaften von Ceph-Volumes Local SSD Storage

Es gibt grundlegende Unterschiede zwischen Ceph-Volumes und Local SSD Storage.

Bei Shared Storage sorgt das zugrundeliegende Speichersystem f├╝r Redundanz und Verf├╝gbarkeit. Ihre Anwendung kann sich auf den dreifach replizierten hochverf├╝gbaren Speicher verlassen.

Bei Local SSD Storage k├Ânnen Sie auf die lokale Festplatte im Rohzustand zugreifen und nahezu 1:1-Leistung erzielen. Allerdings ist Ihr Software-Stack f├╝r die Handhabung der Redundanz und Verf├╝gbarkeit verantwortlich.

Anwendungsf├Ąlle f├╝r Local SSD Storage:

  • Kubernetes
  • Etcd-Cluster mit 3 oder 5 Instanzen
  • Postgres-Patroni-Cluster

Anti-Patterns f├╝r Local SSD Storage:

  • Traditionelle Einzelserver-Einrichtung
  • VMs werden ohne Configuration Management eingerichtet
  • VMs ohne Snapshots

In der folgenden Tabelle werden die Merkmale von Ceph-Volumes mit denen von Local SSD Storage verglichen:

EigenschaftenCeph-Boot-VolumeBoot-Volume von Local SSD Storage
SpeicheranbieterCinderNova
DurchsatzStandardVerbessert
LatenzStandardReduziert
Live-MigrationJaNein
Verf├╝gbarkeitDreifach-ReplikationLokales RAID

Verf├╝gbarkeit

Es gibt zwei F├Ąlle, in denen bei VMs, die auf Local SSD Storage laufen, Ausfallzeiten auftreten k├Ânnen

Regelm├Ą├čige Reboots

Jeder Hypervisor mit Local SSD Storage muss periodisch neu gebootet werden. Normalerweise geschieht dies einmal im Monat. Sie sollten daher damit rechnen, dass Ihre VMs regelm├Ą├čig ausfallen.

Geplante Wartungsfenster finden in der Regel einmal w├Âchentlich nach 22:00 Uhr lokaler Zeit statt. Der interne Index der Verf├╝gbarkeitszone ist gleichzeitig der Index des Wochentages. Beispiel: prod1 = Montag, prod4 = Donnerstag.

Ihre VM wird ├╝ber ein bevorstehendes geplantes Ereignis ├╝ber einen Metadatenschl├╝ssel namens ps_scheduled_downtime informiert. Der Wert dieses Feldes ist ein Zeitstempel, zu dem Ihre VM heruntergefahren wird.

Die durchschnittliche Ausfallzeit betr├Ągt ca. eine Viertelstunde, kann aber variieren. Alle VMs erhalten vor der Wartung ein ACPI-Shutdown-Signal. Die VMs haben eine Minute Zeit, um ordnungsgem├Ą├č herunterzufahren.

Nach dieser Zeit werden sie einfach heruntergefahren.

Sie sollten davon ausgehen, dass Ihre VMs nach dem Neustart des Hypervisors ausgeschaltet bleiben. Sie k├Ânnen dieses Verhalten jedoch ├Ąndern, indem Sie den Metadatenschl├╝ssel ps_restart_after_maint=true setzen. In diesem Fall wird Ihre VM neu gestartet, nachdem der zugrundeliegende Hypervisor neu gebootet wurde.

Zwischen den Neustarts des Hypervisors wird es eine 30-min├╝tige Pause geben. Dies gibt Ihrem Software-Stack Zeit, sich neu zu konfigurieren.

Allerdings sind alle VMs auf demselben Hypervisor davon betroffen. Sie m├╝ssen Anti-Affinit├Ąt Servergruppen aktivieren.

CLI-Beispiel f├╝r die Abfrage von Informationen ├╝ber geplante Ausfallzeiten aus einer VM heraus:

curl -s http://169.254.169.254/openstack/latest/meta_data.json | jq -r '.meta.ps_scheduled_downtime'
Wed Jan 31 14:35:02 CET 2024

CLI-Beispiel zur Aktivierung des automatischen VM-Neustarts nach einem Hypervisor-Neustart:

 openstack server set --property "ps_restart_after_maint=true" 01234567-0123-0123-0123-0123456789ab

Hardware-Ausfall

Im Falle eines vollst├Ąndigen Hardwareausfalls oder einer Neukonfiguration m├╝ssen Sie mit Datenverlust rechnen.

In diesen F├Ąllen gehen die Boot-Volumes verloren. Das bedeutet, dass beim Wiederanlauf des Hypervisors besch├Ądigte VMs vorhanden sind.

Es wird von Ihnen erwartet, dass Sie diese VMs selbst l├Âschen. Wir sind der Meinung, dass es besser ist, defekte VM-Definitionen aufzubewahren, damit Sie diese Instanzen zuverl├Ąssiger aus einer Sicherung oder einem Snapshot wiederherstellen k├Ânnen. Sie m├╝ssen f├╝r defekte VMs bezahlen.

Apropos Backups: Sie sollten regelm├Ą├čig Snapshots erstellen, um im Falle eines Hardwareausfalls des zugrundeliegenden Hypervisors eine ausgefallene VM wiederherstellen zu k├Ânnen.

Server-Gruppen und Anti-Affinit├Ąt zur Erzielung von Fehlertoleranz

Bei der Verwendung von Local SSD Storage ist es wichtig, Fehlertoleranz gegen Hypervisor-Ausf├Ąlle vorzusehen.

Eine M├Âglichkeit ist die Verwendung von Server-Gruppen, um Ihre VMs auf mehrere Hypervisoren zu verteilen.

Local SSD Storage verwenden

Um Local SSD Storage zu verwenden, erstellen Sie einfach eine VM mit einem bestimmten Flavor f├╝r Local SSD Storage. Alle Flavors, die mit einem “s” enden, stehen f├╝r Local SSD Storage. Konfigurieren Sie die VM so, dass sie ohne Volume bootet. Dies ist wichtig, wenn Sie m├Âchten, dass die VM von einem lokalen Datentr├Ąger und nicht von einem Remote-Volume bootet.

Nachdem Sie die VM erstellt haben, bootet sie mit einer lokalen Festplatte vom Blockger├Ąt /dev/sda1. Sie k├Ânnen zus├Ątzliche Datentr├Ąger an Ihre VM anh├Ąngen. Diese Volumes stammen jedoch aus dem gemeinsam genutzten Ceph-Speicher.

Beispiele f├╝r Varianten von Local SSD Storage:

NamevCPUsRAM (MB)Festplatte (GB)
SCS-2V-4-20s2409620
SCS-4V-16-100s416384100

Erstellen einer VM mit Horizon

Gehen Sie folgenderma├čen vor, um eine VM zu erstellen, die Local SSD Storage verwendet:

Navigieren Sie zum Dialogfeld “Launch Instance” (Instanz starten). Stellen Sie unter “Details” den “Instanzname” ein.

screenshot of instance details tab

W├Ąhlen Sie unter “Quelle” Ihr bevorzugtes Cloud-Image aus. Belassen Sie die Voreinstellung, von einem Image zu booten und kein Volume zu erstellen.

screenshot of instance source tab

W├Ąhlen Sie unter “Flavor” einen der Flavor aus, die auf “s” enden.

screenshot of instance flavor tab

Konfigurieren Sie die ├╝brigen Einstellungen nach Belieben. Zum Schluss starten Sie die Instanz.

Erstellen einer VM mit der CLI

Um eine identische VM mit der OpenStack CLI zu erstellen, verwenden Sie den folgenden Befehl:

openstack server create --flavor SCS-2V-4-20s --image "Ubuntu 22.04" demo-cli

Die Ausgabe sollte wie folgt aussehen:


+-----------------------------+-----------------------------------------------------+
| Field                       | Value                                               |
+-----------------------------+-----------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL                                              |
| OS-EXT-AZ:availability_zone |                                                     |
| OS-EXT-STS:power_state      | NOSTATE                                             |
| OS-EXT-STS:task_state       | scheduling                                          |
| OS-EXT-STS:vm_state         | building                                            |
| OS-SRV-USG:launched_at      | None                                                |
| OS-SRV-USG:terminated_at    | None                                                |
| accessIPv4                  |                                                     |
| accessIPv6                  |                                                     |
| addresses                   |                                                     |
| adminPass                   |                                                     |
| config_drive                |                                                     |
| created                     | 2024-02-09T13:21:50Z                                |
| flavor                      | SCS-2V-4-20s                                        |
| hostId                      |                                                     |
| id                          | abcdef08-bf2a-4375-bfe3-0f48755df3db                |
| image                       | Ubuntu 22.04                                        |
| key_name                    | None                                                |
| name                        | demo-cli                                            |
| progress                    | 0                                                   |
| project_id                  | abcdef05fd7d49c2bdbf9bc66f5b6ed4                    |
| properties                  |                                                     |
| security_groups             | name='default'                                      |
| status                      | BUILD                                               |
| updated                     | 2024-02-09T13:21:50Z                                |
| user_id                     | abcdef07436c4f15a4eb77ed737c3206                    |
| volumes_attached            |                                                     |
+-----------------------------+-----------------------------------------------------+
Zuletzt ge├Ąndert 13.06.2024: Reworked wording, closes #101 (1c85876)