[LINUX] App Service Kleine Story-Sammlung

Wir haben einige Fragen aufgegriffen, die wir manchmal über Azure App Service hören. Lesen Sie sie daher bitte.

Teil 1: "Ich kann nicht auf Premium V2 skalieren!"

# Ich habe in letzter Zeit nichts davon gehört. </ font>

Es gibt verschiedene Spezifikationsklassen für mandantenfähige App-Service-Skalen (ohne ASE), von denen die höchste der Premium V2-Plan ist. image.png

Die verfügbaren Funktionen unterscheiden sich je nachdem, ob der Premium V2-Plan verfügbar ist. Eine davon ist die neue VNet-Integration von App Service ("Region VNet Integration" genannt).

Der App Service muss nicht auf PremiumV2 ausgeführt werden, um die regionale VNet-Integration nutzen zu können. Es muss jedoch auf einer Skalierungseinheit bereitgestellt werden, die den PremiumV2-Plan unterstützt (ob es möglich ist, mit dem Blade \ [Scale Up] im Azure-Portal auf PremiumV2 zu skalieren).

  • Regionale VNet-Integration - Integrieren von Apps in virtuelle Azure-Netzwerke - Azure App Service | Microsoft Docs
    https://docs.microsoft.com/ja-jp/azure/app-service/web-sites-integrate-with-vnet#regional-vnet-integration

Diese Funktion ist nur bei neuen App Service-Skaleneinheiten verfügbar, die den PremiumV2 App Service-Plan unterstützen.

Die Skalierungseinheit wird in hier erläutert. Bitte beziehen Sie sich darauf, aber tatsächlich kann der Premium V2-Plan verwendet werden. Ob der App Service mit der Skalierungseinheit zusammenhängt, in der er bereitgestellt wurde, und diese Skalierungseinheit wird während der ersten Bereitstellung bestimmt.

Wenn Sie also später wahrscheinlich PremiumV2 (oder verwandte Funktionen) benötigen, wählen Sie den PremiumV2-Plan, wenn Sie __ zum ersten Mal bereitstellen. __ __ Es stellt sicher, dass PremiumV2 auf der verfügbaren Waageneinheit bereitgestellt wird. \ # Wenn die Bereitstellung fehlschlägt, geraten Sie nicht in Panik und versuchen Sie es erneut.

Wenn Sie keinen besonderen Grund haben, PremiumV2 nach Abschluss der Bereitstellung beizubehalten, skalieren Sie es schnell auf Standard usw. herunter.

Teil 2: "Ich möchte Webjobs mit der Linux-Version von App Service verwenden!"

Die Windows-Version von App Service verfügt über eine Funktion namens Webjobs, mit der Sie im Hintergrund eine regelmäßige Verarbeitung durchführen können. Ich denke, einige Leute verwenden es zum Verschieben von Protokolldateien.

Auf der anderen Seite hat App Service auch eine Linux-Version (App Service unter Linux), aber leider keinen Mechanismus wie Webjobs.

In App Service unter Linux können Sie eine Webanwendung jedoch über ein Startskript im Docker-Container [^ 1] starten. Wenn Sie also eine kleine Ergänzung vornehmen möchten, können Sie ein Startskript erstellen, um die Vorverarbeitung zu verarbeiten. Ist möglich.

[^ 1]: App Service unter Linux startet einen Docker-Container basierend auf Docker-Images (Blessed Images) für jede von Microsoft bereitgestellte Laufzeitsprache.

  • appsvc's Profile - Docker Hub
    https://hub.docker.com/u/appsvc
  • Azure App Service - GitHub
    https://github.com/Azure-App-Service

Installieren Sie mit diesem Startskriptmechanismus cron zum Zeitpunkt des Starts der Webanwendung und versuchen Sie, einen geeigneten Job festzulegen.

Zusätzliches Installations- und Startverfahren für cron

  1. Kopieren Sie das Standard-Startskript / opt / startup / startup.sh.

    cp /opt/startup/startup.sh /home/start.sh
    
  2. In den meisten Fällen ist die letzte Zeile des kopierten Skripts / home / start.sh der Startbefehl der Webanwendung. Löschen Sie sie daher in der letzten Zeile und führen Sie unmittelbar zuvor eine zusätzliche Verarbeitung durch (z. B. Installation von cron oder (Zusätzliche Einstellungen usw.) werden beschrieben.

    apt update && apt install cron -y            #Cron installieren
    service cron start                           #Starten Sie cron
    echo "*/5 * * * * sh /home/job.sh" | crontab #Cron planen
    npm start                                    #Starten Sie eine Webanwendung(node.Für js)
    
  • / Home / job.sh ist ein Shell-Skript, das den Prozess beschreibt, den Sie ausführen möchten.
  1. Setzen Sie im Azure-Portal "/ home / start.sh", das in 1. erstellt wurde, als "Startbefehl" und starten Sie es neu.
    image.png

Wenn es richtig funktioniert, sieht der Prozessbaum wie folgt aus.

ProcessTree


/home# pstree -a
bash /opt/startup/init_container.sh sh /home/start.sh
  |-cron
  |-sshd
 (snipped)
  |
  `-startup.sh /opt/startup/startup.sh
      `-sh /home/start.sh
          `-npm
              (snipped)

Sie können den Cron-Prozess, das benutzerdefinierte Startskript "/ home / start.sh" unter dem Standard "/ opt / startup / startup.sh" und den Webanwendungs-Startbefehl ("npm") darunter sehen. Ich werde.

Das obige Beispiel ist eine Möglichkeit, cron einzufügen und es wie einen Webjob aussehen zu lassen. Sie können jedoch auch das Startskript verwenden, um verschiedene andere Einstellungen zu bearbeiten, bevor Sie die Webanwendung starten. Im folgenden Blog wird beispielsweise beschrieben, wie Sie die Konfigurationsdatei vor dem Start basierend auf dem PHP Docker-Image bearbeiten, sodass der X-Powered-By-Header nicht angezeigt wird.

  • Custom Startup script for PHP – Azure App Service Linux – HTTP Stack and other fun things I support
    http://jsandersblog.azurewebsites.net/2019/08/06/custom-startup-script-for-php-azure-app-service-linux/

Als Vorprozess können Sie die Quelle möglicherweise von außen herunterladen und kompilieren. Wenn Sie jedoch einen zu umfangreichen Vorprozess hinzufügen, dauert es einige Zeit, bis die erste Anforderung gestartet ist Nicht empfohlen. In diesem Fall sollten Sie benutzerdefinierte Container und Web App für Container verwenden.

Das ist alles für den Azure App Service.

Recommended Posts

App Service Kleine Story-Sammlung
Python kleine Geschichte Sammlung
Kleine Geschichte: Numpy Flatten Mechanismus
[Kleine Geschichte] Holen Sie sich mit Python einen Zeitstempel
[Memo] Kleine Geschichte von Pandas, numpy