תרחישים לדוגמה
ארכיטקטורת ההפניה הזו של זמינות מתאימה לתרחישי השימוש הבאים:
- אפליקציות קריטיות לעסק שדורשות RTO ו-RPO נמוכים יותר.
- אתם רוצים לפרוס רפליקה באזור או בצומת אחרים שמספקים זמינות גבוהה למסדי הנתונים שלכם ומגנים מפני כשלים במופע, בשרת ובאזור.
- אתם רוצים הגנה מפני טעויות משתמשים ופגיעה בנתונים (באמצעות גיבויים).
איך פועלת ארכיטקטורת העזר
הזמינות המשופרת היא תוספת לזמינות הרגילה. היא כוללת מופעים של העתקי קריאה באזור כדי לאפשר זמינות גבוהה (HA) שמקצרת את היעד לזמן השחזור (RTO). הגישה הזו גם מקטינה את היעד להתאוששות מאסון (RPO) בכך שהיא מאפשרת להעביר בסטרימינג שינויים טרנזקציונליים לרפליקה.
כדי להשיג זמינות גבוהה ב-AlloyDB Omni, צריך להשתמש בשני מופעים של מסדי נתונים לפחות. מכונה אחת מתפקדת כמסד הנתונים הראשי, שתומך בפעולות קריאה וכתיבה. המופעים הנותרים משמשים כרפליקות לקריאה, ופועלים במצב קריאה בלבד.
אלה מושגים חשובים שקשורים לזמינות גבוהה:
- מעבר לגיבוי (Failover) הוא התהליך שמתבצע במהלך הפסקת שירות לא מתוכננת, שבו המופע הראשי נכשל או הופך ללא זמין, והעותק המשוכפל במצב המתנה מופעל כדי להניח את מצב הראשי (קריאה-כתיבה). התהליך הזה נקרא קידום. בדרך כלל, בתרחישים האלה, כשהשרת הראשי או מסד הנתונים חוזרים למצב אונליין, צריך לבנות מחדש את מסד הנתונים ואז הוא צריך לפעול כגיבוי. כדי לספק זמן פעולה תקינה ארוך, יש מנגנונים שמאפשרים יתירות כשל אוטומטית.
- מעבר, שנקרא גם היפוך תפקידים, הוא הליך שמשמש למעבר בין המצבים של מסד הנתונים הראשי ואחד ממסדי הנתונים במצב המתנה, כך שמסד הנתונים הראשי הופך למסד נתונים במצב המתנה ומסד הנתונים במצב המתנה הופך למסד הנתונים הראשי. המעבר מתבצע בדרך כלל בצורה מבוקרת וחלקה, ויכול להתבצע מכל מיני סיבות, למשל כדי לאפשר השבתה ותיקון של מסד הנתונים הראשי הקודם. מעברים חלקים צריכים לאפשר מעבר חזרה בעתיד בלי צורך ליצור מחדש את הגיבוי החדש או היבטים אחרים של הגדרת השכפול.
אפשרויות לזמינות גבוהה
בסביבות Kubernetes, כדי לתמוך בזמינות גבוהה, אתם יכולים לפרוס את AlloyDB Omni באמצעות אופרטורים של AlloyDB Omni Kubernetes. מידע נוסף על ניהול זמינות גבוהה ב-Kubernetes
| הערה: Patroni ו-HAProxy הם כלים לשימוש לא מסחרי של צד שלישי, והם תואמים ל-AlloyDB Omni. |
|---|
מומלץ להגדיר לפחות שני מסדי נתונים במצב המתנה, כדי שאובדן של מסד נתונים אחד לא ישפיע על הזמינות הגבוהה של האשכול. במצב הזה, יש לכם לפחות זוג אחד של זמינות גבוהה במקרה של יתירות כשל או במהלך תחזוקה מתוכננת של צומת.
כדי לתכנן את הגודל והצורה של פריסת AlloyDB Omni, אפשר לעיין במאמר תכנון ההתקנה של AlloyDB Omni במכונה וירטואלית.
מאזני עומסים
מנגנון חשוב נוסף שעוזר להליכי מעבר ויתירות כשל חלקים יותר הוא נוכחות של מאזן עומסים.
אופרטור Kubernetes פורס מאזן עומסים משלו שפועל באופן דומה, ויוצר שירות למסד הנתונים שמפנה למאזן העומסים כדי שהפעולה הזו תהיה שקופה למשתמש.
זמינות גבוהה
מסדי נתונים של רפליקות לקריאה שנפרסו באזור מסוים מספקים זמינות גבוהה אם מסד הנתונים הראשי נכשל. אם מתרחש כשל במסד הנתונים הראשי, מסד הנתונים המשני מקודם כדי להחליף את הראשי, והאפליקציה ממשיכה לפעול עם הפסקה קצרה או ללא הפסקה בכלל.
מומלץ לבצע בדיקות שנתיות או חצי-שנתיות קבועות בצורה של מעבר בין מסדי נתונים כדי לוודא שכל האפליקציות שמסתמכות על מסדי הנתונים האלה עדיין יכולות להתחבר ולהגיב בפרק זמן מתאים.
כדי להגן על הנתונים ברמת האזור, אפשר להשתמש בכל אחד מסוגי הפריסה ולהציב את אחת מהרפליקות לקריאה במצב המתנה באזור זמינות שונה מזה של מסד הנתונים הראשי.
יתרון נוסף של רפליקות לקריאה בלבד הוא היכולת להעביר פעולות לקריאה בלבד למסדי הנתונים במצב המתנה, שיכולים לשמש כמסדי נתונים לדיווח באמצעות נתונים עדכניים. הגישה הזו מפחיתה את העומס ואת התקורה בשרת הראשי לקריאה וכתיבה.
גיבויים והגדרת זמינות גבוהה
אפשר להגדיר עותקים לקריאה בלבד בכמה אזורים, כדי לספק זמינות גבוהה. הם מספקים RTO ו-RPO נמוכים, אבל לא מגינים מפני הפסקות מסוימות, כמו פגיעה לוגית בנתונים, למשל מחיקה בטעות של טבלאות או עדכוני נתונים שגויים. לכן, בנוסף להגדרת HA, צריך לבצע גיבויים באופן קבוע. פרטים נוספים זמינים במאמר בנושא ארכיטקטורת זמינות רגילה.
איור 1 מציג הגדרת זמינות גבוהה מומלצת עם שתי מסדי נתונים של העתקים לקריאה במצב המתנה בשני אזורי זמינות שונים.

