תהליך החזרה לגרסה קודמת 4.18.01

Edge for Private Cloud v4.18.01

אם מתרחשת שגיאה במהלך עדכון ל-Edge 4.18.01, אפשר להחזיר את הרכיב שגרם לשגיאה לגרסה קודמת ואז לנסות לעדכן שוב. לדוגמה, אם העדכון ל-Postgres 9.6 נכשל, אפשר להחזיר למצב הקודם רק את הצמתים של Postgres ולנסות לעדכן שוב.

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

  1. חזרה לגרסה קודמת. לדוגמה, מגרסה 4.18.01 לגרסה 4.17.01.
  2. חזרה לגרסה ישנה יותר באותו עדכון.

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

מי יכול לבצע את החזרה לגרסה קודמת

המשתמש שמבצע את החזרה לגרסה קודמת צריך להיות אותו משתמש שעדכן את Edge במקור, או משתמש שפועל כמשתמש root.

כברירת מחדל, רכיבי Edge פועלים בתור המשתמש apigee. במקרים מסוימים, יכול להיות שאתם מפעילים רכיבי Edge כמשתמשים שונים. לדוגמה, אם הנתב צריך לגשת ליציאות עם הרשאות, כמו אלה שמתחת ל-1000, צריך להריץ את הנתב כמשתמש root או כמשתמש עם גישה ליציאות האלה. לחלופין, יכול להיות שאתם מריצים רכיב אחד כמשתמש אחד, ורכיב אחר כמשתמש אחר.

אילו רכיבים אפשר להחזיר לגרסה קודמת

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

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

    חמשת הרכיבים שמשתפים קוד הם:

    • שרת ניהול
    • נתב
    • מעבד בקשות
    • שרת Qpid
    • שרת Postgres
  • אם אתם מעדכנים מ-Edge 4.16.01, אל תחזירו את Cassandra לגרסה קודמת. הגרסה הזו של Edge כוללת גרסה מעודכנת של Cassandra. אם מחזירים רכיבים כלשהם לגרסה קודמת, צריך להשאיר את Cassandra בגרסה 4.18.01.

חזרה לגרסה 4.18.01

בקטע הזה מוסבר איך להחזיר את Edge 4.18.01 לגרסה קודמת. החלק הזה מחולק לשני חלקים:

  • חזרה לגרסה קודמת של עדכון Postgres
    החלק האחרון בכל הליך עדכון הוא עדכון צומתי Postgres לגרסה 9.6. אם העדכון נכשל, אפשר להשתמש בהליך הזה כדי לבטל את העדכון.
  • החזרה לגרסה קודמת של כל שאר הרכיבים של Edge
    כדי להחזיר לגרסה קודמת כל רכיב אחר של Edge, צריך להשתמש בהליך הזה.

כדי לחזור לגרסה הקודמת של עדכון Postgres 9.6

