במדריך הזה מוסבר איך פורסים אפליקציית אינטרנט של .NET ב-Compute Engine.
המדריך הזה מיועד למפתחים ולמהנדסי DevOps שיש להם ידע בסיסי ב-Microsoft .NET וב-Compute Engine.
מטרות
פריסת אפליקציית אינטרנט ב-ASP.NET Core שמשתמשת ב- .NET 6 ופועלת ב-Linux במכונה אחת של 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:
כדי ליצור מכונה וירטואלית (VM) של Linux:
יוצרים סקריפט לטעינה בזמן ההפעלה עבור המכונה הווירטואלית. הסקריפט פועל במהלך האתחול של ה-VM ומתקין את סביבת זמן הריצה של .NET:
"if ! dpkg-query -W aspnetcore-runtime-6.0 then curl https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-6.0 fi " | Out-File -Encoding ASCII startup.shיוצרים את המכונה הווירטואלית ומשתמשים ב-
startup.shכסקריפט לטעינה בזמן ההפעלה:gcloud compute instances create clouddemo-1 ` --image-family debian-11 ` --image-project debian-cloud ` --machine-type n1-standard-2 ` --boot-disk-type pd-ssd ` --tags loadbalancer-backend ` --metadata-from-file startup-script=startup.sh
כדי לעקוב אחרי תהליך האתחול של המכונה הווירטואלית, אפשר לצפות בפלט של היציאה הטורית שלה:
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 / ` --port 5000 gcloud compute instance-groups set-named-ports clouddemo-1 --named-ports=http:5000יוצרים שירות לקצה העורפי של מאזן עומסים שמשתמש בבדיקת תקינות של 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\netcore
בונים את הפתרון:
dotnet publish -c Release
מעתיקים את חבילת הפריסה למכונה הווירטואלית:
מעתיקים את התוכן של התיקייה
publishלספריית הבית במכונה הווירטואלית:gcloud compute scp --recurse CloudDemo.MvcCore\bin\Release\net6.0\publish clouddemo-1:
ב-VM, יוצרים תיקייה
/var/www/clouddemoומעתיקים אליה את קובצי האפליקציה:sudo mkdir -p /var/www/clouddemo sudo chown -R www-data:www-data /var/www/clouddemo sudo cp -r publish/* /var/www/clouddemo
רושמים את האפליקציה כיחידת systemd:
cat <<EOF > kestrel-clouddemo.service [Unit] Description=Cloud Demo ASP.NET app [Service] WorkingDirectory=/var/www/clouddemo ExecStart=/usr/bin/dotnet /var/www/clouddemo/CloudDemo.MvcCore.dll Restart=always Environment=ASPNETCORE_ENVIRONMENT=Production Environment=ASPNETCORE_URLS=http://0.0.0.0:5000 [Install] WantedBy=multi-user.target EOF sudo mv kestrel-clouddemo.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl start kestrel-clouddemo
במחשב המקומי, פותחים דפדפן אינטרנט ועוברים לכתובת הבאה:
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.