פריסת אפליקציית ASP.NET ב-Compute Engine

במדריך הזה מוסבר איך פורסים אפליקציית אינטרנט של ‎ .NET Framework ב-Compute Engine.

המדריך הזה מיועד למפתחים ולמהנדסי DevOps שיש להם ידע בסיסי ב-Microsoft .NET וב-Compute Engine.

מטרות

פריסת אפליקציית אינטרנט ASP.NET Model-View-Controller ‏ (MVC) שמשתמשת ב-‎ .NET Framework 4 ופועלת ב-Windows במכונה אחת של Compute Engine.

במדריך הזה מוסבר איך לבצע את הפעולות הבאות כדי להשיג את היעד שלכם:

  • פריסת מכונה וירטואלית ב-Compute Engine
  • הגדרת איזון עומסים
  • פריסת אפליקציית ASP.NET

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

פריסת מכונה וירטואלית ב-Compute Engine

בקטע הזה מוסבר איך ליצור מכונה וירטואלית של Linux או מכונה וירטואלית של Windows Server שמריצה שרתי אינטרנט של Microsoft Internet Information Services (IIS) ב-Compute Engine.

  1. מגדירים ערכי ברירת מחדל למזהה הפרויקט ולתחום (zone) של Compute Engine. כך תוכלו לחסוך זמן.

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

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID במזהה הפרויקט. Google Cloud
    • ZONE בשם האזור שבו תשתמשו ליצירת משאבים. אם אתם לא בטוחים באיזה אזור לבחור, השתמשו באזור שממוקם הכי קרוב אליכם מבחינה גיאוגרפית.

    לדוגמה:

    gcloud config set project test-project-12345
    gcloud config set compute/zone us-central1-a
    
  2. יוצרים מופע של VM:

    כדי ליצור מכונה וירטואלית של Windows Server שמריצה IIS:

    1. יוצרים סקריפט לטעינה בזמן ההפעלה עבור המכונה הווירטואלית. הסקריפט הזה יפעל במהלך האתחול של מכונת ה-VM ויבצע התקנה של 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. יוצרים את המכונה הווירטואלית ומריצים את הסקריפט לטעינה בזמן ההפעלה 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. כדי לעקוב אחרי תהליך האתחול של המכונה הווירטואלית, אפשר לצפות בפלט של היציאה הטורית שלה:

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

    מחכים כ-5 דקות עד שמוצגת הפלט Instance setup finished או Startup finished, ואז מקישים על Ctrl+C. בשלב הזה, ההתקנה של הדרישות המוקדמות הושלמה ומכונת ה-VM מוכנה לשימוש.

הגדרת איזון עומסים

כדי להפוך את אפליקציית ASP.NET לזמינה באינטרנט, צריך להשתמש במאזן עומסים ב-HTTPS. כדי לשייך את מופע ה-VM למאזן העומסים, יוצרים קבוצת מופעים ומקצים את קבוצת המופעים הזו למאזן העומסים:

  1. יוצרים קבוצה של מופעי מכונה לא מנוהלים ומוסיפים את המכונה הווירטואלית:

    gcloud compute instance-groups unmanaged create clouddemo-1
    gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
    
  2. יוצרים בדיקת תקינות שבודקת אם שרת האינטרנט פועל:

    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. יוצרים שירות לקצה העורפי של מאזן עומסים שמשתמש בבדיקת תקינות של HTTP ובקבוצת המופעים שיצרתם קודם:

    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. יוצרים חזית למאזן העומסים:

    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. יוצרים כלל חומת אש שמאפשר למאזן העומסים לשלוח בקשות HTTP למכונות שסומנו בתג 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. מחפשים את כתובת ה-IP של מאזן העומסים:

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

    חשוב לרשום את כתובת ה-IP. תצטרכו אותו בהמשך.

פריסת אפליקציית ASP.NET

  1. פותחים מסוף PowerShell.

  2. מורידים ופותחים את הקובץ או משכפלים את מאגר הדוגמאות מ-GitHub:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    
  3. יוצרים את חבילת הפריסה:

    1. עוברים לספרייה שמכילה את האפליקציה לדוגמה:

      cd dotnet-docs-samples\applications\clouddemo\net4
      
    2. שחזור יחסי תלות של NuGet:

      nuget restore
      
    3. יוצרים את הפתרון ומשתמשים בPackageProfileפרופיל הפרסום כדי ליצור חבילת פריסה של WebDeploy:

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

      התיקייה CloudDemo.Mvc\bin מכילה עכשיו את הקובץ CloudDemo.Mvc.zip.

  4. מעתיקים את חבילת הפריסה למכונה הווירטואלית:

    1. יוצרים שם משתמש וסיסמה למכונה הווירטואלית.
    2. מתחברים למכונה הווירטואלית באמצעות Remote Desktop ומתחברים באמצעות שם המשתמש והסיסמה שנוצרו בשלב הקודם.
    3. מעתיקים את הקובץ CloudDemo.Mvc.zip מהתיקייה CloudDemo.Mvc\bin למיקום זמני במופע של המכונה הווירטואלית.
    4. בסשן של שולחן העבודה המרוחק, לוחצים לחיצה ימנית על הלחצן Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).
    5. לוחצים על כן כדי לאשר את ההודעה על העלאת הרשאות.
    6. פורסים את חבילת הפריסה:

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

      מחליפים את PACKAGE בנתיב לחבילת הפריסה.

  5. במחשב המקומי, פותחים דפדפן אינטרנט ועוברים לכתובת הבאה:

    http://LOADBALANCER_IP/
    

    מחליפים את LOADBALANCER_IP בכתובת ה-IP שקיבלתם אחרי פריסת מאזן העומסים.

    עכשיו אפשר לראות את אפליקציית ההדגמה ואת הכותרת This app is running on Compute Engine (האפליקציה הזו פועלת ב-Compute Engine).

הסרת המשאבים

כשמסיימים את המדריך, אפשר למחוק את המשאבים שיצרתם, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. הסעיפים הבאים נסביר איך למחוק או להשבית את המשאבים האלו.

מחיקת הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.

    כדי למחוק Google Cloud פרויקט:

    gcloud projects delete PROJECT_ID

מחיקת משאבים בודדים

תצטרכו למחוק כל אחד מהמשאבים שנוצרו עבור הפרויקט (לדוגמה: קבוצות של מכונות וירטואליות, בדיקות תקינות, שירותי קצה עורפי, שרתי proxy של HTTP וכללי העברה). אי אפשר למחוק את מופעי מכונות וירטואליות עד שמחקתם את כל המשאבים האלה.

המאמרים הבאים