איור 1. AlloyDB Omni עם אפשרויות גיבוי וזמינות גבוהה.
כדי להגן מפני אובדן נתונים במקרה של כשל במכונה הראשית, צריך להגדיר רפליקציה במצב סינכרוני. השיטה הזו מספקת הגנה חזקה על הנתונים, אבל היא עלולה להשפיע על הביצועים של מסד הנתונים הראשי כי כל הפעולות צריכות להיכתב גם במסד הנתונים הראשי וגם בכל מסדי הנתונים המשניים המסונכרנים. חיבור רשת עם זמן אחזור קצר בין המכונות של מסדי הנתונים האלה הוא קריטי להגדרה הזו.
פריסות של Kubernetes HA
בפריסות של Kubernetes, אתם יכולים להוסיף רפליקות לקריאה בלבד או רפליקות גיבוי למקרה של כשל במסד הנתונים הראשי. כדי לעשות את זה, אתם צריכים לשנות כמה מאפיינים בסיסיים ולהוסיף מאפיינים אחרים לקובץ הפריסה של AlloyDB Omni. אפשר להגדיר רפליקה לקריאה בלבד ורפליקה לגיבוי במקרה של כשל, והמפעיל דואג להקצאה ולפרסום של השירות. האופרטור גם מבצע אוטומציה של הרבה תהליכים של זמינות גבוהה, כמו בנייה מחדש של מסדי נתונים במצב המתנה אחרי מעבר לגיבוי (failover), ושימוש במנגנוני התיקון שמוטמעים במנוע AlloyDB Omni Kubernetes.
בפריסה של Kubernetes, הזמינות של התשתית והאפליקציות נהנית מהתכונות המובנות של Kubernetes שמטפלות בכשלים בצמתים וב-pods, כולל:
- kube-controller-manager
- פרמטרים כמו
node-status-update-frequency,node-monitor-period,node-monitor-grace-period, ו-pod-eviction-timeout.
בנוסף להגנה המובנית, המפעיל חושף את הפרמטרים הבאים כדי להשפיע על הזיהוי של כשל בשרת הראשי או בשרת הגיבוי:
-
healthcheckPeriodSeconds: הזמן בין בדיקות התקינות. ברירת המחדל היא 30 שניות. -
autoFailoverTriggerThreshold: מספר בדיקות התקינות הרצופות שנכשלו לפני הפעלת יתירות כשל. ערך ברירת המחדל הוא 3.
מידע נוסף זמין במאמר ניהול זמינות גבוהה ב-Kubernetes.
הטמעה
כשבוחרים ארכיטקטורת זמינות, חשוב לזכור את היתרונות, המגבלות והחלופות הבאים.
יתרונות
- הגנה מפני כשלים במכונות.
- הגנה מפני כשלים בשרת.
- הגנה מפני כשלים באזורים.
- זמן ה-RTO קצר משמעותית בהשוואה לזמינות רגילה.
מגבלות
- אין הגנה נוספת מפני אסונות אזוריים.
- השפעה פוטנציאלית על הביצועים של המכונה הראשית בגלל רפליקציה סינכרונית.
- הגדרת סטרימינג של WAL ב-PostgreSQL במצב סינכרוני מונעת אובדן נתונים (
RPO=0) במהלך פעולה רגילה או יתירות כשל אופיינית. עם זאת, הגישה הזו לא מגינה מפני אובדן נתונים במצבים ספציפיים של תקלה כפולה, למשל כשכל המכונות במצב המתנה אובדות או שאי אפשר להגיע אליהן מהמכונה הראשית, ומיד לאחר מכן המכונה הראשית מופעלת מחדש.
חלופות
- ארכיטקטורת זמינות רגילה לאפשרויות גיבוי ושחזור.
- ארכיטקטורת זמינות פרימיום לתוכנית התאוששות מאסון (DR) ברמת האזור, רפליקות נוספות לקריאה בלבד והרחבת הטווח של תוכנית ההתאוששות מאסון.
המאמרים הבאים
- סקירה כללית על ארכיטקטורת הייחוס של הזמינות ב-AlloyDB Omni
- AlloyDB Omni Standard Availability.
- זמינות של AlloyDB Omni Premium.
- ארכיטקטורה של זמינות גבוהה ב-AlloyDB Omni ל-PostgreSQL.
- ניהול זמינות גבוהה ב-Kubernetes.