שחזור בכמה אזורים

בדף הזה מוסבר איך לשחזר או לשחזר Cassandra בכמה אזורים.

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

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

בנושא הזה מתוארות שתי הגישות לתיקון אזורים שנכשלו:

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

שחזור של אזורים שנכשלו

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

  1. להפנות את התנועה של ה-API מהאזורים שהושפעו לאזור שבו ה-API פועל בצורה תקינה. לתכנן את הקיבולת בהתאם כדי לתמוך בתנועה שהופנתה מאזורים שנכשלו.
  2. להוציא משימוש את האזור שהושפע. לכל אזור מושפע, פועלים לפי השלבים שמפורטים במאמר הוצאה משימוש של אזור היברידי. צריך להמתין עד שהוצאת השירות משימוש תושלם לפני שעוברים לשלב הבא.

  3. משחזרים את האזור שהושפע. כדי לשחזר, יוצרים אזור חדש, כמו שמתואר במאמר בנושא פריסה מרובת אזורים ב-GKE, ב-GKE OnPrem וב-AKS.

שחזור מגיבוי

גיבוי Cassandra יכול להיות ב-Cloud Storage או בשרת מרוחק, בהתאם להגדרה. כדי לשחזר את Cassandra מגיבוי, מבצעים את השלבים הבאים:

  1. פותחים את קובץ ההחלפות של האזור שרוצים לשחזר.
  2. מגדירים את cassandra:hostNetwork להיות false.
  3. החלת קובץ השינויים מברירת המחדל:
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    
  4. לפני שממשיכים, בודקים שההגדרה hostNetwork היא false:
    kubectl -n APIGEE_NAMESPACE get apigeeds -o=jsonpath='{.items[].spec.components.cassandra.hostNetwork}'
  5. מחיקת ההגדרה ההיברידית מהאזור שמשחזרים:
    helm delete DATASTORE_RELEASE_NAME \
      --namespace APIGEE_NAMESPACE
    

    כאשר DATASTORE_RELEASE_NAME הוא שם הגרסה של מאגר הנתונים שבו התקנתם את Cassandra באזור, לדוגמה datastore-region1.

  6. משחזרים את האזור הרצוי מגיבוי. מידע נוסף זמין במאמר שחזור אזור מגיבוי.

  7. מסירים את הצמתים הלא פעילים מהאזורים שנמחקו:
    1. באמצעות הפקודה nodetool status, מזהים את כל הצמתים עם הסטטוס DN באזורים שנמחקו:
      kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE  -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status

      where:

      • ‫APIGEE_JMX_USER הוא שם המשתמש של המשתמש של פעולות Cassandra JMX. משמש לאימות ולתקשורת עם ממשק Cassandra JMX. מידע נוסף זמין במאמר בנושא cassandra:auth:jmx:username.
      • ‫APIGEE_JMX_PASSWORD היא הסיסמה של המשתמש Cassandra JMX operations. מידע נוסף זמין במאמר בנושא cassandra:auth:jmx:password.
    2. מסירים כל צומת עם סטטוס DN באזורים שנמחקו:
      kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE  -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD removenode NODE_HOST_ID

      מחליפים את NODE_HOST_ID במזהה המארח של כל צומת שזיהיתם בשלב הקודם. לדוגמה:

      kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u my-jmx-id -pw my-jmx-pwd removenode abcdef-f202-438a-8a77-40636317b7c9
    3. מריצים שוב את הפקודה nodetool status ומוודאים שהצמתים עם הסטטוס DN באזורים שנמחקו לא מופיעים יותר.

      kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE  -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
  8. מסירים את ההפניות לאזורים שנמחקו ומוסיפים את ההפניות לאזורים ששוחזרו במטא-נתונים של KeySpaces.
    1. כדי לקבל את שם מרכז הנתונים של Cassandra, משתמשים באפשרות nodetool status.
      kubectl exec -n APIGEE_NAMESPACE -it apigee-cassandra-default-0 -- bash
            nodetool  -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status |grep -i Datacenter

      where:

      • ‫APIGEE_JMX_USER הוא שם המשתמש של המשתמש של פעולות Cassandra JMX. משמש לאימות ולתקשורת עם ממשק Cassandra JMX. מידע נוסף זמין במאמר בנושא cassandra:auth:jmx:username.
      • ‫APIGEE_JMX_PASSWORD היא הסיסמה של המשתמש Cassandra JMX operations. מידע נוסף זמין במאמר בנושא cassandra:auth:jmx:password.
    2. מעדכנים את השכפול של KeySpaces.
      1. יוצרים מאגר תגים של לקוח ומתחברים לאשכול Cassandra דרך ממשק CQL.
      2. מקבלים את רשימת מרחבי המפתחות של המשתמשים מממשק CQL:
        cqlsh CASSANDRA_SEED_HOST -u APIGEE_DDL_USER -p APIGEE_DDL_PASSWORD
              --ssl -e "select keyspace_name from system_schema.keyspaces;"|grep -v system

        where:

        • ‫CASSANDRA_SEED_HOST הוא מארח ה-seed של Cassandra במספר אזורים. ברוב ההתקנות במספר אזורים, משתמשים בכתובת ה-IP של מארח באזור הראשון. מידע נוסף מופיע במאמרים הגדרת Apigee Hybrid למספר אזורים וcassandra:externalSeedHost.
        • ‫APIGEE_DDL_USER ו-APIGEE_DDL_PASSWORD הם שם המשתמש והסיסמה של האדמין עבור משתמש בשפת הגדרת הנתונים (DDL) של Cassandra. ערכי ברירת המחדל הם ddl_user ו-iloveapis123.

          מידע נוסף זמין במאמר cassandra.auth.ddl.password בנושא הפניה למאפייני ההגדרה ובמאמר אפשרויות של שורת הפקודה במסמכי התיעוד של Apache Cassandra cqlsh.

      3. לכל מרחב מפתחות, מריצים את הפקודה הבאה מממשק CQL כדי לעדכן את הגדרות השכפול:
        ALTER KEYSPACE KEYSPACE_NAME WITH replication = {'class': 'NetworkTopologyStrategy', 'DATACENTER_NAME':3};

        where:

        • ‫KEYSPACE_NAME הוא השם של מרחב המפתחות שמופיע בפלט של השלב הקודם.
        • ‫DATACENTER_NAME הוא השם של מרכז הנתונים של Cassandra שקיבלתם באמצעות האפשרות nodetool status בשלב 8.