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

Edge for Private Cloud בגרסה 4.17.09

מידע על גורם הרפליקציה של 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 הוא 3 בהתקנה עם שלושה צמתים של 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, רמת העקביות לא מושפעת.