אתם יכולים ליצור פריסות של עומסי עבודה עם שמירת מצב (stateful) במכונות וירטואליות עם זמינות גבוהה באמצעות קבוצות מנוהלות של מכונות וירטואליות עם שמירת מצב (stateful MIGs). עומסי עבודה עם שמירת מצב כוללים אפליקציות עם נתונים או הגדרות של שמירת מצב, כמו מסדי נתונים, אפליקציות מונוליטיות מדור קודם וחישובים ארוכים של אצווה עם נקודות ביקורת.
בעזרת קבוצות MIG עם שמירת מצב, אתם יכולים לשפר את זמן הפעולה התקינה ואת החוסן של אפליקציות כאלה עם שמירת מצב באמצעות תיקון תוכנה אוטומטי (שחזור אוטומטי של עומסי עבודה שנכשלו), פריסות מרובות אזורים ועדכונים בהדרגה אוטומטיים.
קבוצת מופעי מכונה מנוהלים (MIG) עם שמירת מצב שומרת על המצב הייחודי של כל מופע (כולל שם המופע, דיסק אחסון מתמיד (persistent disk) שמצורף, כתובות IP ומטא-נתונים) בהפעלה מחדש של מכונה וירטואלית, ביצירה מחדש, בתיקון תוכנה אוטומטי (autohealing) או בעדכון.
בדף הזה מוסבר מתי כדאי להשתמש בקבוצות מנוהלות של מכונות וירטואליות עם שמירת מצב, ומוצגת סקירה כללית של אופן הפעולה שלהן. מידע נוסף זמין במאמר בנושא איך פועלות קבוצות מנוהלות של מכונות וירטואליות עם שמירת מצב.
כדי ללמוד איך להגדיר קבוצת MIG עם שמירת מצב, אפשר לעיין במאמר הגדרת קבוצות MIG עם שמירת מצב.
מה ההבדל בין עומסי עבודה עם שמירת מצב לבין עומסי עבודה ללא שמירת מצב
אתם יכולים להשתמש בקבוצות מופעי מכונה מנוהלות כדי לתמוך בעומסי עבודה עם שמירת מצב וגם בעומסי עבודה ללא שמירת מצב. ההבדל העיקרי בין עומסי עבודה עם שמירת מצב (stateful) לבין עומסי עבודה ללא שמירת מצב (stateless) הוא שעומסי עבודה עם שמירת מצב שומרים את המצב של מכונה וירטואלית (VM) ספציפית (לדוגמה, שבר של מסד נתונים או הגדרת אפליקציה) בדיסקים של המכונה הווירטואלית, בעוד שעומסי עבודה ללא שמירת מצב, כמו חזית עורפית של אתר, לא שומרים מצב במכונות הווירטואליות הספציפיות.
אתם מתייחסים למכונות וירטואליות עם עומסי עבודה עם שמירת מצב כמו למכונות שנבנו בהתאמה אישית: חשוב לכם לדעת את הזהות (השם) של המכונה הווירטואלית, כתובת ה-IP, המטא-נתונים והנתונים בכל מכונה בנפרד. אי אפשר להרחיב בקלות עומסי עבודה עם שמירת מצב באופן אופקי, כי הרחבה עשויה לדרוש שכפול נתונים, יצירה או מחיקה של נתונים או שינוי של הגדרת האפליקציה הכוללת. כשיוצרים מחדש או מעדכנים מכונה עם עומס עבודה שמורכב מנתונים שמשתנים, צריך לשמור את המצב הייחודי של מכונת ה-VM. דוגמאות לאפליקציות עם מצב: Cassandra, ElasticSearch, mongoDB, MySQL, PostgreSQL ו-Kafka.
אתם מתייחסים ל-VM עם עומסי עבודה בלי שמירת מצב כאל מכונות שניתן להחליף ביניהן, ומה שחשוב לכם הוא רק מספר ה-VM שמשמשות אתכם. אף מכונה וירטואלית לא מקבלת יחס שונה ממכונה וירטואלית אחרת. אתם יכולים להרחיב במהירות את עומסי העבודה חסרי הסטטוס באופן אופקי על ידי הוספה או הסרה של מכונות וירטואליות. כשמעדכנים את האפליקציה, אפשר למחוק מכונות ולהחליף אותן במכונות חדשות עם שמות, כתובות IP, מטא-נתונים ודיסקים שונים. כשמכונה וירטואלית בלי שמירת מצב נמחקת או נוצרת מחדש, כל הנתונים במכונה אובדים: הדיסקים נמחקים או נוצרים מחדש מאפס. ממשק קצה באינטרנט הוא דוגמה לאפליקציה חסרת מצב.
| קבוצת MIG עם שמירת מצב | קבוצת MIG בלי שמירת מצב | |
|---|---|---|
| עומס עבודה | עומסי עבודה עם שמירת מצב שבהם הדיסקים, כתובות ה-IP או המטא-נתונים נשמרים בפעולות של יצירה מחדש של מכונה וירטואלית. | עומסי עבודה (workload) ללא מצב (stateless) עם זמינות גבוהה וניתנים להתאמה לעומס (scaling), שבהם הדיסקים וכתובות ה-IP נוצרים מחדש מאפס בהתאמה לעומס (scaling) אופקית, בתיקון אוטומטי, בעדכון אוטומטי וביצירה מחדש של מכונות וירטואליות. |
| תכונות של MIG |
|
|
| פריטים שניתן לשמור |
|
שמות המכונות |
כל קבוצות ה-MIG תומכות בשמות מותאמים אישית של מכונות וירטואליות שאפשר לשמור.
מתי כדאי להשתמש בקבוצות MIG עם שמירת מצב
מומלץ להשתמש בקבוצות מנוהלות של מופעים עם שמירת מצב (stateful MIGs) בכל פעם שמבצעים פריסה של אפליקציה או אשכול עם שמירת מצב ב-Compute Engine ורוצים לשפר את הזמינות שלהם באמצעות תיקון אוטומטי ופריסות מרובות אזורים, או כשרוצים לפשט את העדכונים של מופעים עם שמירת מצב באמצעות ניהול של עדכונים מצטברים ושליטה ברמת השיבוש המותרת במופעים.
קבוצות של מכונות וירטואליות במצב Stateful מיועדות לאפליקציות עם נתונים או הגדרות במצב Stateful, כמו:
- מסדי נתונים. לדוגמה: Cassandra, ElasticSearch, mongoDB ו-ZooKeeper. לפני שמחליטים להשתמש בקבוצות MIG עם שמירת מצב, כדאי לשקול שימוש בשירותים מנוהלים, למשל MySQL ו-PostgreSQL שזמינים ב-Cloud SQL, כדי להתמקד באפליקציות ולא להתעסק במכונות וירטואליות.
- אפליקציות לעיבוד נתונים. לדוגמה: Kafka ו-Flink. לפני שמחליטים להשתמש בקבוצות MIG עם שמירת מצב, כדאי לשקול שימוש בשירותים שמנוהלים באופן מלא, כמו Dataflow או Dataproc, כדי להתמקד במשימות של עיבוד נתונים ולא להתעסק במכונות וירטואליות.
- אפליקציות stateful אחרות. לדוגמה: TeamCity, Jenkins, Bamboo, שרתי DNS עם כתובת IP עם שמירת מצב ועומסי עבודה מותאמים אישית עם שמירת מצב.
- אפליקציות מונוליתיות מדור קודם. האפליקציות האלה שומרות את מצב האפליקציה בדיסק אתחול או בדיסקים קבועים נוספים, או שהן מסתמכות על הגדרה עם שמירת מצב, כמו שמות ספציפיים של מכונות וירטואליות, כתובות IP או ערכי מפתח של מטא-נתונים.
- עומסי עבודה באצווה עם יצירת נקודות ביקורת. בעזרת ההגדרה הזו, תוכלו לשמור תוצאות של חישובים ארוכים שבוצעו בנקודות ביקורת, למקרה של כשל בעומס העבודה או ב-VM, או למקרה של הפסקה זמנית של מופע. קבוצות MIG עם שמירת מצב יכולות ליצור מחדש מכונה שנכשלה, תוך שמירה על דיסק הנתונים שלה, כך שהחישוב יכול להימשך מנקודת הבדיקה האחרונה.
כדי להשיג חוסן (resilience) מפני כשלים אזוריים, האפליקציה צריכה לבצע רפליקציה של נתונים בכמה מופעים ברמת האפליקציה. לדוגמה, ElasticSearch ו-Cassandra תומכות בפונקציונליות כזו. אפשר להשתמש ב-MIG אזורי כדי להפוך אפליקציה כזו לעמידה בפני כשלים אזוריים. לשם כך, צריך לפרוס רפליקות מיותרות בכמה אזורים ולהסתמך על הפונקציונליות של שכפול הנתונים באפליקציה. במקרה של כשל אזורי, הנתונים שלכם מוגשים מרפליקות זמינות באזורים הנותרים.
כדאי לעיין במגבלות כדי לבדוק אם קבוצת MIG עם שמירת מצב עונה על הדרישות שלכם.
מה הופך קבוצת MIG למצבית
קבוצת MIG נחשבת כקבוצה עם שמירת מצב אם יצרתם הגדרה עם שמירת מצב.
אפשר ליצור הגדרה עם שמירת מצב כשיוצרים את ה-MIG, או להוסיף הגדרה כדי להמיר קבוצה מקבוצה בלי שמירת מצב לקבוצה עם שמירת מצב אחרי שהיא נוצרה.
כדי ליצור הגדרה עם שמירת מצב, צריך להגדיר מדיניות עם שמירת מצב שלא ריקה, או הגדרות לכל מופע שלא ריקות:
- מדיניות עם שמירת מצב מגדירה פריטים שרוצים לשמור לכל המופעים בקבוצת ה-MIG.
- הגדרה לכל מופע מגדירה פריטים שצריך לשמור עבור מופע ספציפי של מכונת VM.
ההגדרה נכנסת לתוקף אחרי שאתם או קבוצת ה-MIG מחילים אותה:
- קבוצת מופעים מנוהלת (MIG) מחילה באופן אוטומטי את הגדרת המדיניות עם שמירת מצב על מופעים חדשים וקיימים.
- כשיוצרים או מעדכנים הגדרות לכל מופע, אפשר לבחור אם להחיל את ההגדרה החדשה באופן ידני או באופן אוטומטי.
אחרי שמחילים את ההגדרה עם שמירת מצב (מדיניות עם שמירת מצב או הגדרות לכל מופע), אפשר לבדוק אותה על ידי בדיקת המצב שנשמר של כל מופע מנוהל.
שינויים עתידיים במצב או בגודל של קבוצת ה-MIG (לדוגמה, הקטנת הגודל של קבוצת ה-MIG, או מחיקה או ביטול של מופעים מקבוצת ה-MIG) יכולים להשפיע על המצבים שנשמרו של המופעים.
הגדרה שומרת מצב (Stateful)
קבוצת מופעי מכונה מנוהלים (MIG) עם שמירת מצב מקבלת את הגדרת המופע משילוב של תבנית של הגדרות מכונה, הגדרות אופציונליות לכל המופעים, מדיניות אופציונלית לשמירת מצב והגדרות אופציונליות לכל מופע שאתם מגדירים. אחרי שמגדירים את התצורה של הקבוצה, ה-MIG משתמש בתצורה הזו כשהוא יוצר מכונות וירטואליות. כדי להחיל הגדרה מעודכנת על מכונות וירטואליות קיימות, אפשר לעיין במאמר החלת הגדרות חדשות של מכונות וירטואליות בקבוצת MIG.
מדיניות עם שמירת מצב
מדיניות עם שמירת מצב מגדירה פריטים משותפים עם שמירת מצב לכל המופעים בקבוצת מופעים מנוהלת. כל פריט שכוללים במדיניות עם שמירת מצב צריך להיות מוגדר בתבנית של הגדרות מכונה של ה-MIG.
אפשר לבצע את השינויים הבאים במדיניות עם שמירת מצב:
- כדי להגדיר דיסקים כבעלי מצב, מוסיפים אותם למדיניות בעלת מצב.
- כדי להגדיר דיסקים כחסרי מצב, צריך להסיר אותם ממדיניות שמירת המצב.
- כדי לציין שכתובות ה-IP צריכות להיות עם שמירת מצב, צריך להוסיף הגדרה של ממשק הרשת למדיניות עם שמירת מצב.
- כדי לציין שצריך להתייחס לכתובות IP כאל כתובות בלי שמירת מצב, צריך להסיר את ההגדרה ממדיניות עם שמירת מצב.
הגדרות לכל מופע
הגדרה לכל מופע מגדירה פריטים עם שמירת מצב שהם ייחודיים למופע מנוהל ספציפי, כמו דיסקים ספציפיים למופע, צמדי מפתח/ערך של מטא-נתונים וכתובות IP. אין צורך להגדיר במכונה את המטא-נתונים ואת הדיסקים הספציפיים למכונה בתבנית של הגדרות מכונה של ה-MIG, אבל צריך להגדיר את ממשקי הרשת של כתובות ה-IP עם שמירת מצב בתבנית של הגדרות מכונה של ה-MIG.
אפשר לבצע את השינויים הבאים בהגדרה לכל מופע של מופע ספציפי בקבוצת מופעים מנוהלת (MIG):
- הגדרת דיסקים שמוגדרים בתבנית של הגדרות מכונה כך שיהפכו לדיסקים עם שמירת מצב במכונה (על ידי הוספת הדיסקים האלה להגדרה של כל מכונה) או לדיסקים בלי שמירת מצב (על ידי הסרת הדיסקים האלה מההגדרה של כל מכונה).
- הגדרה של דיסקים קיימים שלא מוגדרים בתבנית של הגדרות מכונה, כך שהם יצורפו ויהפכו לדיסקים עם שמירת מצב למכונה (על ידי הוספת הדיסקים האלה להגדרה לכל מכונה), או כך שהם ינותקו מהמכונה (על ידי הסרת הדיסקים מההגדרה לכל מכונה).
- הוספה או הסרה של צמדי מפתח/ערך של מטא-נתונים עם שמירת מצב שספציפיים למופע.
- הגדרת כתובות IP בנפרד למופעים בקבוצת מופעי מכונה מנוהלים (MIG) כדי להפוך אותם למופעים עם שמירת מצב או למופעים בלי שמירת מצב. אין תמיכה בהגדרות לכל מופע של כתובות IP בממשקי רשת דינמיים.
דוגמה להגדרה עם שמירת מצב
דוגמה להגדרה עם שמירת מצב:

