2013-12-12 8 views
5

Ich lese here, dass es möglich ist, die Instanzanzahl einer Azure-Compute-Service-Rolle mithilfe der Rest-API-Methode Change Deployment Configuration programmgesteuert festzulegen.Programmgesteuertes Festlegen der Instanzanzahl für einen Azure-Compute-Service

Die Dokumente für diese Methode erwähnen jedoch keine Rolleninstanzen, nur einige kryptische Erweiterungseigenschaften. Weiß jemand, wie das gemacht wird und kann vielleicht einige Zeiger oder ein Code-Snippet liefern?

Es ist nicht das AutoScaling, an dem ich interessiert bin, aber die genaue Anzahl der Instanzen als Reaktion auf benutzerdefinierte Ereignisse festlegen zu können.

+0

Einfach nur neugierig, welche Art von Ereignissen suchen Sie Ihre Skalierungsaktionen auslösen? – Igorek

+0

@Igorek gibt es einige Ereignisse, wie die Zeit in der Nacht und am Tag und andere in Ihrem eigenen Geschäft. –

+0

Etwas später als eine Antwort, aber wenn Sie immer noch brauchen, schauen Sie in CloudMonix @ http://cloudmonix.com nach - es verfügt über umfangreiche Funktionen, mit denen Sie benutzerdefinierte Aktionen wie diese ohne weitere Entwicklung ausführen können und hosten Sie Ihre eigenen benutzerdefinierten Skalierungslösungen – Igorek

Antwort

7

Falls Sie die Anzahl der Instanzen erhöhen möchten, können Sie die Anzahl der neuen Instanzen in der Servicekonfigurationsdatei festlegen und dann die Operation Change Deployment Configuration wie erwähnt ausführen. Sehen Sie sich Windows Azure PowerShell-Cmdlets an, da es über ein Cmdlet namens Set-AzureRole verfügt, das die Aufgabe für Sie erledigt.

In ähnlicher Weise, wenn Sie die Anzahl der Instanzen reduzieren möchten, können Sie wieder den gleichen Ansatz verwenden. Mit diesem Ansatz werden Instanzen von unten nach oben z. Wenn Sie 4 Instanzen ausführen (X_IN_0, X_IN_1, X_IN_2 und X_IN_3) und 2 Instanzen entfernen möchten, werden immer X_IN_3 und X_IN_2 entfernt). Wenn Sie also nicht möchten, dass die letzten Instanzen entfernt werden, können Sie denselben Ansatz verwenden.

In der Windows Azure-Dienstverwaltungs-API ist jedoch eine neue Operation verfügbar, mit der Sie bestimmte Instanzen entfernen können: Delete Role Instances. Sie können über diesen Vorgang hier lesen: http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx. Dies ist sehr praktisch, wenn Sie eine bestimmte Instanz entfernen möchten, die sich unregelmäßig verhält. Ich habe einen Blogeintrag geschrieben, den du hier lesen kannst: http://gauravmantri.com/2013/10/16/a-new-version-of-windows-azure-service-management-api-is-available-with-delete-specific-role-instances-and-more-goodies/.

+0

Das ist nützlich. Was macht das Set-AzureRole-Cmdlet unter der Haube? Vielleicht erstellt es eine Konfigurationsdatei und ruft die Change Deployment REST API auf? Ist diese Konfigurationsdatei irgendwo dokumentiert? Vielen Dank. –

+1

Meine Vermutung ist, dass es liest die Konfigurationsdatei und dann ändern Sie die 'count' Attributwert von' 'Element und ruft dann Change Deployment REST API. Bitte beachten Sie diesen Link für das Konfigurationsdateischema: http://msdn.microsoft.com/en-us/library/windowsazure/ee758710.aspx. –

+1

Der Code für alle PowerShell-Cmdlets befindet sich auf GitHub unter https://github.com/WindowsAzure/azure-sdk-tools. Wenn Sie sich jemals fragen, wie es etwas tut, ist der Code alles da, um durch zu graben. Sieht aus wie Guarav ist korrekt, es setzt nur die Konfiguration in der Konfiguration und Aktualisierung. https://github.com/WindowsAzure/azure-sdk-tools/blob/83648e3c9e8cdcf5ac35f28da3999d5f680f89b4/WindowsAzurePowershell/src/Commands.ServiceManagement/HostedServices/SetAzureRole.cs – MikeWo

2

Es gibt eine Set-AzureRole Cmdlets, die Sie die Anzahl der Instanzen Set-AzureRole (MSDN reference)

Hier ist ein Beispiel angeben können:

Set-AzureRole -ServiceName $service -Slot $slot -RoleName "your-role-name" -Count 1

+0

Befehlszeile ist nicht das, was er zu haben scheint. "... mit der Rest API" –

Verwandte Themen