במדריך הזה מוסבר איך פורסים אפליקציית אינטרנט של .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 . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.
פריסת מכונה וירטואלית ב-Compute Engine
בקטע הזה מוסבר איך ליצור מכונה וירטואלית של Linux או מכונה וירטואלית של Windows Server שמריצה שרתי אינטרנט של Microsoft Internet Information Services (IIS) ב-Compute Engine.
מגדירים ערכי ברירת מחדל למזהה הפרויקט ולתחום (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
יוצרים מופע של VM:
כדי ליצור מכונה וירטואלית של Windows Server שמריצה IIS:
יוצרים סקריפט לטעינה בזמן ההפעלה עבור המכונה הווירטואלית. הסקריפט הזה יפעל במהלך האתחול של מכונת ה-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יוצרים את המכונה הווירטואלית ומריצים את הסקריפט לטעינה בזמן ההפעלה
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
כדי לעקוב אחרי תהליך האתחול של המכונה הווירטואלית, אפשר לצפות בפלט של היציאה הטורית שלה:
gcloud compute instances tail-serial-port-output clouddemo-1
מחכים כ-5 דקות עד שמוצגת הפלט
Instance setup finishedאוStartup finished, ואז מקישים על Ctrl+C. בשלב הזה, ההתקנה של הדרישות המוקדמות הושלמה ומכונת ה-VM מוכנה לשימוש.
הגדרת איזון עומסים
כדי להפוך את אפליקציית ASP.NET לזמינה באינטרנט, צריך להשתמש במאזן עומסים ב-HTTPS. כדי לשייך את מופע ה-VM למאזן העומסים, יוצרים קבוצת מופעים ומקצים את קבוצת המופעים הזו למאזן העומסים:
יוצרים קבוצה של מופעי מכונה לא מנוהלים ומוסיפים את המכונה הווירטואלית:
gcloud compute instance-groups unmanaged create clouddemo-1 gcloud compute instance-groups unmanaged add-instances clouddemo-1 --instances clouddemo-1
יוצרים בדיקת תקינות שבודקת אם שרת האינטרנט פועל:
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יוצרים שירות לקצה העורפי של מאזן עומסים שמשתמש בבדיקת תקינות של 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)
יוצרים חזית למאזן העומסים:
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
יוצרים כלל חומת אש שמאפשר למאזן העומסים לשלוח בקשות 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
מחפשים את כתובת ה-IP של מאזן העומסים:
gcloud compute forwarding-rules describe clouddemo-frontend --global --format "value(IPAddress)"
חשוב לרשום את כתובת ה-IP. תצטרכו אותו בהמשך.
פריסת אפליקציית ASP.NET
פותחים מסוף PowerShell.
מורידים ופותחים את הקובץ או משכפלים את מאגר הדוגמאות מ-GitHub:
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
יוצרים את חבילת הפריסה:
עוברים לספרייה שמכילה את האפליקציה לדוגמה:
cd dotnet-docs-samples\applications\clouddemo\net4
שחזור יחסי תלות של NuGet:
nuget restore
יוצרים את הפתרון ומשתמשים ב
PackageProfileפרופיל הפרסום כדי ליצור חבילת פריסה של WebDeploy:msbuild /t:clean,rebuild CloudDemo.Mvc.sln /p:DeployOnBuild=true /p:PublishProfile=PackageProfile
התיקייה
CloudDemo.Mvc\binמכילה עכשיו את הקובץCloudDemo.Mvc.zip.
מעתיקים את חבילת הפריסה למכונה הווירטואלית:
- יוצרים שם משתמש וסיסמה למכונה הווירטואלית.
- מתחברים למכונה הווירטואלית באמצעות Remote Desktop ומתחברים באמצעות שם המשתמש והסיסמה שנוצרו בשלב הקודם.
- מעתיקים את הקובץ
CloudDemo.Mvc.zipמהתיקייהCloudDemo.Mvc\binלמיקום זמני במופע של המכונה הווירטואלית. - בסשן של שולחן העבודה המרוחק, לוחצים לחיצה ימנית על הלחצן Start (או מקישים על Win+X) ואז לוחצים על Windows PowerShell (Admin).
- לוחצים על כן כדי לאשר את ההודעה על העלאת הרשאות.
פורסים את חבילת הפריסה:
&"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package=
PACKAGE-verb:sync -dest:autoמחליפים את
PACKAGEבנתיב לחבילת הפריסה.
במחשב המקומי, פותחים דפדפן אינטרנט ועוברים לכתובת הבאה:
http://
LOADBALANCER_IP/מחליפים את
LOADBALANCER_IPבכתובת ה-IP שקיבלתם אחרי פריסת מאזן העומסים.עכשיו אפשר לראות את אפליקציית ההדגמה ואת הכותרת This app is running on Compute Engine (האפליקציה הזו פועלת ב-Compute Engine).
הסרת המשאבים
כשמסיימים את המדריך, אפשר למחוק את המשאבים שיצרתם, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. הסעיפים הבאים נסביר איך למחוק או להשבית את המשאבים האלו.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
מחיקת משאבים בודדים
תצטרכו למחוק כל אחד מהמשאבים שנוצרו עבור הפרויקט (לדוגמה: קבוצות של מכונות וירטואליות, בדיקות תקינות, שירותי קצה עורפי, שרתי proxy של HTTP וכללי העברה). אי אפשר למחוק את מופעי מכונות וירטואליות עד שמחקתם את כל המשאבים האלה.
המאמרים הבאים
- מידע נוסף על יצירה והפעלה של מכונות וירטואליות בתשתית של Google
- כדאי לעיין בשיטות המומלצות בGoogle Cloud מסגרת Well-Architected Framework.
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.