Verwenden von Azure Functions zum Verwalten der Computeressourcen für Ihren dedizierten SQL-Pool (früher SQL DW) in Azure Synapse Analytics
In diesem Tutorial wird Azure Functions zum Verwalten der Computeressourcen für einen dedizierten SQL-Pool (früher SQL DW) in Azure Synapse Analytics verwendet.
Wenn Sie eine Azure-Funktionen-App bei einem dedizierten SQL-Pool (früher SQL DW) verwenden möchten, müssen Sie ein Dienstprinzipalkonto erstellen. Das Dienstprinzipalkonto benötigt Zugriff für Mitwirkende unter demselben Abonnement wie Ihre dedizierte SQL-Pool-Instanz (früher SQL DW).
Bereitstellen einer zeitgeberbasierten Skalierungsfunktion mit einer Azure Resource Manager-Vorlage
Sie benötigen die folgenden Informationen, um die Vorlage bereitzustellen:
- Name der Ressourcengruppe, in der sich Ihre dedizierte SQL-Pool Instanz (früher SQL DW) befindet
- Name des Servers, auf dem sich Ihre dedizierte SQL-Pool Instanz (früher SQL DW) befindet
- Name Ihrer dedizierten SQL-Pool-Instanz (früher SQL DW)
- Mandanten-ID (Verzeichnis-ID) Ihrer Microsoft Entra ID
- Abonnement-ID
- Dienstprinzipal-Anwendungs-ID
- Geheimer Schlüssel des Dienstprinzipals
Stellen Sie diese Vorlage bereit, nachdem Sie die zuvor angegebenen Informationen ermittelt haben:
Nach dem Bereitstellen der Vorlage sollten drei neue Ressourcen vorhanden sein: ein kostenloser Azure App Service-Plan, ein nutzungsbasierter Funktionen-App-Plan und ein Speicherkonto für die Verarbeitung der Protokollierung und der Warteschlange für die Vorgänge. Fahren Sie mit dem Lesen der anderen Abschnitte fort, um zu erfahren, wie Sie die bereitgestellten Funktionen an Ihre Anforderungen anpassen.
Ändern des Zeitpunkts des Skalierungsvorgangs
Navigieren Sie zu Ihrem Funktionen-App-Dienst. Wenn Sie die Vorlage mit den Standardwerten bereitgestellt haben, sollte dieser Dienst den Namen DWOperations haben. Nach dem Öffnen Ihrer Funktionen-App sollte zu sehen sein, dass für Ihren Funktionen-App-Dienst fünf Funktionen bereitgestellt wurden.
Wählen Sie entweder DWScaleDownTrigger oder DWScaleUpTrigger aus, um zentral hoch- bzw. herunterzuskalieren. Wählen Sie im Dropdownmenü „Integrieren“ aus.
Derzeit sollte der angezeigte Wert %ScaleDownTime% oder %ScaleUpTime% lauten. Diese Werte geben an, dass der Zeitplan auf Werten basiert, die in Ihren Anwendungseinstellungen definiert sind. Sie können diesen Wert vorerst ignorieren und den Zeitplan basierend auf den nächsten Schritten auf Ihre bevorzugte Zeit festlegen.
Fügen Sie im Zeitplanbereich den CRON-Ausdruck hinzu, um anzugeben, wie oft Azure Synapse Analytics zentral hochskaliert werden soll.
Der Wert von
schedule
ist ein CRON-Ausdruck mit diesen sechs Feldern:{second} {minute} {hour} {day} {month} {day-of-week}
"0 30 9 * * 1-5" steht beispielsweise für eine Auslösung an jedem Werktag um 9:30 Uhr. Weitere Informationen finden Sie im Artikel mit den Zeitplanbeispielen für Azure Functions.
Ändern der Computeebene
Navigieren Sie zu Ihrem Funktionen-App-Dienst. Wenn Sie die Vorlage mit den Standardwerten bereitgestellt haben, sollte dieser Dienst den Namen DWOperations haben. Nach dem Öffnen Ihrer Funktionen-App sollte zu sehen sein, dass für Ihren Funktionen-App-Dienst fünf Funktionen bereitgestellt wurden.
Wählen Sie entweder DWScaleDownTrigger oder DWScaleUpTrigger aus, um den Computewert zentral hoch- bzw. herunterzuskalieren. Nach dem Auswählen der Funktionen sollte in Ihrem Bereich die Datei index.js angezeigt werden.
Ändern Sie den Wert von ServiceLevelObjective in die gewünschte Ebene, und wählen Sie „Speichern“ aus. Der Wert ServiceLevelObjective ist die Computeebene, auf die Ihre Data Warehouse-Instanz, basierend auf dem im Abschnitt „Integrieren“ definierten Zeitplan, skaliert wird.
Verwenden des Anhaltens/Fortsetzens anstelle der Skalierung
Derzeit sind standardmäßig die Funktionen DWScaleDownTrigger und DWScaleUpTrigger aktiviert. Wenn Sie stattdessen die Funktion zum Anhalten und Fortsetzen verwenden möchten, können Sie DWPauseTrigger oder DWResumeTrigger aktivieren.
Navigieren Sie zum Functions-Bereich.
Wählen Sie die Umschaltfläche für die entsprechenden Trigger aus, die Sie aktivieren möchten.
Navigieren Sie für die Trigger jeweils zur Registerkarte Integrieren, um den Zeitplan zu ändern.
Hinweis
Die funktionelle Unterschied zwischen den Skalierungstriggern und den Triggern zum Anhalten/Fortsetzen ist die Nachricht, die an die Warteschlange gesendet wird. Weitere Informationen finden Sie unter Hinzufügen einer neuen Triggerfunktion.
Hinzufügen einer neuen Triggerfunktion
Derzeit sind nur zwei Skalierungsfunktionen in der Vorlage enthalten. Mit diesen Funktionen können Sie im Laufe eines Tags nur einmal herunter- und hochskalieren. Sie müssen einen weiteren Trigger hinzufügen, um eine präzisere Steuerung zu ermöglichen, z.B. mehrfaches zentrales Herunterskalieren an einem Tag oder Nutzung von unterschiedlichen Skalierungsverhalten am Wochenende.
Erstellen Sie eine neue leere Funktion. Wählen Sie die Schaltfläche + neben „Functions“, um den Bereich mit der Funktionsvorlage anzuzeigen.
Wählen Sie als Sprache JavaScript und dann TimerTrigger aus.
Benennen Sie die Funktion, und legen Sie Ihren Zeitplan fest. In der Abbildung ist dargestellt, wie Sie die Funktion jeden Samstag um Mitternacht (also in der Nacht von Freitag auf Samstag) auslösen können.
Kopieren Sie den Inhalt von index.js aus einer der Triggerfunktionen.
Legen Sie Ihre Vorgangsvariable wie folgt auf das gewünschte Verhalten fest:
// Resume the dedicated SQL pool (formerly SQL DW) instance var operation = { "operationType": "ResumeDw" } // Pause the dedicated SQL pool (formerly SQL DW) instance var operation = { "operationType": "PauseDw" } // Scale the dedicated SQL pool (formerly SQL DW)l instance to DW600c var operation = { "operationType": "ScaleDw", "ServiceLevelObjective": "DW600c" }
Komplexe Zeitpläne
In diesem Abschnitt wird kurz demonstriert, wie Sie eine komplexere Zeitplanung für das Anhalten, Fortsetzen und Skalieren erreichen.
Beispiel 1
Tägliches Hochskalieren um 8:00 Uhr auf DW600c und Herunterskalieren um 20:00 Uhr auf DW200c.
Funktion | Zeitplan | Vorgang |
---|---|---|
Function1 | 0 0 8 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function2 | 0 0 20 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"} |
Beispiel 2
Tägliches Hochskalieren um 8:00 Uhr auf DW1000c, Herunterskalieren auf DW600 um 16:00 Uhr und auf DW200c um 22:00 Uhr.
Funktion | Zeitplan | Vorgang |
---|---|---|
Function1 | 0 0 8 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"} |
Function2 | 0 0 16 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function3 | 0 0 22 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"} |
Beispiel 3
Hochskalieren um 8:00 Uhr auf DW1000c, einmaliges Herunterskalieren auf DW600c um 16:00 Uhr an den Werktagen. Anhalten am Freitag um 23:00 Uhr, Fortsetzen am Montag um 7:00 Uhr
Funktion | Zeitplan | Vorgang |
---|---|---|
Function1 | 0 0 8 * * 1-5 | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"} |
Function2 | 0 0 16 * * 1-5 | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function3 | 0 0 23 * * 5 | var operation = {"operationType": "PauseDw"} |
Function4 | 0 0 7 * * 1 | var operation = {"operationType": "ResumeDw"} |
Nächste Schritte
Informieren Sie sich über Trigger mit Timer für Azure-Funktionen.
Sehen Sie sich das Beispielrepository zum dedizierten SQL-Pool (früher SQL DW) an.