תכנון מערכות חסינות

במסמך הזה מפורטות שיטות מומלצות לתכנון מערכות עמידות ב-Compute Engine. המדריך כולל עצות כלליות ומתייחס לכמה תכונות ב-Compute Engine שיכולות לעזור לצמצם את זמן ההשבתה של המכונות ולהתכונן למקרים שבהם המכונות ב-Compute Engine נכשלות באופן בלתי צפוי.

מערכת עמידה היא מערכת שיכולה לעמוד בכמות מסוימת של כשלים או שיבושים בלי להפריע לשירות או להשפיע על חוויית המשתמשים בשירות. ב-Compute Engine נעשה כל מאמץ כדי למנוע שיבושים כאלה, אבל יש אירועים בלתי צפויים, ולכן מומלץ להתכונן לאירועים האלה.

סוגי הכשלים

בשלב מסוים, יכול להיות שאחת או יותר מהדוגמאות של המחשוב יאבדו בגלל כשלים במערכת או בחומרה. ברשימה הבאה מפורטים כמה סוגים של תרחישי כשל שאפשר לצמצם את ההשפעה שלהם:

  • כשל לא צפוי של מופע יחיד

    כשלים לא צפויים במופע יחיד יכולים לקרות בגלל כשל בחומרה או במערכת. כדי לצמצם את ההשפעה של האירועים האלה, אפשר להשתמש בדיסקים קבועים ובסקריפטים להפעלה כדי לשמור את הנתונים ולהפעיל מחדש את התוכנה אחרי שמפעילים מחדש את מכונת ה-VM.

  • אתחול לא צפוי של מכונה וירטואלית אחת

    בשלב מסוים, יכול להיות שתיתקלו בכשל לא צפוי של מכונה וירטואלית אחת ובאתחול שלה. בניגוד לכשל לא צפוי במכונה וירטואלית אחת, מערכת Compute Engine מפעילה מחדש את המכונה הווירטואלית באופן אוטומטי אחרי שהיא נכשלת. כדי לצמצם את הסיכון לאירועים כאלה, מומלץ לגבות את הנתונים, להשתמש ב-Hyperdisk או ב-Persistent Diskולהשתמש בסקריפטים להפעלה כדי להגדיר מחדש את התוכנה במהירות.

  • כשלים באזור או באזור

    כשלים באזור ובאזור זמין הם כשלים נדירים שיכולים לגרום לכך שלא תהיה לכם גישה לכל המכונות שלכם באזור זמין או באזור מסוים, או שהן ייכשלו. כדי לצמצם את הסיכון לכשלים כאלה, צריך ליצור מגוון באזורים ובאזורי הזמינות וליישם איזון עומסים. כדאי גם לגבות את הנתונים או ליצור רפליקות של הדיסקים בכמה אזורים.

טיפים לתכנון מערכות חסינות

כדי לצמצם את הסיכון לכשלים במופעי מחשוב, צריך לתכנן את האפליקציה כך שתהיה עמידה בפני כשלים, שיבושים ברשת ואסונות בלתי צפויים. מערכת גמישה מטפלת בכשלים בצורה חלקה. לדוגמה, על ידי הפניית תנועה ממופע שלא ניתן לגשת אליו למופע פעיל, או על ידי אוטומציה של משימות בהפעלה מחדש.

ריכזנו כאן כמה טיפים כלליים שיעזרו לכם לתכנן מערכת עמידה בפני כשלים.

שימוש במיגרציה פעילה

Google Cloud מבצעת תחזוקה תקופתית של התשתית שלה על ידי תיקון מערכות עם התוכנה העדכנית ביותר, ביצוע בדיקות שגרתיות ותחזוקה מונעת, ובאופן כללי מוודאת שהתשתית שלה מאובטחת, מהירה ויעילה ככל האפשר. ב-Compute Engine נעשה שימוש במיגרציה פעילה כדי לוודא שתחזוקת התשתית הזו שקופה כברירת מחדל למכונות הווירטואליות שלכם.

מיגרציה פעילה היא טכנולוגיה שמעבירה את המופעים הפועלים שלכם ממערכות שעומדות לעבור עבודות תחזוקה. ‫Compute Engine עושה זאת באופן אוטומטי עבור סוגי מופעים נתמכים.

