Implementa una aplicación de ASP.NET en Compute Engine


En este instructivo, se describe cómo implementar una aplicación web de .NET Framework en Compute Engine.

Este instructivo está dirigido a desarrolladores y a ingenieros DevOps que tienen conocimientos básicos de Microsoft .NET y Compute Engine.

Objetivos

Implementa una aplicación web ASP.NET Model-View-Controller (MVC) que use .NET Framework 4 y se ejecute en Windows en una sola instancia de Compute Engine.

En este instructivo, se muestra cómo completar las siguientes tareas para alcanzar tu objetivo:

  • Implementa una VM de Compute Engine
  • Configura el balanceo de cargas
  • Implemente la aplicación ASP.NET

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita la API de Compute Engine.

    Habilita la API

  5. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  7. Habilita la API de Compute Engine.

    Habilita la API

Implementa una VM de Compute Engine

En esta sección, se muestra cómo crear una VM de Linux o una VM de Windows Server que ejecute servidores web de Microsoft Internet Information Services (IIS) en Compute Engine.

  1. Establece valores predeterminados para tu ID del proyecto y zona de Compute Engine. Esto te ayuda a ahorrar tiempo.

    gcloud config set project PROJECT_ID
    gcloud config set compute/zone ZONE
    

    Reemplaza lo siguiente:

    • PROJECT_ID por el ID del proyecto de Google Cloud.
    • ZONE por el nombre de la zona que usarás para crear recursos Si no estás seguro de qué zona elegir, usa la que esté geográficamente más cerca de ti.

    Por ejemplo:

    gcloud config set project test-project-12345
    gcloud config set compute/zone us-central1-a
    
  2. Cree una instancia de VM:

    Para crear una VM de Windows Server que ejecute IIS, haz lo siguiente:

    1. Crea una secuencia de comandos de inicio para la instancia de VM. Esta secuencia de comandos se ejecutará durante la inicialización de la VM y se instalará IIS:

      "# Install IIS
      Enable-WindowsOptionalFeature -Online -FeatureName ``
          NetFx4Extended-ASPNET45, ``
          IIS-WebServerRole, ``
          IIS-WebServer, ``
          IIS-CommonHttpFeatures, ``
          IIS-HttpErrors, ``
          IIS-HttpRedirect, ``
          IIS-ApplicationDevelopment, ``
          IIS-HealthAndDiagnostics, ``
          IIS-HttpLogging, ``
          IIS-LoggingLibraries, ``
          IIS-RequestMonitor, ``
          IIS-HttpTracing, ``
          IIS-Security, ``
          IIS-RequestFiltering, ``
          IIS-Performance, ``
          IIS-WebServerManagementTools, ``
          IIS-IIS6ManagementCompatibility, ``
          IIS-Metabase, ``
          IIS-DefaultDocument, ``
          IIS-ApplicationInit, ``
          IIS-NetFxExtensibility45, ``
          IIS-ISAPIExtensions, ``
          IIS-ISAPIFilter, ``
          IIS-ASPNET45, ``
          IIS-HttpCompressionStatic
      Install-WindowsFeature Web-Mgmt-Service
      
      # Install WebDeploy
      [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType] 'Ssl3,Tls12'
      (New-Object Net.WebClient).DownloadFile(
          'https://download.microsoft.com/download/0/1/D/01DC28EA-638C-4A22-A57B-4CEF97755C6C/WebDeploy_amd64_en-US.msi',
          ""$env:Temp\webdeploy.msi"")
      & msiexec /qb! /i $env:Temp\webdeploy.msi | Out-Default
      " | Out-File -Encoding ASCII startup.ps1
      
    2. Crea la instancia de VM y ejecuta la secuencia de comandos de inicio startup.ps1:

      gcloud compute instances create clouddemo-1 `
          --image-family windows-2019 `
          --image-project windows-cloud `
          --machine-type n1-standard-2 `
          --boot-disk-type pd-ssd `
          --tags loadbalancer-backend `
          --metadata-from-file sysprep-startup-script-ps1=startup.ps1
      
  3. Supervisa el proceso de inicialización de la VM cuando ves su salida de puerto en serie:

    gcloud compute instances tail-serial-port-output clouddemo-1
    

    Espera unos 5 minutos hasta que veas el resultado Instance setup finished o Startup finished y, luego, presiona Ctrl + C. En este punto, ya se completó la instalación de los requisitos, y la instancia de VM está lista para usarse.

Configura el balanceo de cargas

