CloudStack
Where in the admin: Infrastructure › Cloud provider › CloudStack › API connection (
/infra/cloudstack?tab=connect). Die erste Verbindung kann auch im setup wizard (Schritt 2) hergestellt werden.
Funktion
NexCMP verkauft virtuelle Maschinen, die auf Ihrer Apache CloudStack-Cloud laufen. Die Software bereitgestellt, startet, stoppt, skaliert, erstellt Snapshots und löscht VMs über die CloudStack-API, vergibt öffentliche IP-Adressen aus der Zone, liest Nutzungsdaten für Abrechnung und Bandbreite aus und zeigt Kapazität sowie Status in der Admin-Konsole an. CloudStack bleibt die maßgebliche Datenquelle für die Hypervisors; NexCMP bildet das Storefront, die Abrechnung und das Portal darüber.
Verwenden Sie diese Seite, wenn CloudStack Ihre Hauptquelle für VMs ist (oder sein wird). Eine zweite Quelle daneben finden Sie unter Proxmox VE.
Anforderungen
| Komponente | Anforderung |
|---|---|
| CloudStack-Version | 4.23 ist die getestete Version. Die VM-Konsole benötigt 4.18 oder neuer, und die Live-CPU/RAM-Skalierung einer laufenden VM erfordert 4.23 mit KVM. |
| Zonentyp | Eine Zone mit mindestens einem Gastnetzwerk für Kunden-VMs und einem öffentlichen IP-Bereich mit freien Adressen. |
| Hypervisor | KVM ist der getestete Hypervisor. |
| Konto | Eine für NexCMP erstellte dedizierte Domain und ein dediziertes Konto. Verwenden Sie niemals den ROOT-Administrator-Schlüssel. |
| API-Erreichbarkeit | Der Panel-Server muss die API-URL des Management-Servers (https://cloudstack.example.com/client/api) über HTTP(S) erreichen können. Die VM-Konsole, Bandbreite und Kubernetes-Funktionen nutzen denselben Endpunkt. |
| Optionaler Nur-Lese-Schlüssel | Ein zweiter Nur-Lese-Schlüssel ermöglicht der Admin-Konsole die Anzeige von Hosts, Speicher, System-VMs und öffentlichen IP-Bereichen. Für den VM-Verkauf nicht erforderlich. |
| Öffentliche IP | Freie öffentliche IPv4-Adressen in der Zone. Das Präfix, das NexCMP verkaufen darf, wird unter Sales IP pools konfiguriert. |
| Vorlagen | Mindestens eine bereite, passwortaktivierte Template und ein Service-Offering, die Ihr Account sehen kann. Siehe Templates. |
| Storage | Primärer Storage für die Volumes des Accounts und sekundärer Storage, falls Sie Snapshots oder Images verkaufen. |
| Abhängig von | Nichts. Kubernetes, Private Cloud, Images und Bandbreite hängen von dieser Seite ab. |
Verwenden Sie nicht den ROOT-Administrator-Key
Erstellen Sie eine dedizierte Domain und einen Account für NexCMP. Der Key greift dann nur auf diese Domain zu, und ein geleakter Key kann den Rest Ihrer Cloud nicht berühren. Der Setup-Assistent prüft zudem, ob das von Ihnen gewählte Netzwerk zur Zone und zu dem Account gehört, dem der Key gehört.
Infrastruktur vorbereiten
Die Befehle verwenden CloudMonkey (cmk), angemeldet als CloudStack-Administrator. Ersetzen Sie die Beispieldynamiken und die Platzhalter in spitzen Klammern.
Einen dedizierten Account und API-Key erstellen
Erstellen Sie die Domain, die alles enthalten soll, was NexCMP gehört.
bashcmk create domain name=nexcmpNotieren Sie die
idin der Ausgabe; sie wird unten als<domain-id>verwendet.Finden Sie die Rolle, die Sie dem Account zuweisen möchten.
bashcmk list roles type=DomainAdmin filter=id,nameRolle Wann zu wählen Domain Admin (empfohlen) Vollständiger Funktionsumfang: VMs, Netzwerke, Projekte für Kubernetes, VPC, Images. Die Reichweite endet bei der nexcmp-Domain.User Nur VM-Lebenszyklus. Ein normaler User kann VMs nicht expungeln, es sei denn, die globale Einstellung allow.user.expunge.recover.vmist true; NexCMP stoppt die VM dann und CloudStack expungelt sie nachexpunge.delay.Erstellen Sie den Account und dessen ersten User. Verwenden Sie ein langes, zufälliges Passwort; es wird nie wieder eingegeben.
bashcmk create account name=nexcmp-api username=nexcmp-api \ password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \ firstname=NexCMP lastname=API roleid=<role-id> domainid=<domain-id>Generieren Sie das API-Key-Paar für den neuen User.
bashcmk list users domainid=<domain-id> username=nexcmp-api filter=id,username cmk generate userkeys id=<user-id>Kopieren Sie
apikeyundsecretkey. Das sind der API key und der Secret key, die Sie in NexCMP eingeben. NexCMP speichert diese verschlüsselt und zeigt danach nur die letzten vier Zeichen an.Stellen Sie sicher, dass die Domain keine restriktiven Ressourcenlimits aufweist (Instanzen, Volumes, öffentliche IPs, Netzwerke, Snapshots, Templates, Projekte).
bashcmk list resourcelimits domainid=<domain-id>
Das Gastnetzwerk für Kunden-VMs erstellen
Kunden-VMs werden in einem Gastnetzwerk bereitgestellt, das zum neuen Account gehört. Ein isoliertes Netzwerk mit einem Virtual Router (VR) und den Diensten Static NAT, Firewall und Port Forwarding funktioniert gut, da NexCMP jeder VM über Static NAT eine öffentliche IP zuweist.
bash
cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name
cmk create network name=customers displaytext=customers zoneid=<zone-id> \
networkofferingid=<offering-id> account=nexcmp-api domainid=<domain-id>Überprüfen Sie die Standard-Egress-Richtlinie des Offerings: Wenn diese auf „deny“ steht, haben Kunden-VMs keinen Outbound-Zugriff, bis Firewall-Egress-Regeln hinzugefügt werden.
Offerings und Templates sichtbar machen
- Service offerings und network offerings müssen öffentlich oder der
nexcmp-Domain zugewiesen sein, da der Account sie sonst nicht auflisten oder verwenden kann. - Registrieren oder teilen Sie mindestens ein Template (siehe Templates). NexCMP listet Templates auf, die bereit und featured sind.
Optional: Read-Only-Key für Infrastrukturseiten
Die Tabs Capacity, Host, Storage und System VM sowie die Liste der öffentlichen IP-Bereiche verwenden einen zweiten Key, der nur Lesezugriff auf sechs Befehle benötigt. Erstellen Sie eine eingeschränkte Rolle, anstatt einen vollständigen Administratoren-Key wiederzuverwenden:
bash
cmk create role name=nexcmp-readonly type=Admin
# <role-id> is the id printed above
for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do
cmk create rolepermission roleid=<role-id> rule=$api permission=allow
done
cmk create rolepermission roleid=<role-id> rule='*' permission=denyErstellen Sie dann einen Account mit dieser Rolle (in der ROOT-Domain, da zonengeweit Daten gelesen werden), generieren Sie dessen Keys wie in Schritt 4 und geben Sie diese im nächsten Abschnitt als RO API key ein.
Den Netzwerkpfad prüfen
Vom Panel-Server aus:
bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/apiJede HTTP-Antwort (selbst 4xx) beweist, dass der Port erreichbar ist. Ein Timeout bedeutet ein Firewall- oder DNS-Problem auf Ihrer Seite.
In NexCMP verbinden
Im Installationsassistenten
Schritt 2 des setup wizard fragt nach denselben Werten. Test connection listet die Zonen und Netzwerke auf, die der Schlüssel sehen kann; wählen Sie die Zone und das Gastnetzwerk, einen Anzeigenamen für die Zone sowie das Land aus und klicken Sie dann auf Save CloudStack. Der Assistent lehnt ein Netzwerk ab, das sich nicht in dieser Zone befindet oder für den Schlüssel nicht sichtbar ist.

Später in der Admin-Konsole
Öffnen Sie Infrastructure › Cloud provider › CloudStack und wählen Sie den Tab API connection.
Füllen Sie die Karte Connection aus:
Feld Beispielwert Endpoint API https://cloudstack.example.com/client/apiAPI key (Schreibzugriff) XXXX(leer lassen, um den gespeicherten Schlüssel beizubehalten)Secret key XXXXRO-API-Schlüssel / RO-Geheimschlüssel optional, vom Konto mit Lesezugriff Zone ID die UUID Ihrer Zone 
Klicken Sie vor dem Speichern auf Test connection. Dadurch werden die von Ihnen eingegebenen Schlüssel getestet, ohne sie zu speichern: den Schreibschlüssel mit
listZonesundlistCapabilitiessowie den Schlüssel mit Lesezugriff mitlistSystemVms.Klicken Sie auf Save connection. Lassen Sie Enable CloudStack connection eingeschaltet; das Ausschalten sorgt dafür, dass der Worker alle CloudStack-Jobs stoppt, ohne Daten zu verlieren.
Öffnen Sie Services › Virtual Machines › Policy › Provisioning, um das Standard-Gastnetzwerk, benutzerdefinierte Angebote und das Standard-Schlüsselpaar für neue VMs festzulegen.

Öffnen Sie Infrastructure › Cloud provider › Sales IP pools und legen Sie unter Configure sales ranges die Option Sellable IP range prefixes (zum Beispiel
203.0.113.) sowie Excluded IP prefixes fest, falls bestimmte Adressen in der Zone niemals verkauft werden dürfen. Lassen Sie das Präfix leer, um jede freie Adresse zuzulassen.
Was NexCMP liest und schreibt
| Bereich | Liest | Änderungen |
|---|---|---|
| VMs | Liste, Status, Nutzungsverlauf, Konsolen-Endpoint | Bereitstellen, Starten, Stoppen, Neustarten, Neuinstallieren, Löschen, Skalieren, Passwort- und SSH-Key-Zurücksetzung |
| Datenträger und Snapshots | Volumes, VM-Snapshots, Backups | Erstellen, Anhängen, Trennen, Größe ändern, Löschen, Snapshot, Wiederherstellen |
| Netzwerk | Netzwerke, Router, öffentliche IPs, Firewall, Portweiterleitung, Load-Balancer-Regeln | Öffentliche IPs zuweisen und freigeben, statisches NAT, Firewall, Portweiterleitung, Egress-Regeln, Netzwerke und ACLs für Private Cloud |
| Katalog | Dienst-, Datenträger- und Netzwerkangebote, Templates, ISOs, Betriebssystemtypen | Templates und ISOs (Images) registrieren und löschen, Dienstangebote beim Erstellen benutzerdefinierter Tarife |
| Kubernetes | Unterstützte Versionen, Cluster, Konfiguration | Projekte, Ressourcenlimits, Netzwerke, Cluster (Modul Kubernetes) |
| Schlüssel mit Lesezugriff | Hosts, Cluster, Storage Pools, System-VMs, Kapazität, VLAN-IP-Bereiche | Keine |
Live-CPU und -RAM sowie Bandbreite
- Hot-Plug. Eine laufende VM kann nur dann ohne Neustart in der Größe angepasst werden, wenn deren Template dies erlaubt (dynamisch skalierbar) und das Gastbetriebssystem neue CPUs und RAM online nimmt. NexCMP aktiviert Auto Scaling für Templates, deren Name auf
vNendet mit N von 6 oder mehr, oder wenn Sie es manuell im Feld vCPU/RAM-Hot-Plug des Templates festlegen. Siehe Templates. - Bandbreitenquelle. Mit den Standardeinstellungen misst NexCMP den Traffic anhand der CloudStack-VM-Statistiken (
listVirtualMachinesUsageHistory, alle 5 Minuten abgefragt und pro VM-Netzwerkschnittstelle summiert). Die Werte beinhalten Traffic zwischen VMs und können daher etwas höher sein als von einem Edge-Router gezählt. Lassen Sie die Erfassung der CloudStack-VM-Statistiken eingeschaltet; Lücken, die länger als die Statistikvorhaltung sind, werden übersprungen. Siehe Bandbreite.
Verifizierung
- Test connection gibt "Write key: OK" zusammen mit Ihrer Zone und der CloudStack-Version zurück.
- Infrastructure › Cloud provider › Providers zeigt den Provider als aktiv mit einem kürzlichen Testzeitpunkt an. Das Dashboard-Zustandspanel zeigt nicht mehr "CloudStack: not connected".
- Sales IP pools listet freie Adressen auf (aktualisiert sich etwa einmal pro Minute).
- Bestellen Sie eine kleine VM über das Kundenportal oder die Admin-Konsole und prüfen Sie, ob sie den Status Running erreicht, eine öffentliche IP hat und ob Sie die Konsole öffnen können.
Grenzwerte und Hinweise
- In dieser NexCMP-Release kann ein CloudStack-Cluster verbunden werden. Der Dialog Add cloud provider kann die Schlüssel eines zweiten Clusters testen, diese jedoch nicht speichern.
- Eine CloudStack-Zone ist mit der Standardzone von NexCMP verknüpft; ein CloudStack mit mehreren Zonen ist auf die von Ihnen eingegebene Zone beschränkt, sodass VMs, IPs und Netzwerke anderer Zonen ignoriert werden.
- Das Löschen des Gastnetzwerks in CloudStack führt dazu, dass jede neue Bereitstellung fehlschlägt. Die Admin-Konsole zeigt einen roten Hinweis, wenn das Netzwerk verschwindet.
- Anmeldeinformationen verlassen niemals den Server. Die API gibt nur die letzten vier Zeichen zurück.
Fehlerbehebung
| Symptom | Ursache | Behebung |
|---|---|---|
listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature | Falscher API-Schlüssel oder -Secret, Schlüssel von einem anderen Benutzer oder ein Zeitproblem auf dem Panel-Server | Generieren Sie die Schlüssel mit cmk generate userkeys neu und fügen Sie beide ein. Überprüfen Sie die Uhrzeit des Panel-Servers. |
Test: listZones: … oder Timeout | Der Panel-Server kann die API-URL nicht erreichen | Überprüfen Sie DNS, Firewall und den exakten /client/api-Pfad. |
| Assistent: "network not found in that zone for this API key" | Das gewählte Netzwerk gehört zu einem anderen Account oder einer anderen Zone | Erstellen Sie das Netzwerk im dedizierten Account (siehe oben) und führen Sie Test connection erneut aus. |
| Assistent: "pick a zone and a network" | Test nicht ausgeführt oder keine Zone bzw. kein Netzwerk ausgewählt | Klicken Sie auf Test connection und wählen Sie beide Listen aus. |
| "CloudStack-Schlüssel nicht konfiguriert" (Banner) | Noch kein Schlüssel gespeichert ("Connect later") | Füllen Sie die Verbindungskarte aus, Save connection und danach Test connection. |
| Banner "CloudStack connection is OFF" | Der Schalter Enable CloudStack connection ist ausgeschaltet | Schalten Sie ihn ein und speichern Sie. |
| Schreibgeschützter Schlüssel: "unusable …" im Test | Fehlende Rollenberechtigung oder falscher Account | Überprüfen Sie die sechs erlaubten Befehle und stellen Sie sicher, dass sich der Account in der ROOT-Domain befindet. |
| "Zone public IP ranges not measured yet" oder "no public IP ranges declared" | Kein schreibgeschützter Schlüssel oder die Zone besitzt tatsächlich keinen öffentlichen Bereich | Fügen Sie den Nur-Lese-Schlüssel hinzu oder fügen Sie einen öffentlichen IP-Bereich in CloudStack hinzu. |
| "Pool leer — 60 Sek. auf vmd-Synchronisierung warten" | Die IP-Liste wird einmal pro Minute vom Worker aktualisiert. | Warten Sie eine Minute und laden Sie die Seite neu. |
| "Keine freien IPs im Bereich 203.0.113. verfügbar" | Alle Adressen im verkäuflichen Präfix sind belegt. | Fügen Sie Adressen zur Zone hinzu, vergrößern Sie das Präfix oder geben Sie nicht genutzte IPs frei. |
| "Netzwerkdaten konnten nicht abgerufen werden (CloudStack antwortet nicht oder Schlüssel hat keine Berechtigungen)" | Schlüssel hat den Zugriff verloren oder CloudStack ist nicht erreichbar. | Führen Sie Test connection aus; prüfen Sie, ob das Konto aktiviert ist. |
| "Gastnetzwerk existiert NICHT" | Das Netzwerk wurde in CloudStack gelöscht. | Erstellen Sie das Netzwerk neu und legen Sie es unter Provisioning als Standard fest. |