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

איור 1. AlloyDB Omni עם אפשרויות גיבוי וזמינות גבוהה.
כדי להגן מפני אובדן נתונים במקרה של כשל במכונה הראשית, צריך להגדיר רפליקציה במצב סינכרוני. השיטה הזו מספקת הגנה על נתונים חזקה, אבל היא יכולה להשפיע על הביצועים של מסד הנתונים הראשי, כי צריך לכתוב את כל ה-commits גם למסד הנתונים הראשי וגם לכל מסדי הנתונים המסונכרנים במצב המתנה. חיבור רשת עם השהיה נמוכה בין מופעי מסד הנתונים האלה הוא חיוני להגדרה הזו.
פריסות HA שאינן Kubernetes
פריסה עצמאית שאינה של Kubernetes היא הגדרה ידנית שדורשת כלי של צד שלישי, שההגדרה והתחזוקה שלו מורכבות יותר מאלה של פריסת Kubernetes.
כשמשתמשים בפריסה שאינה Kubernetes, יש כמה פרמטרים שמשפיעים על האופן שבו מתבצעת זיהוי של יתירות כשל ועל הזמן שחולף עד ליתירות כשל אחרי שהשרת הראשי הופך ללא זמין. בהמשך מופיע סיכום קצר של הפרמטרים האלה:
-
Ttl: הזמן המקסימלי שנדרש כדי לקבל נעילה של מסד הנתונים הראשי לפני הפעלת יתירות כשל. ברירת המחדל היא 30 שניות. -
Loop_wait: משך הזמן שצריך להמתין לפני בדיקה חוזרת. ברירת המחדל היא 10 שניות. -
Retry_timeout: הזמן הקצוב לתפוגה לפני הורדת הרמה של המכונה הראשית בגלל כשל ברשת. ברירת המחדל היא 10 שניות.
מידע נוסף זמין במאמר ארכיטקטורת זמינות גבוהה ב-AlloyDB Omni ל-PostgreSQL.
הטמעה
כשבוחרים ארכיטקטורת הפניה לזמינות, חשוב לקחת בחשבון את היתרונות, המגבלות והחלופות הבאים.
יתרונות
- הגנה מפני כשלים במכונות.
- הגנה מפני כשלים בשרת.
- הגנה מפני כשלים באזורים.
- זמן ה-RTO קצר משמעותית בהשוואה לזמינות רגילה.
מגבלות
- אין הגנה נוספת מפני אסונות אזוריים.
- השפעה פוטנציאלית על הביצועים של המכונה הראשית בגלל רפליקציה סינכרונית.
- הגדרת סטרימינג של WAL ב-PostgreSQL במצב סינכרוני מונעת אובדן נתונים (
RPO=0) במהלך פעולה רגילה או יתירות כשל אופיינית. עם זאת, הגישה הזו לא מגנה מפני אובדן נתונים במצבים ספציפיים של כשל כפול, למשל כשכל המופעים במצב המתנה אובדים או שלא ניתן להגיע אליהם מהמופע הראשי, ומיד לאחר מכן מתבצעת הפעלה מחדש של המופע הראשי.
חלופות
- ארכיטקטורת זמינות רגילה לאפשרויות גיבוי ושחזור.
- ארכיטקטורת הזמינות Premium לתוכנית התאוששות מאסון (DR) ברמת האזור, רפליקות קריאה נוספות והיקף תוכנית התאוששות מאסון (DR) מורחב.
המאמרים הבאים
- סקירה כללית של ארכיטקטורת ההפניה לזמינות ב-AlloyDB Omni.
- AlloyDB Omni Standard Availability.
- זמינות של AlloyDB Omni Premium.
- תכנון ההתקנה של AlloyDB Omni במכונה וירטואלית
- ארכיטקטורה של זמינות גבוהה ב-AlloyDB Omni ל-PostgreSQL.