במהלך מיגרציה פעילה, יכול להיות שיהיו ירידות בביצועים של המכונה לפרק זמן קצר. במקרים שבהם נדרשים ביצועים מקסימליים וקבועים, אפשר להגדיר את המופעים כך שהם יופעלו מחדש במארח אחר במקום לעבור מיגרציה פעילה. אם בוחרים באפשרות הזו,‏ Compute Engine מפסיק את המכונה ומפעיל אותה מחדש במארח שלא מעורב באירוע תחזוקה. הפסקת הפעולה והפעלה מחדש של המכונה מתאימות לאפליקציות כלליות שנבנו גם כדי לטפל בכשלים או בהפעלות מחדש של מכונות.

כדי להגדיר את המכונות הווירטואליות למיגרציה פעילה או להגדיר אותן להפעלה מחדש במקום להעברה, אפשר לעיין במאמר הגדרת מדיניות תחזוקת המארח למכונה לחישוב.

הפצת המכונות

כדאי ליצור מופעים בכמה אזורים ותחומים, כדי שיהיו לכם מופעים חלופיים של מחשוב שאפשר להפנות אליהם אם יש שיבוש באזור או בתחום שמכיל אחד מהמופעים שלכם. אם תיצרו את כל המופעים באותו תחום או באותו אזור, לא תוכלו לגשת לאף אחד מהמופעים האלה אם לא תהיה אפשרות להגיע לתחום או לאזור הזה.

שימוש בשמות DNS פנימיים ספציפיים לאזור

מגדירים את סוג ה-DNS הפנימי שמוגדר כברירת מחדל לפרויקט או לארגון כ-DNS אזורי. באפליקציות, משתמשים בשמות DNS אזוריים כשניגשים למכונות וירטואליות אחרות. שרתי DNS פנימיים מפוזרים בכל האזורים, כך שאפשר להסתמך על שמות DNS אזוריים כדי לפתור בעיות גם אם יש כשלים במיקומים אחרים.

מערכת DNS גלובלית פחות עמידה, בגלל נקודות כשל יחידות. ‫DNS אזורי מפחית את הסיכון להפסקות שירות חוצות אזורים. ב-DNS אזורי, שמות המופעים לא צריכים להיות ייחודיים בכל האזורים בפרויקט, ולכן אפשר ליצור מופעים מהר יותר.

כדי לבדוק אם מופע משתמש בשמות DNS אזוריים או בשמות DNS גלובליים, אפשר לעיין במאמר בנושא קביעת שם ה-DNS הפנימי של מכונה וירטואלית.

אם אתם משתמשים בשמות DNS גלובליים בפרויקט, אתם יכולים לעבור לשימוש בשמות DNS אזוריים. מידע נוסף זמין במאמר שימוש ב-DNS אזורי לסוג ה-DNS הפנימי.

יצירת קבוצות של מכונות וירטואליות

כדי ליצור קבוצות הומוגניות של מכונות וירטואליות, כך שמאזני העומסים יוכלו להפנות תעבורה ליותר ממכונה וירטואלית אחת במקרה שמכונה וירטואלית אחת לא תקינה, צריך להשתמש בקבוצות של מופעי מכונה מנוהלים.

קבוצות של מופעי מכונה מנוהלים (MIG) מציעות גם תכונות כמו התאמה אוטומטית לעומס (automatic scaling) ותיקון תוכנה אוטומטי (autohealing). התאמה אוטומטית לעומס מאפשרת לכם להתמודד עם עליות חדות בתנועה על ידי הגדלת מספר המכונות הווירטואליות או הקטנתו בהתאם לאותות ספציפיים. התיקון האוטומטי (autohealing) מבצע בדיקות תקינות, ואם יש צורך בכך, הוא יוצר מחדש באופן אוטומטי מכונות וירטואליות לא תקינות.

קבוצות MIG זמינות גם לאזורים, כך שאפשר ליצור קבוצה של מכונות וירטואליות שמפוזרות על פני כמה אזורים בתוך אזור אחד. מידע נוסף זמין במאמר בנושא יצירה וניהול של קבוצות אזוריות של מכונות וירטואליות.

שימוש באיזון עומסים