כדי להחזיר את עדכון Postgres לגרסה קודמת כשמעדכנים את Postgres בהגדרת master-standby:

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

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

  1. מוודאים שצומת הגיבוי החדש של Postgres פועל:
    > /opt/apigee/apigee-service/bin/apigee-all status

    אם Postgres לא פועל, מפעילים אותו:

    > /opt/apigee/apigee-service/bin/apigee-all start
  2. מוודאים ש-Postgres הופסק בצומת הראשי הישן ובצומת הגיבוי הישן:
    > /opt/apigee/apigee-service/bin/apigee-all status

    אם Postgres פועל, עוצרים אותו:

    > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
  3. אם הוא מותקן, מפעילים את Qpid בצומת ההמתנה הישן:
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
  4. מקַדמים את צומת הגיבוי החדש כמאסטר של Postgres:
    1. מקַדמים את הצומת החדש במצב המתנה כדי שיהיה המאסטר החדש:
      > apigee-service apigee-postgresql promote-standby-to-master new_standby_IP

      אם מוצגת בקשה, מזינים את סיסמת Postgres של המשתמש apigee, שמוגדרת כברירת מחדל ל-"postgres".

    2. עורכים את קובץ התצורה שבו השתמשתם כדי להתקין את הגרסה הנוכחית של Edge, ומציינים את הפרטים הבאים:
      # IP address of the new master:
      PG_MASTER=new_standby_IP
      # IP address of the old standby node
      PG_STANDBY=old_standby_IP
    3. מגדירים את המאסטר החדש:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
  5. בונים מחדש את הצומת הישן במצב המתנה:
    1. עורכים את קובץ התצורה שבו השתמשתם כדי להתקין את הגרסה הנוכחית של Edge, ומציינים את הפרטים הבאים:
      # IP address of the new master:
      PG_MASTER=new_standby_IP
      # IP address of the old standby node
      PG_STANDBY=old_standby_IP
    2. מסירים את ספריית הנתונים בצומת הגיבוי הישן:
      > cd /opt/apigee/data/apigee-postgresql/pgdata > rm -rf *
    3. מגדירים מחדש את צומת הגיבוי הישן כצומת גיבוי של הצומת הראשי החדש:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
    4. מוודאים ש-Postgres פועל בצומת ההמתנה הישן:
      > /opt/apigee/apigee-service/bin/apigee-all status

      אם הוא לא פועל, מפעילים אותו:

      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
  6. מוודאים שצומת ההמתנה החדש נוסף על ידי הצגת הקובץ /opt/apigee/apigee-postgresql/conf/pg_hba.conf במאסטר החדש.
  7. כדי להציג את המידע הנוכחי על קבוצת הצרכנים ועל ניתוח הנתונים, מריצים את הפקודה הבאה בשרת הניהול:
    > curl -u sysAdminEmail:password http://ms_IP:8080/v1/analytics/groups/ax

    הפקודה הזו מחזירה את שם קבוצת הניתוח בשדה name, ואת שם קבוצת הצרכנים בשדה name בקטע consumer-groups. היא גם מחזירה את מזהי ה-UUID של הצמתים הישנים של Postgres, הראשי והמשני, בשדה postgres-server ובשדה datastores. הפלט אמור להיראות כך:

    {
      "name" : "axgroup-001",
      "properties" : {
      },
      "scopes" : [ "VALIDATE~test", "sgilson~prod" ],
      "uuids" : {
        "qpid-server" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
        "postgres-server" : [
          "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256"
        ]
      },
      "consumer-groups" : [ {
        "name" : "consumer-group-001",
        "consumers" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
        "datastores" :
          [ "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256" ],
          "properties" : {     }
        }
      ],
      "data-processors" : {
      }
    }
  8. מריצים את פקודת ה-cURL הבאה בצומת הראשי הישן כדי לקבל את כתובת ה-UUID שלו:
    > curl -u sysAdminEmail:password http://node_IP:8084/v1/servers/self

    בסוף הפלט אמור להופיע ה-UUID של הצומת, בפורמט הבא:

    "type" : [ "postgres-server" ],
    "uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"
  9. חוזרים על השלב הקודם כדי לקבל את כתובות ה-IP של הצומת הישן במצב המתנה ושל הצומת הראשי החדש.
  10. מסירים את הצמתים הישנים של המאסטר וההמתנה מקבוצת הצרכנים:
    > curl -u sysAdminEmail:password -X DELETE
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores/masterUUID,standbyUUID" -v

    כאשר axgroup-001 ו-consumer-group-001 הם שמות ברירת המחדל של קבוצות הניתוח והצרכנים. masterUUID,standbyUUID מופיעים באותו סדר שבו הם הופיעו למעלה, כשצפית במידע הנוכחי על קבוצת הצרכנים ועל ניתוח הנתונים. יכול להיות שתצטרכו לציין אותם בתור standbyUUID,masterUUID.

    המאפיין datastores של consumer-groups אמור להיות ריק עכשיו.

  11. מסירים את הצמתים הישנים של המאסטר וההמתנה מקבוצת הניתוח:
    > curl -u sysAdminEmail:password -X DELETE
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v

    המאפיין postgres-server בקטע uuids אמור להיות ריק עכשיו.

  12. רושמים צומתי PG ראשיים וצומתי המתנה חדשים עם קבוצות הניתוח והצרכנים:
    > curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v
    > curl -u sysAdminEmail:password -X POST -H "Content-Type:application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores?uuid=masterUUID,standbyUUID" -v
  13. מאמתים את קבוצת הניתוח:
    > curl -u sysAdminEmail:password http://ms_IP:8080/v1/analytics/groups/ax

    מזהי ה-UUID של הצמתים החדשים של המאסטר וההמתנה אמורים להופיע ברשימה בקבוצת הניתוח ובקבוצת הצרכנים.

  14. מפעילים מחדש את Edge Management Server:
    > /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  15. מפעילים מחדש את כל שרתי Qpid:
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  16. מפעילים מחדש את כל שרתי Postgres:
    > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  17. כדי לאמת את סטטוס הרפליקציה, מריצים את הסקריפטים הבאים בשני השרתים. המערכת אמורה להציג תוצאות זהות בשני השרתים כדי לוודא שהשכפול בוצע בהצלחה:

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

    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

    מוודאים שכתוב שהוא הראשי. בצומת ההמתנה הישן:

    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

    מוודאים שמופיע הכיתוב "standby" (המתנה).

  18. חוזרים על השלב הקודם אחרי ששולחים כמה בקשות API כדי לוודא שהצמתים מסונכרנים.
  19. מוציאים משימוש את שרת המאסטר הישן של Postgres באמצעות ההליך שמפורט במאמר עדכון Apigee Edge מגרסה 4.16.01 או 4.16.05 לגרסה 4.17.09.

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

