[LINUX] Petite collection d'histoires App Service

Nous avons relevé quelques questions que nous entendons parfois sur Azure App Service, veuillez donc vous y référer.

Partie 1: "Je ne peux pas passer à Premium V2!"

# Je n'en ai pas entendu parler récemment. </ font>

Il existe plusieurs niveaux de spécification pour les échelles App Service multi-locataires (non ASE), dont le plus élevé est le plan Premium V2. image.png

Il existe des différences dans les fonctionnalités disponibles selon que le plan Premium V2 est disponible. L'un d'eux est la nouvelle intégration VNet d'App Service (appelée «Region VNet Integration»).

L'App Service n'a pas besoin d'être exécuté sur PremiumV2 pour utiliser l'intégration de réseau virtuel régional. Cependant, il doit être déployé sur une unité d'échelle qui prend en charge le plan PremiumV2 (s'il est possible de passer à PremiumV2 avec la lame \ [Scale Up] dans le portail Azure).

--Intégration VNet régionale --Intégration d'applications avec les réseaux virtuels Azure --Azure App Service | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/app-service/web-sites-integrate-with-vnet#regional-vnet-integration

Cette fonctionnalité est uniquement disponible à partir des nouvelles unités d'échelle App Service prenant en charge le plan PremiumV2 App Service.

L'unité d'échelle est expliquée dans ici, veuillez donc vous y référer, mais en fait, le plan Premium V2 peut être utilisé. Le fait que l'App Service soit lié ou non à l'unité d'échelle dans laquelle il a été déployé, et cette unité d'échelle est déterminée lors du déploiement initial.

Donc, si vous avez probablement besoin de PremiumV2 (ou de fonctionnalités associées) plus tard, choisissez le plan PremiumV2 lors du premier déploiement de __. __ Il garantit que PremiumV2 est déployé sur l'unité d'échelle disponible. \ # Si le déploiement échoue, ne paniquez pas et réessayez.

Si vous n'avez aucune raison particulière de conserver PremiumV2 une fois le déploiement terminé, réduisez-le rapidement à Standard, etc.

Partie 2: "Je souhaite utiliser des travaux Web avec la version Linux d'App Service!"

La version Windows d'App Service possède une fonctionnalité appelée Web Jobs, qui vous permet d'effectuer un traitement périodique en arrière-plan. Je pense que certaines personnes l'utilisent pour déplacer des fichiers journaux.

D'autre part, App Service dispose également d'une version Linux (App Service sur Linux), mais malheureusement, il ne dispose pas d'un mécanisme comme les jobs Web.

Cependant, dans App Service sous Linux, vous pouvez démarrer une application Web via un script de démarrage sur le conteneur Docker [^ 1], donc si vous souhaitez en ajouter un peu, vous pouvez concevoir un script de démarrage pour traiter le prétraitement Est possible.

[^ 1]: App Service sur Linux lance un conteneur Docker basé sur des images Docker (images bénies) pour chaque langage d'exécution fourni par Microsoft.

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

À l'aide de ce mécanisme de script de démarrage, installez cron au moment du démarrage de l'application Web et essayez de définir un travail approprié.

Procédure d'installation et de démarrage supplémentaire pour cron

  1. Copiez le script de démarrage par défaut / opt / startup / startup.sh.

    cp /opt/startup/startup.sh /home/start.sh
    
  2. Dans la plupart des cas, la dernière ligne du script copié / home / start.sh sera la commande de démarrage de l'application Web, supprimez-la en laissant la dernière ligne et ajoutez un traitement supplémentaire juste avant cela (comme l'installation de cron ou (Paramètres supplémentaires, etc.) sont décrits.

    apt update && apt install cron -y            #Installation de cron
    service cron start                           #Démarrer cron
    echo "*/5 * * * * sh /home/job.sh" | crontab #Planification cron
    npm start                                    #Lancer une application Web(node.Pour js)
    
  • / Home / job.sh est un script shell qui décrit le processus que vous souhaitez exécuter.
  1. Depuis le portail Azure, définissez / home / start.sh créé en 1. comme" commande de démarrage "et redémarrez.
    image.png

Si cela fonctionne correctement, l'arborescence des processus sera la suivante.

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)

Vous pouvez voir le processus cron, le script de démarrage personnalisé / home / start.sh sous la valeur par défaut / opt / startup / startup.sh, et la commande de démarrage de l'application Web ( npm) en dessous. Je vais.

L'exemple ci-dessus est un moyen d'insérer cron et de le faire ressembler à un travail Web, mais vous pouvez également utiliser le script de démarrage pour modifier divers autres paramètres avant de lancer l'application Web. Par exemple, le blog ci-dessous décrit comment modifier le fichier de configuration avant le lancement, en fonction de l'image PHP Docker, afin que l'en-tête X-Powered-By ne s'affiche pas.

  • 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/

En tant que pré-processus, vous pourrez peut-être télécharger la source de l'extérieur et la compiler, mais si vous ajoutez un pré-processus trop lourd, il faudra du temps pour démarrer la première requête, donc Non recommandé. Dans ce cas, envisagez d'utiliser des conteneurs personnalisés et une application Web pour conteneurs.

C'est tout pour Azure App Service.

Recommended Posts

Petite collection d'histoires App Service
petite histoire de python
Petite histoire: mécanisme d'aplatissement numpy
[Petite histoire] Obtenez l'horodatage avec Python
[Mémo] Petite histoire de pandas, stupide