‫Google Cloud מציע שירות איזון עומסים שעוזר לכם לתמוך בתקופות של עומס תנועה כבד, כדי שלא יהיה עומס יתר על מופעי המחשוב שלכם. עם Cloud Load Balancing, אפשר:

  • פריסת האפליקציה במכונות וירטואליות בכמה אזורים באמצעות קבוצות אזוריות של מכונות מנוהלות. לאחר מכן, אפשר להגדיר כלל העברה שיכול לפזר את התעבורה בין כל המכונות הווירטואליות בכל האזורים באזור. כל כלל העברה יכול להגדיר נקודת כניסה אחת לאפליקציה באמצעות כתובת IP חיצונית.

  • פריסת מכונות וירטואליות בכמה אזורים באמצעות איזון עומסים גלובלי. איזון עומסים ב-HTTP(S) מאפשר לתנועה להיכנס ל Google Cloud מערכת במיקום הקרוב ביותר ללקוח. איזון עומסים בין אזורים מספק יתירות, כך שאם לא ניתן להגיע לאזור מסוים, התעבורה מופנית אוטומטית לאזור אחר. כך השירות שלכם נשאר נגיש באמצעות אותה כתובת IP חיצונית.

  • אפשר להשתמש בהתאמה אוטומטית לעומס (automatic scaling) כדי להוסיף או למחוק VM-ים מ-MIG בהתבסס על עליות או ירידות בעומס.

בנוסף, שירות Cloud Load Balancing מציע בדיקת תקינות של מכונות וירטואליות, ומספק תמיכה בזיהוי כשלים במכונות וירטואליות ובטיפול בהם.

Cloud DNS

‫Cloud DNS הוא שירות DNS גלובלי, עמיד ובעל ביצועים גבוהים, שמאפשר לכם לאחסן כתובות IP ונתונים אחרים, ואז לחפש אותם לפי שם. עם Cloud DNS, אתם יכולים לפרסם את האזורים והרשומות שלכם ב-DNS בלי המעמסה של ניהול שרתי DNS ותוכנה משלכם. ‫Cloud DNS משתמש ב-anycast כדי להציג את התחומים המנוהלים שלכם מכמה מיקומים ברחבי העולם.

כדי להשיג זמינות גבוהה, צריך לפרוס כמה מאזני עומסים חיצוניים אזוריים של אפליקציות באזורים שתומכים בצורה הטובה ביותר בתעבורה של האפליקציה, ולהשתמש במדיניות ניתוב לפי מיקום גיאוגרפי של Cloud DNS כדי לנתב את התעבורה לשני מאזני עומסים או יותר באזורים שונים. הבקשות מנותבות אוטומטית למיקום הקרוב ביותר, וכך מצמצמות את זמן האחזור ומשפרות את הביצועים של חיפוש שמות סמכותי עבור המשתמשים.

מידע נוסף זמין במאמר בנושא זמינות גבוהה למאזן עומסים חיצוני אזורי של אפליקציות.

שימוש בסקריפטים להפעלה ולכיבוי

‫Compute Engine מציע סקריפטים להפעלה ולכיבוי שפועלים כשמופעלת או מושבתת מכונה וירטואלית (VM), בהתאמה. סקריפטים להפעלה ולכיבוי יכולים להפוך משימות לאוטומטיות, כמו התקנת תוכנה, הפעלת עדכונים, יצירת גיבויים ורישום נתונים.

סקריפטים להפעלה ולכיבוי הם דרך יעילה וחשובה לאתחול או לכיבוי נקי של המופעים. במקום להגדיר את המכונות באמצעות תמונות בהתאמה אישית, כדאי להגדיר אותן באמצעות סקריפטים להפעלה.

סקריפטים להפעלה מופעלים בכל פעם שהמופע מופעל מחדש או מופעל מחדש בגלל כשלים, ואפשר להשתמש בהם כדי להתקין תוכנה ועדכונים. אפשר גם להשתמש בסקריפטים להפעלה כדי לוודא שהשירותים פועלים בתוך המופע. לעתים קרובות קל יותר לתכנת את השינויים כדי להגדיר מופע בסקריפט לטעינה בזמן ההפעלה מאשר ליצור תמונה בהתאמה אישית שלא נתמכת ולנהל אותה.

סקריפטים של כיבוי מופעלים כשהמופע מושבת, בין אם בכוונה ובין אם לא. הם יכולים לבצע משימות של הרגע האחרון כמו גיבוי נתונים, שמירת יומנים וסגירת חיבורים בצורה מסודרת לפני שמפסיקים את המופע.

מידע נוסף זמין במאמרים הפעלת סקריפטים לטעינה בזמן ההפעלה והפעלת סקריפטים לכיבוי.

גיבוי הנתונים

חשוב לגבות את הנתונים באופן קבוע ובכמה מקומות. אתם יכולים להעלות את הקבצים ל-Cloud Storage, ליצור תמונות מצב של הדיסק או לשכפל את הנתונים לדיסק באזור אחר באמצעות שכפול סינכרוני, או לאזור אחר באמצעות שכפול אסינכרוני.