מסירים את ההתקנה של Qpid מהמאסטר הישן ומתקינים את Qpid במאסטר החדש

כדי להסיר את Qpid מהשרת הראשי הישן ולהתקין אותו בשרת הראשי החדש:

  1. חוסמים את הגישה ליציאה 5672 של Qpid בשרת הראשי הישן ממעבדי הבקשות, על ידי הפעלת הפקודה הבאה בכל מעבדי הבקשות:
    > iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP
  2. כדי לוודא שתור ההודעות של Qpid ריק, מריצים את הפקודה הבאה. אי אפשר להסיר את ההתקנה של Qpid עד שהוא יעבד את כל ההודעות בהמתנה:
    > qpid-stat -q

    הפקודה הזו מציגה טבלה עם ספירה של msg, msgIn, and msgOut. כל ההודעות יעובדו כש-msg=0, וגם msgIn=msgOut.

  3. מריצים את הפקודה הבאה בשרת הראשי הישן כדי לזהות את ה-UUID של שרת ה-Qpid בשרת הראשי הישן. שומרים את הפרטים האלה כדי להשתמש בהם בהמשך התהליך:
    > curl -u sysAdminEmail:password http://node_IP::8083/v1/servers/self
  4. עוצרים את Qpid בשרת הראשי הישן:
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    > /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop
  5. הסרת ההתקנה של שרת Qpid:
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
    > /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall
  6. מסירים את שרת Qpid הישן מקבוצות הניתוח והצרכנים:
    > curl -u sysAdminEmail:password -X DELETE -H "Content-Type: application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers/qpid_UUID" -v
    > curl -u sysAdminEmail:password -X DELETE
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v
  7. מסירים את שרת Qpid הישן מ-Zookeeper:
    > curl -u sysAdminEmail:password -X DELETE
      http://ms_IP:8080/v1/servers/qpid_UUID
  8. מתקינים את Qpid בשרת ה-Master החדש:
    > /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile
  9. מריצים את הפקודה הבאה בשרת הראשי החדש כדי לקבוע את ה-UUID של שרת ה-Qpid בשרת הראשי החדש. שומרים את הפרטים האלה כדי להשתמש בהם בהמשך התהליך:
    > curl -u sysAdminEmail:password
      http://node_IP::8083/v1/servers/self
  10. רושמים את שרת Qpid החדש בקבוצות של ניתוח הנתונים והצרכנים:
    > curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v
    > curl -u sysAdminEmail:password -X POST -H "Content-Type:application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers?uuid=qpid_UUID" -v
  11. מפעילים מחדש את כל מעבדי הבקשות:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  12. מריצים את הפקודה הבאה בשרת Qpid החדש כדי לבדוק שהתורים נוצרו:
    > qpid-stat -q

    מוודאים ש-msg,‏ msgIn ו-msgOut מתעדכנים בזמן ששרת Qpid מעבד הודעות.

כדי להחזיר רכיבים בודדים מגרסה 4.18.01 לגרסה קודמת

