תהליך החזרה למצב קודם 4.16.09

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

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

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

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

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

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

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

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

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

  • חמשת רכיבי Edge שמפורטים בהמשך חולקים קוד משותף. לכן, כדי להחזיר לגרסה קודמת כל אחד מחמשת הרכיבים בצומת, צריך להחזיר לגרסה קודמת כל אחד מחמשת הרכיבים שמותקנים בצומת. לדוגמה, אם שרת הניהול, הנתב ומעבד הבקשות מותקנים בצומת, כדי להחזיר לגרסה קודמת אחד מהם צריך להחזיר לגרסה קודמת את שלושתם.
    חמשת הרכיבים שמשתפים קוד הם:
    • שרת ניהול
    • נתב
    • מעבד בקשות
    • שרת Qpid
    • שרת Postgres
  • אם אתם מעדכנים מ-Edge 4.16.01, אל תחזירו את Cassandra לגרסה קודמת. הגרסה הזו של Edge כוללת גרסה מעודכנת של Cassandra. אם מחזירים רכיבים כלשהם לגרסה קודמת, צריך להשאיר את Cassandra בגרסה 4.16.09.
  • הגרסה הזו לא כוללת גרסה חדשה של qpidd. לכן, אין צורך להחזיר את qpidd לגרסה קודמת.

חזרה לגרסה 4.16.09

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

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

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

כדי להחזיר את עדכון 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

    הערה: בהרבה הגדרות, צומת ההמתנה הישן יארח רק את Postgres ולא את Qpid.
  4. מקַדמים את צומת הגיבוי החדש לצומת הראשי של Postgres:
    1. מקַדמים את הצומת החדש במצב המתנה להיות המאסטר החדש:
      > apigee-service apigee-postgresql promote-standby-to-master new_standby_IP

      אם מוצגת בקשה, מזינים את סיסמת Postgres של המשתמש 'apigee', שמוגדרת כברירת מחדל ל-"postgres".
    2. עורכים את קובץ התצורה שבו השתמשתם כדי להתקין את הגרסה הנוכחית של Edge, ומציינים את הפרטים הבאים:
      # כתובת IP של ה-new master:
      PG_MASTER=new_standby_IP
      # כתובת IP של ה-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 של ה-new master:
      PG_MASTER=new_standby_IP
      # כתובת IP של ה-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"


    הערה: השירות edge-postgres-server צריך לפעול. אם שרת Postgres לא פועל, אפשר להריץ את הפקודה הבאה בשרת הניהול כדי לקבוע את ה-UUID:
    > curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/servers?pod=analytics

    הפלט של הפקודה הזו מפרט את ה-UUID של כתובת ה-IP של כל צומת Postres.
  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 חדשים מסוג מאסטר ו-standby עם קבוצות הניתוח והצרכנים:
    > 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:
    > ‎/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

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

    הערה: אם צומת המאסטר הישן הפעיל את Qpid, אפשר להשאיר את השרת הזה פועל כדי להפעיל את Qpid. מוודאים שהיא פועלת. אם לא, מפעילים אותו:
    > /opt/apigee/apigee-service/bin/apigee-service edge-management-server start

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

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

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

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

    הפקודה הזו מציגה טבלה עם ספירה של msg,‏ msgIn ו-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 בשרת הראשי החדש:
    > ‎/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.16.09 לגרסה קודמת:

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

  • כדי לחזור לגרסה 4.16.05, צריך להוריד את bootstrap_4.16.05.sh
  • כדי לחזור לגרסה 4.16.01, צריך להוריד את bootstrap.sh

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

  1. עוצרים את הרכיב כדי לחזור לגרסה הקודמת:
    1. אם אתם מחזירים לגרסה קודמת אחד מהרכיבים הבאים בצומת, אתם צריכים לעצור את כולם: Management Server,‏ Router,‏ מעבד בקשות,‏ Qpid Server או Postgres Server:
      • > 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
  4. אם אתם מחזירים את הנתב לגרסה קודמת, אתם צריכים למחוק את התוכן של /opt/nginx/conf.d:
    > cd /opt/nginx/conf.d
    > rm -rf *
  5. כדי להחזיר את הרכיב לגרסה קודמת:
    1. מסירים את גרסה 4.16.09 של apigee-setup:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
    2. הורד את bootstrap.sh עבור גרסה 4.16.01 או 4.16.05:
      עבור גרסה 4.16.01:
      > curl https://software.apigee.com/bootstrap.sh -o /tmp/bootstrap.sh

      עבור גרסה 4.16.05:
      > curl https://software.apigee.com/bootstrap_4.16.05.sh -o /tmp/bootstrap.sh
    3. מתקינים את כלי השירות apigee-service בגרסה 4.16.01 או 4.16.05 ואת יחסי התלות:
      > sudo bash /tmp/bootstrap.sh apigeeuser=uName apigeepassword=pWord

      כאשר uName ו-pWord הם שם המשתמש והסיסמה שקיבלתם מ-Apigee. אם לא תציינו את pWord, תתבקשו להזין אותו.
    4. מתקינים את גרסה 4.16.01 או 4.16.05 של apigee-setup:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
    5. מתקינים את גרסה 4.16.01 או 4.16.05 של הרכיב:
      > ‎/opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile

      כאשר comp הוא הרכיב שרוצים להתקין ו-configFile הוא קובץ התצורה של גרסה 4.16.01 או 4.16.05.
  6. כדי להחזיר את הרכיב לגרסה ספציפית של גרסה 4.16.05:
    1. מורידים את גרסת הרכיב הספציפית:
      > /<instal_dir>/apigee/apigee-service/bin/apigee-service comp-version install

      כאשר comp-version הוא הרכיב והגרסה להתקנה. לדוגמה:
      > /<instal_dir>/apigee/apigee-service/bin/apigee-service edge-ui-4.16.05-0.0.3649 install

      אם אתם משתמשים במאגר אונליין של Apigee, אתם יכולים לקבוע את גרסאות הרכיבים הזמינות באמצעות הפקודה הבאה:
      > yum --showduplicates list comp

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

      לדוגמה:
      > ‎/<install_dir>/apigee/apigee-setup/bin/setup.sh -p ui -f configFile

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

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