הגנה על הנתונים באמצעות שכפול אזורי

בוחרים גרסת תיעוד:

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

תרחישים לדוגמה

ארכיטקטורת הזמינות הזו מתאימה לתרחישים הבאים:

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

איך פועלת ארכיטקטורת העזר

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

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

אלה מושגים חשובים שקשורים לזמינות גבוהה:

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

אפשרויות לזמינות גבוהה

בפריסות שאינן של Kubernetes, משתמשים ב-Patroni וב-HAProxy. מידע נוסף זמין במאמר ארכיטקטורת זמינות גבוהה של AlloyDB Omni ל-PostgreSQL.

הערה: Patroni ו-HAProxy הם כלים לשימוש לא מסחרי של צד שלישי, והם תואמים ל-AlloyDB Omni.

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

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

מאזני עומסים

מנגנון חשוב נוסף שעוזר להחליק את תהליכי המעבר ויתירות הכשל הוא נוכחות של מאזן עומסים (LB).

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

זמינות גבוהה

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

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

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

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

הגדרת גיבויים וזמינות גבוהה

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

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

‫AlloyDB Omni עם אפשרויות גיבוי וזמינות גבוהה

איור 1. ‫AlloyDB Omni עם אפשרויות גיבוי וזמינות גבוהה.

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

פריסות HA שאינן של Kubernetes

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

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

  • ‫Ttl: משך הזמן המקסימלי שנדרש כדי לרכוש נעילה למסד הנתונים הראשי לפני שמתחילים יתירות כשל. ברירת המחדל היא 30 שניות.
  • ‫Loop_wait: משך הזמן שצריך להמתין לפני בדיקה חוזרת. ברירת המחדל היא 10 שניות.
  • ‫Retry_timeout: הזמן הקצוב לתפוגה לפני הורדה בדרגה של המכונה הראשית בגלל כשל ברשת. ברירת המחדל היא 10 שניות.

מידע נוסף זמין במאמר ארכיטקטורת זמינות גבוהה של AlloyDB Omni ל-PostgreSQL.

הטמעה

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

יתרונות

  • הגנה מפני כשלים במכונות.
  • הגנה מפני כשלים בשרת.
  • הגנה מפני כשלים באזורים.
  • זמן ההשבתה (RTO) קצר משמעותית בהשוואה לזמינות רגילה.

מגבלות

  • אין הגנה נוספת מפני אסונות אזוריים.
  • השפעה פוטנציאלית על הביצועים של המכונה הראשית בגלל רפליקציה סינכרונית.
  • הגדרת סטרימינג של PostgreSQL WAL במצב סינכרוני מאפשרת אפס אובדן נתונים (RPO=0) במהלך פעולה רגילה או יתירות כשל אופיינית. עם זאת, הגישה הזו לא מגינה מפני אובדן נתונים במצבים ספציפיים של תקלה כפולה, למשל כשכל המכונות במצב המתנה אובדות או שאי אפשר להגיע אליהן מהמכונה הראשית, ומיד לאחר מכן המכונה הראשית מופעלת מחדש.

חלופות

המאמרים הבאים