במסמך הזה מפורטות שיטות מומלצות לתכנון מערכות עמידות ב-Compute Engine. המדריך כולל עצות כלליות ומתייחס לכמה תכונות ב-Compute Engine שיכולות לעזור לצמצם את זמן ההשבתה של המכונות ולהתכונן למקרים שבהם המכונות ב-Compute Engine נכשלות באופן בלתי צפוי.
מערכת עמידה היא מערכת שיכולה לעמוד בכמות מסוימת של כשלים או שיבושים בלי להפריע לשירות או להשפיע על חוויית המשתמשים בשירות. ב-Compute Engine נעשה כל מאמץ כדי למנוע שיבושים כאלה, אבל יש אירועים בלתי צפויים, ולכן מומלץ להתכונן לאירועים האלה.
סוגי הכשלים
בשלב מסוים, יכול להיות שאחת או יותר מהמכונות הווירטואליות שלכם יאבדו בגלל כשלים במערכת או בחומרה. הרשימה הבאה כוללת כמה סוגים של תרחישי כשל שאפשר לצמצם את ההשפעה שלהם:
כשל לא צפוי של מופע יחיד
כשלים לא צפויים במופע יחיד יכולים לקרות בגלל כשל בחומרה או במערכת. כדי לצמצם את ההשפעה של האירועים האלה, אפשר להשתמש בדיסקים קבועים ובסקריפטים להפעלה כדי לשמור את הנתונים ולהפעיל מחדש את התוכנה אחרי שמפעילים מחדש את מכונת ה-VM.
אתחול לא צפוי של מכונה וירטואלית אחת
בשלב מסוים, יכול להיות שתיתקלו בכשל לא צפוי של מכונה וירטואלית אחת ובאתחול שלה. בניגוד לכשל לא צפוי במכונה וירטואלית אחת, מערכת Compute Engine מפעילה מחדש את המכונה הווירטואלית באופן אוטומטי אחרי שהיא נכשלת. כדי לצמצם את הסיכון לאירועים כאלה, מומלץ לגבות את הנתונים, להשתמש ב-Hyperdisk או ב-Persistent Diskולהשתמש בסקריפטים להפעלה כדי להגדיר מחדש את התוכנה במהירות.
כשלים באזור או באזור
כשלים באזור ובאזור זמינות הם כשלים נדירים שיכולים לגרום לכך שלא תהיה לכם גישה לכל המכונות שלכם באזור או באזור זמינות מסוים, או שהן ייכשלו. כדי לצמצם את הסיכון לכשלים כאלה, צריך ליצור מגוון באזורים ובאזורי הזמינות וליישם איזון עומסים. כדאי גם לגבות את הנתונים או ליצור רפליקות של הדיסקים בכמה אזורים.
טיפים לתכנון מערכות חסינות
כדי לצמצם את הסיכון לכשלים במופעי מחשוב, צריך לתכנן את האפליקציה כך שתהיה עמידה בפני כשלים, שיבושים ברשת ואסונות בלתי צפויים. מערכת גמישה מטפלת בכשלים בצורה חלקה. לדוגמה, על ידי הפניית תנועה ממופע שלא ניתן לגשת אליו למופע פעיל, או על ידי אוטומציה של משימות בהפעלה מחדש.
ריכזנו כאן כמה טיפים כלליים שיעזרו לכם לתכנן מערכת עמידה בפני כשלים.
הפרדה בין מקרים שמריצים קוד לא מהימן בפרויקטים ייעודיים
אם המערכת שלכם פועלת עם קוד לא מהימן, למשל, אם היא מריצה סקריפטים שנוצרו על ידי AI או מבצעת משימות בנייה בשם משתמש חיצוני כמו מערכת CI, כדאי למקם את מופעי העובדים האלה בפרויקט ייעודי.
ל-Compute Engine יש מגוון מנגנונים של מכסה וזיהוי ניצול לרעה, שעוזרים לאכוף מדיניות כמו מדיניות השימוש המקובל. זיהוי של התנהלות פוגעת עלול להוביל להגבלת הקיבולת הזמינה, להגבלות קצב מחמירות יותר או להשבתת מקרים בפרויקט. הפרדה של המופעים לפרויקטים ייעודיים מבטיחה שמנגנונים למניעת ניצול לרעה לא ישפיעו על עומסי העבודה העיקריים. השיטה הזו תואמת למודל האחריות המשותפת בנושא תוכן ושימוש בתשתית כשירות (IaaS) ב- Google Cloud.
שימוש במיגרציה פעילה
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) מציעות גם תכונות כמו שינוי גודל אוטומטי ותיקון אוטומטי. התאמה אוטומטית לעומס מאפשרת לכם להתמודד עם עליות חדות בתנועת הנתונים על ידי הגדלת מספר המכונות הווירטואליות או הקטנתו בהתאם לאותות ספציפיים. התיקון האוטומטי מבצע בדיקות תקינות, ואם צריך, יוצר מחדש באופן אוטומטי מכונות וירטואליות לא תקינות.
קבוצות MIG זמינות גם לאזורים, כך שאפשר ליצור קבוצת מכונות וירטואליות שמפוזרות על פני כמה אזורים בתוך אזור אחד. מידע נוסף זמין במאמר בנושא יצירה וניהול של קבוצות אזוריות של מכונות וירטואליות.
שימוש באיזון עומסים
Google Cloud מציע שירות איזון עומסים שעוזר לכם לתמוך בתקופות של עומס תנועה כבד, כדי שלא יהיה עומס יתר על מופעי המחשוב שלכם. בעזרת Cloud Load Balancing, אפשר:
פריסת האפליקציה במכונות וירטואליות בכמה אזורים באמצעות קבוצות אזוריות של מכונות מנוהלות. לאחר מכן, תוכלו להגדיר כלל העברה שיכול לפזר את התעבורה בכל מכונות ה-VM בכל האזורים באזור. כל כלל העברה יכול להגדיר נקודת כניסה אחת לאפליקציה באמצעות כתובת IP חיצונית.
פריסת מכונות וירטואליות בכמה אזורים באמצעות איזון עומסים גלובלי. איזון עומסים ב-HTTP(S) מאפשר לתנועה להיכנס ל Google Cloud מערכת במיקום הקרוב ביותר ללקוח. איזון עומסים בין אזורים מספק יתירות, כך שאם אי אפשר להגיע לאזור מסוים, התנועה מופנית אוטומטית לאזור אחר. כך השירות שלכם נשאר נגיש באמצעות אותה כתובת IP חיצונית.
אפשר להשתמש בשינוי גודל אוטומטי כדי להוסיף או למחוק מכונות וירטואליות מקבוצת מופעי מכונה מנוהלים (MIG) באופן אוטומטי בהתבסס על עליות או ירידות בעומס.
בנוסף, שירות Cloud Load Balancing מציע בדיקת תקינות של מכונות וירטואליות, ומספק תמיכה בזיהוי כשלים במכונות וירטואליות ובטיפול בהם.
Cloud DNS
Cloud DNS הוא שירות DNS גלובלי, עמיד ובעל ביצועים גבוהים, שמאפשר לכם לאחסן כתובות IP ונתונים אחרים, ואז לחפש אותם לפי שם. עם Cloud DNS, אתם יכולים לפרסם את האזורים והרשומות שלכם ב-DNS בלי המעמסה של ניהול שרתי DNS ותוכנה משלכם. Cloud DNS משתמש ב-anycast כדי להציג את התחומים המנוהלים שלכם מכמה מיקומים ברחבי העולם.
כדי להשיג זמינות גבוהה, כדאי לפרוס כמה מאזני עומסים חיצוניים אזוריים של אפליקציות (ALB) באזורים שתומכים בצורה הטובה ביותר בתעבורת הנתונים של האפליקציה, ולהשתמש במדיניות ניתוב לפי מיקום גיאוגרפי של Cloud DNS כדי לנתב את תעבורת הנתונים לשני מאזני עומסים או יותר באזורים שונים. הבקשות מנותבות אוטומטית למיקום הקרוב ביותר, וכך מצמצמות את זמן האחזור ומשפרות את הביצועים של בדיקת שמות סמכותית עבור המשתמשים.
מידע נוסף זמין במאמר בנושא זמינות גבוהה למאזן עומסים חיצוני אזורי של אפליקציות.
שימוש בסקריפטים להפעלה ולכיבוי
Compute Engine מציע סקריפטים להפעלה ולכיבוי שפועלים כשמופעלת או מושבתת מכונה וירטואלית (VM), בהתאמה. סקריפטים להפעלה ולכיבוי יכולים להפוך משימות לאוטומטיות, כמו התקנת תוכנה, הפעלת עדכונים, יצירת גיבויים ורישום נתונים.
סקריפטים להפעלה ולכיבוי הם דרך יעילה וחשובה לאתחול או לכיבוי של האינסטנסים. במקום להגדיר את המכונות באמצעות תמונות בהתאמה אישית, כדאי להגדיר אותן באמצעות סקריפטים להפעלה.
סקריפטים להפעלה מופעלים בכל פעם שהמופע מופעל מחדש או מופעל מחדש בגלל כשלים, ואפשר להשתמש בהם כדי להתקין תוכנה ועדכונים. אפשר גם להשתמש בסקריפטים להפעלה כדי לוודא שהשירותים פועלים בתוך המופע. לעתים קרובות קל יותר לתכנת את השינויים כדי להגדיר מכונה בסקריפט לטעינה בזמן ההפעלה מאשר ליצור ולנהל תמונה בהתאמה אישית שלא נתמכת.
סקריפטים של כיבוי מופעלים כשהמופע נכבה, בין אם בכוונה ובין אם לא. הם יכולים לבצע משימות של הרגע האחרון כמו גיבוי נתונים, שמירת יומנים וסגירה מסודרת של חיבורים לפני שמפסיקים את המופע.
מידע נוסף זמין במאמרים בנושא הפעלת סקריפטים לטעינה בזמן ההפעלה והפעלת סקריפטים לכיבוי.
גיבוי הנתונים
חשוב לגבות את הנתונים באופן קבוע ובכמה מיקומים. אתם יכולים להעלות את הקבצים ל-Cloud Storage, ליצור תמונות מצב של הדיסק או לשכפל את הנתונים לדיסק באזור אחר באמצעות שכפול סינכרוני, או לאזור אחר באמצעות שכפול אסינכרוני.