Para que tu app de ASP.NET esté disponible a través de Internet, debes usar un balanceador de cargas HTTPS. Para asociar tu instancia de VM al balanceador de cargas, crea un grupo de instancias y asigna este grupo de instancias al balanceador de cargas:

  1. Crea un grupo de instancias no administrado y agrega la instancia de VM:

    gcloud compute instance-groups unmanaged create clouddemo-1
    gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
    
  2. Cree una verificación de estado que verifique si el servidor web se está ejecutando:

    gcloud compute http-health-checks create clouddemo-health `
        --check-interval 5s `
        --unhealthy-threshold 2 `
        --request-path /
    gcloud compute instance-groups set-named-ports clouddemo-1 --named-ports=http:80
    
  3. Crea un servicio de backend para el balanceador de cargas que use la verificación de estado HTTP y el grupo de instancias que creaste antes:

    gcloud compute backend-services create clouddemo-backend `
      --http-health-checks clouddemo-health `
      --port-name http `
      --protocol HTTP `
      --global
    gcloud compute backend-services add-backend clouddemo-backend `
      --instance-group clouddemo-1 `
      --global `
      --instance-group-zone $(gcloud config get-value compute/zone)
    
  4. Cree un frontend para el balanceador de cargas:

    gcloud compute url-maps create clouddemo-map --default-service clouddemo-backend
    gcloud compute target-http-proxies create clouddemo-proxy --url-map clouddemo-map
    gcloud compute forwarding-rules create clouddemo-frontend --global --target-http-proxy clouddemo-proxy --ports 80
    
  5. Crea una regla de firewall que permita que el balanceador de cargas envíe solicitudes HTTP a instancias anotadas con la etiqueta loadbalancer-backend.

    gcloud compute firewall-rules create loadbalancer-backend `
      --source-ranges "130.211.0.0/22,35.191.0.0/16" `
      --target-tags loadbalancer-backend `
      --allow tcp:80,tcp:5000
    
  6. Busca la dirección IP del balanceador de cargas:

    gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
    

    Anota la dirección IP. La necesitarás más tarde.

Implemente la aplicación ASP.NET

  1. Abre una consola de PowerShell.

  2. Descarga y descomprime o clona el repositorio de muestra de GitHub:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    
  3. Compila el paquete de implementación:

    1. Ve al directorio que contiene la aplicación de ejemplo:

      cd dotnet-docs-samples\applications\clouddemo\net4
      
    2. Restablece las dependencias de NuGet:

      nuget restore
      
    3. Compila la solución y usa el perfil de publicación PackageProfile para crear un paquete de implementación de WebDeploy:

      msbuild /t:clean,rebuild CloudDemo.Mvc.sln /p:DeployOnBuild=true /p:PublishProfile=PackageProfile
      

      La carpeta CloudDemo.Mvc\bin ahora contiene un archivo CloudDemo.Mvc.zip.

  4. Copia el paquete de implementación en la VM:

    1. Crea un nombre de usuario y una contraseña para la instancia de VM.
    2. Conéctate a la VM mediante el escritorio remoto y accede con el nombre de usuario y la contraseña que creaste en el paso anterior.
    3. Copia el archivo CloudDemo.Mvc.zip de la carpeta CloudDemo.Mvc\bin en una ubicación temporal en la instancia de VM.
    4. En la sesión de Escritorio remoto, haz clic con el botón derecho en el botón Iniciar (o presiona Windows + X) y, luego, en Windows PowerShell (Admin).
    5. Para confirmar el símbolo de elevación, haz clic en .
    6. Implementa el paquete de implementación:

      &"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package=PACKAGE -verb:sync -dest:auto
      

      Reemplaza PACKAGE por la ruta de acceso al paquete de implementación.

  5. En tu computadora local, abre un navegador web y navega a la siguiente dirección:

    http://LOADBALANCER_IP/
    

    Reemplaza LOADBALANCER_IP por la dirección IP que obtuviste después de implementar el balanceador de cargas.

    Ahora verá la aplicación de demostración y el título This app is running on Compute Engine.

Limpia

Una vez que completes el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

    Borra un proyecto de Google Cloud:

    gcloud projects delete PROJECT_ID

Borra los recursos individuales

Deberás borrar de forma individual todos los recursos creados para el proyecto (por ejemplo: grupos de instancias, verificaciones de estado, servicios de backend, proxy HTTP y reglas de reenvío). No puedes borrar las instancias de VM hasta que borres todos estos recursos.

¿Qué sigue?