בתרשים הזה:
- תבנית של הגדרות מכונה מגדירה תצורה משותפת לכל מכונות ה-VM ב-MIG
- מדיניות עם שמירת מצב מגדירה הגדרה משותפת עם שמירת מצב לדיסקים עם שם המכשיר,
data-disk, שמוגדרים על ידי תבנית המופע, ונוצרים ומצורפים בנפרד לכל מופע של מכונת VM ב-MIG. - ההגדרה לכל מופע מגדירה הגדרה עם שמירת מצב למופע ספציפי של מכונה וירטואלית בשם
node-1. הוא מציין לצרף דיסק קיים,my-legacy-1, למופעnode-1ולהתייחס אליו כאל דיסק עם שמירת מצב. הוא גם מציין ערך אחד של מפתח מטא-נתונים כדי לשמור על הייחודיות של מופעnode-1:node-id:xyz273.
כשיוצרים את המכונה הווירטואלית node-1, קבוצת המכונות המנוהלת (MIG) מבצעת את הפעולות הבאות:
- משתמש בסוג המכונה
n2-standard-2, בהתאם לתבנית של הגדרות מכונה. - יוצר ומצרף דיסק אתחול עם שם דיסק שנוצר אוטומטית,
boot-node-1, ושם מכשירboot-disk, באמצעות תמונת Debian GNU/Linux, בהתאם לתבנית של הגדרות מכונה. ה-MIG מתייחס לדיסק האתחולboot-node-1כאל דיסק חסר מצב (stateless) כי הוא לא מוגדר במדיניות לשימור מצב או בהגדרות לכל מופע. - יוצר ומצרף דיסק נוסף עם שם דיסק שנוצר באופן אוטומטי,
data-disk-1, ושם מכשיר,data-disk, באמצעות תמונה בהתאמה אישית, בהתאם לתבנית של הגדרות מכונה. ה-MIG מתייחס לדיסק הנוסףdata-disk-1כדיסק עם שמירת מצב, כי שם המכשיר שלו מצוין במדיניות שמירת המצב. - מצרפים דיסק קיים עם שם הדיסק
my-legacy-1, ומשתמשים בשם המכשירlegacy-disk, בהתאם להגדרה לכל מופע. ה-MIG מתייחס לדיסק הנוסףmy-legacy-1כאל דיסק עם שמירת מצב, כי שם המכשיר שלו מוגדר בהגדרה לכל מופע. - מגדיר שלושה צמדי מפתח/ערך של מטא-נתונים: שניים מתבנית של הגדרות מכונה (
app:example-stateful-app,version:1.0) ואחד מההגדרה לכל מכונה (node-id:xyz273). קבוצת המכונות לניהול (MIG) מתייחסת לצמד המפתח/ערךnode-id:xyz273כאל צמד עם שמירת מצב, כי הוא מוגדר בהגדרה לכל מכונה.
כשיוצרים מחדש את המכונה הווירטואלית של node-1, בהנחה שההגדרה זהה עדיין בתוקף, קבוצת ה-MIG יוצרת מחדש את הפריטים בלי שמירת מצב ושומרת על הפריטים עם שמירת מצב:
מערכת יוצרת מחדש את דיסק האתחול מהתמונה המקורית:
קודם הוא מוחק את דיסק האתחול, ואז הוא יוצר אותו מחדש מתמונת Debian GNU/Linux, כמו שצוין בתבנית המופע.
boot-node-1שומר על דיסקים נוספים,
data-disk-1ועלmy-legacy-1:הסקריפט מנתק את הדיסקים הנוספים לפני מחיקת ה-VM, ואז מחבר אותם ל-VM אחרי שהוא נוצר מחדש.
שומר את צמד המפתח/ערך של המטא-נתונים,
node-id:xyz273:המדיניות מגדירה את המטא-נתונים אחרי שהמכונה הווירטואלית נוצרה מחדש. הפונקציה גם מגדירה את צמדי המפתח/ערך הנפוצים מתבנית של הגדרות מכונה (
app:example-stateful-appו-version:1.0).
משוב
נשמח לשמוע על תרחישי השימוש שלכם, על האתגרים שנתקלתם בהם ועל המשוב שלכם לגבי קבוצות של מכונות וירטואליות עם שמירת מצב. נשמח לקבל ממך משוב. אפשר לשלוח אותו לצוות שלנו בכתובת mig-discuss@google.com.
המאמרים הבאים
- במאמר הגדרת קבוצות מנוהלות של מכונות וירטואליות עם שמירת מצב מוסבר איך לשמור על שמות של מופעים, דיסקים קשיחים ומטא-נתונים במופעים מנוהלים כדי לתמוך בעומסי עבודה עם שמירת מצב.
- איך מעבירים עומס עבודה קיים ל-MIG עם שמירת מצב
- מידע נוסף על אופן הפעולה של קבוצות MIG עם שמירת מצב
- מידע נוסף על קבוצות מנוהלות של מופעים
- מידע נוסף על עבודה עם מופעים מנוהלים