במדריך הזה נלמד איך לפרוס אפליקציה לדוגמה של יומן רישום שמשתמשת ב-Node.js לחלק הקדמי שלה וב-MySQL לחלק האחורי שלה. בסיום המדריך, הפריסה שלכם תכלול את המשאבים הבאים:
אם אתם משתמשים חדשים ב-Deployment Manager, כדאי לעיין במדריכים למתחילים או במדריך המפורט.
לפני שמתחילים
- אם רוצים להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה`gcloud`.
- כדי להשתמש בדוגמאות ל-API במדריך הזה, צריך להגדיר גישה ל-API.
- סקירה כללית על איזון עומסי רשת ב-Compute Engine
- סקירה כללית על קונטיינרים של Docker
יצירת תבניות משאבים
בדוגמה הזו מופעל פריסה שמכילה מגוון של משאבי Google Cloud. כדי להתחיל, יוצרים תבניות שמגדירות את המשאבים האלה בנפרד. בהמשך, מבצעים קריאה לתבניות האלה בהגדרה הסופית. הפריסה כוללת את המשאבים הבאים:
- מכונה של Compute Engine שמארחת מסד נתונים של MySQL בשביל האפליקציה.
- תבנית של הגדרות מכונה למכונות קצה, שמשתמשת בקובץ אימג' של Docker לאפליקציית Node.js.
- קבוצת מופעי מכונה מנוהלים, שמשתמשת בתבנית של הגדרות מכונה כדי ליצור שני מופעי קצה.
- מנגנון לשינוי גודל אוטומטי, שמתחיל או מפסיק מופעים נוספים של חזית האתר בהתבסס על תנועה נכנסת.
- בדיקת תקינות, שבודקת אם מופעי הקצה הקדמי זמינים לביצוע עבודה.
- מאזן עומסי רשת עם כלל העברה.
- מאגר יעד לקבוצת המופעים המנוהלת.
יצירת התבנית עבור קצה העורפי של MySQL
הקצה העורפי של האפליקציה הזו הוא מכונה וירטואלית בודדת ב-Compute Engine שמריצה קונטיינר Docker של MySQL. תבנית 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 ומורידים את הסכימה של התבנית:
מורידים את קובץ הסכימה של התבנית.
יצירת תבנית מאחדת
לבסוף, יוצרים תבנית שמשלבת בין תבניות הקצה העורפי ותבניות הקצה החזיתי. יוצרים קובץ בשם 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.
- מידע נוסף על תבניות ועל פריסות