מידע על גורם השכפול ורמת העקביות של קסנדרה

Edge for Private Cloud v. 4.17.01

מידע על גורם הרפליקציה של Cassandra

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

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

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

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

  1. מתחברים לצומת של Cassandra.
  2. מריצים את הפקודה הבאה:
    > /opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<"show schema;"

    כאשר $(hostname -i) פונה לכתובת ה-IP של צומת Cassandra. אפשר גם להחליף את $(hostname -i) בכתובת ה-IP של הצומת.

לכל מרחבי מפתחות יוצג פלט בפורמט:

create keyspace kms
  with placement_strategy = 'NetworkTopologyStrategy'
  and strategy_options = {dc-1 : 3}
  and durable_writes = true;

אפשר לראות שבמרכז הנתונים 1, dc-1, גורם הרפליקה שמוגדר כברירת מחדל למרחב המפתחות kms הוא שלוש, בהתקנה עם שלושה צמתים של Cassandra.

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

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

מידע על רמת העקביות ב-Cassandra

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

כשמתחברים ל-Cassandra לצורך פעולות קריאה וכתיבה, צמתים של Message Processor ושל שרת ניהול משתמשים בדרך כלל בערך של Cassandra‏ LOCAL_QUORUM כדי לציין את רמת העקביות של מרחב מפתחות. עם זאת, במרחבי מפתחות מסוימים מוגדרת רמת עקביות של אחת.

החישוב של הערך של LOCAL_QUORUM למרכז נתונים הוא:

LOCAL_QUORUM = (replication_factor/2) + 1 

כפי שתואר קודם, גורם הרפליקציה שמוגדר כברירת מחדל בסביבת הייצור של Edge עם שלושה צמתים של Cassandra הוא שלושה. לכן, ערך ברירת המחדל של LOCAL_QUORUM = (3/2) +1 = 2 (הערך מעוגל כלפי מטה למספר שלם).

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

כשמציינים את רמת העקביות כ-LOCAL_QUORUM, Edge ימנע את זמן האחזור שנדרש לאימות פעולות במספר מרכזי נתונים. אם במרחב המפתחות נעשה שימוש בערך QUORUM ב-Cassandra כרמת העקביות, פעולות הקריאה/כתיבה יצטרכו לעבור אימות בכל מרכזי הנתונים.

כדי לראות את רמת העקביות שבה נעשה שימוש בצמתים של מעבד ההודעות או של שרת הניהול:

  1. מתחברים לצומת של מעבד הודעות.
  2. שינוי לספרייה /opt/apigee/edge-message-processor/conf:
    > cd /opt/apigee/edge-message-processor/conf
  3. לעקביות בכתיבה:
    > grep -ri "write.consistencylevel" *
  4. לעקביות קריאה:
    > grep -ri "read.consistencylevel" *
  5. מתחברים לצומת של שרת הניהול.
  6. שינוי לספרייה /opt/apigee/edge-management-server/conf:
    > cd /opt/apigee/edge-management-server/conf
  7. חוזרים על שלבים 3 ו-4.

אם תוסיפו עוד צומתי Cassandra לאשכול, רמת העקביות לא תושפע.