במדריך הזה נלמד איך לפרוס אפליקציה לדוגמה של יומן רישום שמשתמשת ב-Node.js לחלק הקדמי שלה וב-MySQL לחלק האחורי שלה. בסיום המדריך, הפריסה שלכם תכלול את המשאבים הבאים:
אם אתם משתמשים חדשים ב-Deployment Manager, כדאי לעיין במדריכים למתחילים או במדריך המפורט.
לפני שמתחילים
- אם רוצים להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה`gcloud`.
- כדי להשתמש בדוגמאות ל-API במדריך הזה, צריך להגדיר גישה ל-API.
- סקירה כללית על איזון עומסי רשת ב-Compute Engine
- סקירה כללית על קונטיינרים של Docker
יצירת תבניות משאבים
בדוגמה הזו מופעל פריסה שמכילה מגוון של משאבי Google Cloud. כדי להתחיל, יוצרים תבניות שמגדירות את המשאבים האלה בנפרד. בהמשך, קוראים לתבניות האלה בהגדרה הסופית. הפריסה כוללת את המשאבים הבאים:
- מכונה של Compute Engine שמארחת מסד נתונים של MySQL בשביל האפליקציה.
- תבנית של הגדרות מכונה למכונות קצה, שמשתמשת בקובץ אימג' של Docker לאפליקציית Node.js.
- קבוצת מופעי מכונה מנוהלים, שמשתמשת בתבנית של הגדרות מכונה כדי ליצור שני מופעי קצה.
- קנה מידה אוטומטי, שמתחיל או מפסיק מופעים נוספים של חזית האתר על סמך תנועה נכנסת.
- בדיקת תקינות, שבודקת אם מופעי הקצה הקדמי זמינים לביצוע עבודה.
- מאזן עומסי רשת עם כלל העברה.
- מאגר יעד לקבוצת מופעי מכונה מנוהלים.
יצירת התבנית עבור קצה העורפי של MySQL
החלק העורפי של האפליקציה הזו הוא מכונה וירטואלית אחת ב-Compute Engine שמריצה קונטיינר של MySQL Docker. תבנית container_vm.py מגדירה מכונה ב-Compute Engine שיכולה להריץ קונטיינרים של Docker. כדי לוודא שהתבנית עומדת במבנה הנכון ומכילה את כל המאפיינים הנדרשים, צריך גם קובץ סכימה.
מעתיקים את התבנית שלמטה או מורידים אותה ממאגר GitHub:
מורידים את קובץ הסכימה של התבנית.
בתבנית יש מאפיינים לא מוגדרים, כמו containerImage, שמוגדרים בתבניות מאוחרות יותר.
כשמשתמשים בקובצי אימג' של קונטיינרים במכונות של Compute Engine, צריך גם לספק קובץ מניפסט שמתאר באיזה קובץ אימג' של קונטיינר להשתמש. יוצרים שיטת עזר בשם container_helper.py כדי להגדיר באופן דינמי את מניפסט מאגר התגים:
יצירת התבנית לחלק הקדמי של Node.js
הקצה הקדמי של האפליקציה מריץ Node.js, ומאפשר למשתמשים לשלוח הודעות בדף האינטרנט. הקצה הקדמי פועל בקבוצה של מכונות וירטואליות, עם תמיכה של מידרוג אוטומטי ומאזן עומסים. כדי ליצור תבניות של קצה קדמי, צריך לפעול לפי ההוראות הבאות.
יוצרים משאב תבנית של הגדרות מכונה.
כדי ליצור קבוצת מופעי מכונה מנוהלים, צריך תבנית של הגדרות מכונה. קבוצת מופעי מכונה מנוהלים היא קבוצה של מופעים זהים של מכונות וירטואליות (VM) שאתם שולטים בהם כישות אחת.
יוצרים קובץ בשם
container_instance_template.pyומורידים את הסכימה של התבנית:יוצרים מאזן עומסים, קבוצת מופעי מכונה מנוהלים ומנגנון להתאמה אוטומטית של משאבים.
לאחר מכן, יוצרים עוד תבנית שמשתמשת בתבנית
container_instance_template.pyויוצרת את שאר משאבי ה-Frontend, כולל מידרוג אוטומטי, מאזן עומסים וקבוצת מופעי מכונה מנוהלים.
התבנית הזו כוללת את המשאבים הבאים:
תבנית של הגדרות מכונה באמצעות התבנית
container_instance_template.pyקבוצת מופעי מכונה מנוהלים שמשתמשת בתבנית של הגדרות מכונה, וכלי לשינוי גודל אוטומטי שמפנה לקבוצת מופעי המכונה המנוהלים. שימוש בהפניות מבטיח ש-Deployment Manager ייצור את המשאבים בסדר מסוים. במקרה הזה, קבוצת מופעי מכונה מנוהלים נוצרת לפני מידרוג אוטומטי.
מאזן עומסי רשת שמכיל את המשאבים הבאים:
- כלל העברה עם כתובת IP חיצונית אחת שחשופה לאינטרנט.
- מאגר יעד שמכיל את קבוצת מופעי מכונה מנוהלים שיצרתם קודם.
- בדיקת תקינות לצירוף למאגר היעדים.
יוצרים קובץ בשם frontend.py ומורידים את הסכימה של התבנית:
מורידים את קובץ הסכימה של התבנית.
יצירת תבנית מאחדת
לבסוף, יוצרים תבנית שמשלבת בין תבניות ה-backend וה-frontend. יוצרים קובץ בשם nodejs.py עם התוכן הבא:
מורידים את קובץ הסכימה של התבנית.
שימו לב שחלק הקצה של האפליקציה נקרא env["deployment"]-frontend, וגם חלק הקצה העורפי נקרא באופן דומה. כשפורסים את האפליקציה, Deployment Manager מחליף אוטומטית את env["deployment"] בשם הפריסה.
יצירת ההגדרה
אחרי שכל התבניות מוכנות, אפשר ליצור הגדרה שתשמש לפריסת המשאבים. יוצרים קובץ תצורה בשם nodejs.yaml עם התוכן הבא:
מחליפים את ZONE_TO_RUN בתחום שבו רוצים את המשאבים, לדוגמה us-central1-a.
פריסת המשאבים
עכשיו אפשר לפרוס את המשאבים. מריצים את הפקודה הבאה ב-Google Cloud CLI:
gcloud deployment-manager deployments create advanced-configuration --config nodejs.yaml
בסיום הפריסה, ב-Deployment Manager מוצג סיכום של המשאבים שנוצרו, בדומה לסיכום הבא:
Waiting for create operation-1468522101491-5379cf2344539-5961abe8-a500190c...done.
Create operation operation-1468522101491-5379cf2344539-5961abe8-a500190c completed successfully.
NAME TYPE STATE ERRORS
advanced-configuration-application-fw compute.v1.firewall COMPLETED []
advanced-configuration-backend compute.v1.instance COMPLETED []
advanced-configuration-frontend-as compute.v1.autoscaler COMPLETED []
advanced-configuration-frontend-hc compute.v1.httpHealthCheck COMPLETED []
advanced-configuration-frontend-igm compute.v1.instanceGroupManager COMPLETED []
advanced-configuration-frontend-it compute.v1.instanceTemplate COMPLETED []
advanced-configuration-frontend-lb compute.v1.forwardingRule COMPLETED []
advanced-configuration-frontend-tp compute.v1.targetPool COMPLETED []
בדיקת האפליקציה
כדי לבדוק את האפליקציה, קודם צריך לקבל את כתובת ה-IP החיצונית שמשרתת תנועה, על ידי שליחת שאילתה לכלל ההעברה:
$ gcloud compute forwarding-rules describe advanced-configuration-frontend-lb --region us-central1 IPAddress: 104.154.81.44 IPProtocol: TCP creationTimestamp: '2016-07-14T11:48:37.228-07:00' description: '' id: '9033201246750269546' kind: compute#forwardingRule name: advanced-configuration-frontend-lb portRange: 8080-8080 region: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/forwardingRules/advanced-configuration-frontend-lb target: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/targetPools/advanced-configuration-frontend-tp
במקרה הזה, כתובת ה-IP החיצונית היא 104.154.81.44.
לאחר מכן, בדפדפן, נכנסים לכתובת ה-IP החיצונית עם היציאה 8080. לדוגמה, אם כתובת ה-IP החיצונית שלכם היא 104.154.81.44, כתובת ה-URL תהיה:
http://104.154.81.44:8080
אמור להופיע דף ריק, וזה צפוי. לאחר מכן, מפרסמים הודעה בדף. עוברים לכתובת ה-URL הבאה:
http://104.154.81.44:8080?msg=hellothere!
יופיע אישור שההודעה נוספה. חוזרים לכתובת ה-URL הראשית, ועכשיו אמורה להופיע בדף ההודעה:
hellothere!
עכשיו יש לכם אפליקציה שניתן לפרוס אותה, והיא יכולה לרשום ביומן הודעות שנשלחות אליה.
השלבים הבאים
אחרי שתסיימו את הדוגמה הזו, תוכלו:
- אפשר להשתמש בדוגמה הזו כדי לפרוס מכונות עם קונטיינרים משלכם של Docker. כדי לשנות את קובצי ה-Docker שבהם נעשה שימוש במדריך הזה, צריך לערוך את קובצי ה-Docker במאגר GitHub.
- דוגמאות נוספות לפריסות זמינות במאגר של Deployment Manager ב-GitHub.
- מידע נוסף על תבניות ועל פריסות