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

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

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

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

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

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

  1. מתחברים לצומת של Cassandra.
  2. מריצים את הפקודה הבאה:
    /opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u cassuser -p casspass] -e "select keyspace_name, replication from system_schema.keyspaces;"

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

    cassuser: אם הפעלת אימות של Cassandra, צריך להעביר את שם המשתמש של Cassandra. אם לא מופעל אימות Cassandra, אפשר לדלג על השלב הזה.

    casspass: אם הפעלת אימות של Cassandra, צריך להעביר את הסיסמה של Cassandra. אם לא מופעל אימות Cassandra, אפשר לדלג על השלב הזה.

הפלט אמור להיראות כמו בדוגמה הבאה, שבה כל שורה מייצגת מרחב מקשים אחד:

  keyspace_name       | replication                                                                 
  kms                 | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
  system_distributed  | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
  apprepo             | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
  

אפשר לראות שעבור מרכז הנתונים 1, dc-1, גורם הרפליקציה שמוגדר כברירת מחדל למרחב המפתחות הוא 3 בהתקנה עם שלושה צמתים של Cassandra. במרחבי מפתחות מסוימים בתוך Cassandra (למשל system , system_schema וכו'), אסטרטגיית הרפליקציה וגורם הרפליקציה עשויים להיות שונים. זו התנהגות מכוונת של המערכת.

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

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

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

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

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

LOCAL_QUORUM = (replication_factor/2) + 1

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

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

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

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

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

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