משימות תחזוקה ב-Apache Cassandra

בקטע הזה מתוארות משימות תחזוקה תקופתיות של Cassandra.

תחזוקה נגד אנטרופיה

צומתי הטבעת של Apache Cassandra מחייבים תחזוקה תקופתית כדי להבטיח עקביות בכל הצמתים. כדי לבצע את התחזוקה הזו, השתמש בפקודה הבאה:

apigee-service apigee-cassandra apigee_repair -pr

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

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

    כדי לבדוק אם עבודת תיקון בצומת הושלמה בהצלחה, בקובץ system.log של הצמתים יש רשומה עם ה-UUID של סשן התיקון האחרון והביטוי "הסשן הושלם בהצלחה". דוגמה לרשומה ביומן:

    INFO [AntiEntropySessions:1] 2015-03-01 10:02:56,245 RepairSession.java (line 282) [repair #2e7009b0-c03d-11e4-9012-99a64119c9d8] session completed successfully"
    Ref: https://support.datastax.com/hc/en-us/articles/204226329-How-to-check-if-a-scheduled-nodetool-repair-ran-successfully
  • התכונה תפעל בתקופות של עומס עבודה נמוך יחסית (הכלי יוצר עומס משמעותי על המערכת).
  • מומלץ להריץ לפחות כל שבעה ימים כדי למנוע בעיות שקשורות ל"מחיקה שנשכחה" של Cassandra.
  • הפעלת הצמתים שונים בימים שונים או מתזמנים אותה כך שיהיו מספר שעות בין הפעלת הצמתים בכל צומת.
  • יש להשתמש באפשרות -pr (טווח מחיצות) כדי לציין את טווח המחיצה הראשי של הצומת בלבד.

אם הפעלתם אימות JMX עבור Cassandra, עליכם לכלול את שם המשתמש והסיסמה בעת ההפעלה של nodetool. לדוגמה:

apigee-service apigee-cassandra apigee_repair -u username -pw password -pr

אפשר גם להריץ את הפקודה הבאה כדי לבדוק את האפשרויות הנתמכות של apigee_repair:

apigee-service apigee-cassandra apigee_repair -h

הערה: apigee_repair הוא wrapper של תיקון כלי הצומת של Cassandra, שמבצע בדיקות נוספות לפני ביצוע התיקון של Cassandra.

מידע נוסף זמין במקורות המידע הבאים:

תחזוקה של קובצי יומן

יומני Cassandra מאוחסנים בספרייה /opt/apigee/var/log/cassandra בכל צומת. כברירת מחדל, ניתן ליצור עד 50 קובצי יומן, שכל אחד מהם בגודל מקסימלי של 20MB. כשמגיעים למגבלה הזו, יומנים ישנים יותר נמחקים כשנוצרים יומנים חדשים יותר.

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

  1. עורכים את /opt/apigee/customer/application/cassandra.properties כדי להגדיר את המאפיינים הבאים. אם הקובץ לא קיים, יוצרים אותו:
    conf_logback_maxfilesize=20MB
    # max file size
    conf_logback_maxbackupindex=50 # max open files
  2. מפעילים מחדש את Cassandra באמצעות הפקודה הבאה:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

תחזוקת נפח דיסק

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

Cassandra מבצעת באופן אוטומטי את הפעולות הבאות כדי לצמצם את השימוש בדיסק שלה:

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

הערה: כש-Cassandra מבצעת דחיסות נתונים, נדרשים הרבה משאבי זיכרון ומחזורי המעבד (CPU). עם זאת, ניצול המשאבים אמור לחזור לשגרה לאחר השלמת פעולות הדחיסה. אפשר להריץ את הפקודה 'Nodetool compactionstats' על כל צומת כדי לבדוק אם הדחיסה פועלת. הפלט של compactionstats מיידע אותך אם יש פעולות ממתינות שצריך לבצע ואת הזמן המשוער להשלמה.