כחלק מביצוע החזרה לגרסה הקודמת, צריך להוריד את הקובץ bootstrap.sh של הגרסה הנוכחית של Edge:

  • כדי לחזור לגרסה 4.17.09, צריך להוריד את bootstrap_4.17.09.sh
  • כדי לחזור לגרסה 4.17.05, צריך להוריד את bootstrap_4.17.05.sh
  • כדי לחזור לגרסה 4.17.01, צריך להוריד את bootstrap_4.17.01.sh
  • כדי לחזור לגרסה 4.16.09, צריך להוריד את bootstrap_4.16.09.sh
  • כדי לחזור לגרסה 4.16.05, צריך להוריד את bootstrap_4.16.05.sh
  • כדי לחזור לגרסה 4.16.01, צריך להוריד את bootstrap.sh

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

  1. עוצרים את הרכיב כדי לחזור לגרסה קודמת:
    1. אם אתם מחזירים לגרסה קודמת אחד מהרכיבים הבאים בצומת, אתם צריכים לעצור את כולם: שרת הניהול, הנתב, מעבד הבקשות, שרת Qpid או שרת Postgres:
      • > apigee-service edge-management-server stop
      • > apigee-service edge-router stop
      • > apigee-service edge-message-processor stop
      • > apigee-service edge-qpid-server stop
      • > apigee-service edge-postgres-server stop
    2. אם אתם מחזירים לגרסה קודמת רכיב אחר בצומת, עצרו רק את הרכיב הזה:
      • > apigee-service comp stop
  2. אם אתם מחזירים את המונטיזציה לגרסה קודמת, צריך להסיר אותה מכל הצמתים של שרת הניהול ומעבד הבקשות:
    > apigee-service edge-mint-gateway uninstall
  3. מסירים את הרכיב כדי לחזור לגרסה הקודמת בצומת:
    1. אם אתם מחזירים לגרסה קודמת את אחד מהרכיבים הבאים בצומת, צריך להסיר את כולם: Management Server,‏ Router,‏ מעבד בקשות, Qpid Server או Postgres Server:
      > apigee-service edge-gateway uninstall
    2. אם אתם מחזירים לגרסה קודמת רכיב אחר בצומת, הסירו רק את הרכיב הזה:
      > apigee-service comp uninstall
    3. אם מחזירים את הנתב לגרסה קודמת, צריך למחוק את התוכן של /opt/nginx/conf.d:
      > cd /opt/nginx/conf.d
      > rm -rf *
  4. כדי להחזיר את הרכיב לגרסה קודמת:
    1. מסירים את גרסה 4.18.01 של apigee-setup:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
    2. מורידים את bootstrap.sh לגרסה הרצויה: לדוגמה, לגרסה 4.16.09:
      > curl https://software.apigee.com/bootstrap_4.16.09.sh -o /tmp/bootstrap_4.16.09.sh 
    3. מתקינים את כלי השירות apigee-service בגרסה 4.16.01,‏ 4.16.05 או 4.16.09 ואת יחסי התלות. לדוגמה, בגרסה 4.16.09:
      > sudo bash /tmp/bootstrap_4.16.09.sh apigeeuser=uName apigeepassword=pWord

      כאשר uName ו-pWord הם שם המשתמש והסיסמה שקיבלתם מ-Apigee. אם לא תציינו את pWord, תתבקשו להזין אותו.

    4. התקנת apigee-setup:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
    5. מתקינים את הגרסה הרצויה של הרכיב:
      > /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile

      כאשר comp הוא הרכיב שרוצים להתקין ו-configFile הוא קובץ התצורה של הגרסה הרצויה.

    6. אם אתם מחזירים את Qpid לגרסה קודמת, צריך לנקות את iptables:
      > sudo iptables -F
  5. כדי להחזיר את הרכיב לגרסה ספציפית של גרסה 4.18.01:
    1. מורידים את הגרסה הספציפית של הרכיב:
      > /opt/apigee/apigee-service/bin/apigee-service comp-version install

      כאשר comp-version הוא הרכיב והגרסה להתקנה. לדוגמה:

      > /opt/apigee/apigee-service/bin/apigee-service edge-ui-4.17.09-0.0.3749 install

      אם אתם משתמשים במאגר של Apigee אונליין, אתם יכולים להשתמש בפקודה הבאה כדי לראות את גרסאות הרכיבים הזמינות:

      > yum --showduplicates list comp

      לדוגמה:

      > yum --showduplicates list edge-ui
    2. משתמשים ב-apigee-setup כדי להתקין את הרכיב:
      > /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile

      לדוגמה:

      > /opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile

      שימו לב שצריך לציין רק את שם הרכיב כשמבצעים את ההתקנה.

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