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

Edge for Private Cloud גרסה 4.17.09

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

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

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

במערכת ייצור עם שלושה צומתי 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 ל-6, אבל משאירים את פקטור הרפליקציה על 3, לא מבטיחים שלכל צומתי Cassandra יהיה עותק של כל הנתונים. אם צומת מושבת, פקטור רפליקציה גבוה יותר פירושו סבירות גבוהה יותר שהנתונים בצומת קיימים באחד מהצמתים שנותרו. החיסרון של פקטור רפליקציה גבוה יותר הוא זמן אחזור ארוך יותר בכתיבת נתונים.

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

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

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

החישוב של הערך של 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 כרמת העקביות, צריך לאמת את פעולות הקריאה/כתיבה בכל מרכזי הנתונים.

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

  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 לאשכול, רמת העקביות לא מושפעת.