הוצאה משימוש של מרכז נתונים

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

  • ‫dc-1 הוא מרכז הנתונים שיוצא משימוש.
  • ‫dc-2 הוא מרכז נתונים שני, שמשמש בתהליך ההוצאה משימוש.

אם אתם משדרגים את מערכת ההפעלה, dc-2 יכול להיות מרכז הנתונים שבו התקנתם את הגרסה החדשה של מערכת ההפעלה (OS). עם זאת, לא צריך להתקין מערכת הפעלה חדשה כדי להוציא משימוש מרכז נתונים.

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

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

  • חוסמים את כל תעבורת הנתונים של זמן הריצה והניהול למרכז הנתונים שמוצא משימוש, ומפנים אותה למרכזי נתונים אחרים.
  • אחרי הוצאת מרכז הנתונים משימוש, הקיבולת של אשכול Apigee תקטן. כדי לפצות על כך, כדאי להגדיל את הקיבולת במרכזי הנתונים שנותרו או להוסיף מרכזי נתונים אחרי ההוצאה משימוש.
  • במהלך תהליך ההוצאה משימוש, יש סיכוי לאובדן נתונים של Analytics, בהתאם לרכיבי Analytics שמותקנים במרכז הנתונים שמוצא משימוש. פרטים נוספים מופיעים במאמר הוספה או הסרה של צמתי Qpid.
  • לפני שמוציאים משימוש מרכז נתונים, חשוב להבין איך כל הרכיבים מוגדרים בכל מרכזי הנתונים, במיוחד השרתים של SymasLDAP,‏ ZooKeeper,‏ Cassandra ו-Postgres. כדאי גם ליצור גיבויים של כל הרכיבים וההגדרות שלהם.

לפני שמתחילים

  • שרת ניהול: כל שלבי ההוצאה משימוש תלויים מאוד בשרת הניהול. אם יש לכם רק שרת ניהול אחד, מומלץ להתקין רכיב חדש של שרת ניהול במרכז נתונים שאינו dc-1 לפני שמוציאים משימוש את שרת הניהול ב-dc-1, ולוודא שאחד משרתי הניהול תמיד זמין.
  • נתב: לפני שמוציאים נתב משימוש, צריך להשבית את הגישה לנתבים על ידי חסימת יציאה 15999. מוודאים שאין תנועה בזמן ריצה שמופנית לנתבים שמוצאים משימוש.
  • Cassandra ו-ZooKeeper: בקטעים הבאים מוסבר איך להוציא משימוש את dc-1 בהגדרה של שני מרכזי נתונים.

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

  • ‫Postgres: אם מוציאים משימוש את Postgres master, צריך לוודא שמעלים כל אחד מהצמתים הזמינים במצב המתנה כ-Postgres master חדש. שרת ה-QPID שומר מאגר נתונים זמני בתור, אבל אם ה-Postgres הראשי לא זמין למשך זמן ארוך יותר, אתם עלולים לאבד נתוני ניתוח.

דרישות מוקדמות

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

  • לפני שמוציאים משימוש, צריך לוודא ש-Edge פועל באמצעות הפקודה:
    /opt/apigee/apigee-service/bin/apigee-all status
  • מוודאים שאין תנועה בזמן ריצה שמגיעה כרגע למרכז הנתונים שאתם מוציאים משימוש.

סדר הוצאת הרכיבים משימוש

אם מתקינים את Edge for Private Cloud בכמה צמתים, צריך להוציא משימוש את רכיבי Edge בצמתים האלה בסדר הבא:

  1. ממשק משתמש חדש של Edge (edge-management-ui ו-edge-management-ui-static)
  2. שרת ניהול (edge-management-server)
  3. Symas LDAP‏ (apigee-openldap)
  4. נתב (נתב קצה)
  5. מעבד הודעות (edge-message-processor)
  6. שרת Qpid ו-Qpidd‏ (edge-qpid-server ו-apigee-qpidd)
  7. מסד נתונים של Postgres ו-PostgreSQL‏ (edge-postgres-server ו-apigee-postgresql)
  8. ‫ZooKeeper ‏ (apigee-zookeeper)
  9. ‫Cassandra‏ (apigee-cassandra)

בקטעים הבאים מוסבר איך להוציא משימוש כל רכיב.

ממשק משתמש חדש של Edge

כדי לעצור ולהסיר את הרכיבים של ממשק המשתמש החדש של Edge ב-dc-1, מזינים את הפקודות הבאות:

/opt/apigee/apigee-service/bin/apigee-service edge-management-ui stop
/opt/apigee/apigee-service/bin/apigee-service edge-management-ui uninstall
/opt/apigee/apigee-service/bin/apigee-service edge-management-ui-static uninstall

שרת ניהול

כדי להוציא משימוש את שרת הניהול ב-dc-1, מבצעים את השלבים הבאים:

  1. מפסיקים את שרת הניהול ב-dc-1:
    apigee-service edge-management-server stop
  2. מאתרים את ה-UUID של שרת הניהול שרשום ב-dc-1:
    curl -u <AdminEmailID>:'<AdminPassword>' -X GET “http://{MS_IP}:8080/v1/servers?pod=central&region=dc-1&type=management-server”
  3. סוג השרת שרוצים לבטל את הרישום שלו:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers -d "type=management-server&region=dc-1&pod=central&uuid=UUID&action=remove"
  4. מוחקים את השרת. הערה: אם בשרת הזה מותקנים גם רכיבים אחרים, צריך לבטל את הרישום של כולם לפני שמוחקים את ה-UUID.
    curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/{UUID}
  5. מסירים את הרכיב Management Server ב-dc-1:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server uninstall

Symas LDAP

בקטע הזה מוסבר איך להוציא משימוש את SymasLDAP ב-dc-1.

הערה: אם יש לכם יותר משני מרכזי נתונים, אפשר לעיין בקטע הגדרות עם יותר משני מרכזי נתונים שבהמשך.

כדי להוציא משימוש את SymasLDAP ב-dc-1, מבצעים את השלבים הבאים:

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

    1. בודקים את המצב הנוכחי:
            /opt/symas/bin/ldapsearch -H ldap://{HOST}:{PORT} -LLL -x -b "cn=config" -D "cn=admin,cn=config" -w {credentials} -o ldif-wrap=no 'olcSyncRepl' | grep olcSyncrepl

      הפלט אמור להיראות כך:

      olcSyncrepl: {0}rid=001 provider=ldap://{HOST}:{PORT}/ binddn="cn=manager,dc=apigee,dc=com" bindmethod=simple credentials={credentials} searchbase="dc=apigee,dc=com" attrs="*,+" type=refreshAndPersist retry="60 1 300 12 7200 +" timeout=1
    2. יוצרים קובץ break_repl.ldif שמכיל את הפקודות הבאות:
      dn: olcDatabase={2}mdb,cn=config
      changetype: modify
      delete: olcSyncRepl
      
      dn: olcDatabase={2}mdb,cn=config
      changetype: modify
      delete: olcMirrorMode
    3. מריצים את הפקודה ldapmodify:
            /opt/symas/bin/ldapmodify -x -w {credentials} -D "cn=admin,cn=config" -H "ldap://{HOST}:{PORT}/" -f path/to/file/break_repl.ldif

      הפלט אמור להיראות כך:

      modifying entry "olcDatabase={2}mdb,cn=config"
      modifying entry "olcDatabase={2}mdb,cn=config"
  3. כדי לוודא ש-dc-2 לא משכפל יותר ל-dc-1, אפשר ליצור רשומה ב-LDAP של dc-2 ולוודא שהיא לא מופיעה ב-LDAP של dc-1.

    אופציונלי: אתם יכולים לפעול לפי השלבים הבאים כדי ליצור משתמש לקריאה בלבד בצומת dc-2 SymasLDAP, ואז לבדוק אם המשתמש משוכפל או לא. לאחר מכן המשתמש נמחק.

    1. יוצרים קובץ readonly-user.ldif ב-dc-2 עם התוכן הבא:
      dn: uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com
      objectClass: organizationalPerson
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: top
      cn: readonly-user
      sn: readonly-user
      userPassword: {testPassword}
    2. מוסיפים משתמש באמצעות הפקודה `ldapadd` ב-dc-2:
      /opt/symas/bin/ldapadd -H ldap://{HOST}:{PORT} -w {credentials} -D "cn=manager,dc=apigee,dc=com" -f path/to/file/readonly-user.ldif

      הפלט ייראה כך:

      adding new entry "uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com"
    3. מחפשים את המשתמש ב-dc-1 כדי לוודא שהמשתמש לא משוכפל. אם המשתמש לא קיים ב-dc-1, אתם יכולים להיות בטוחים ששני שרתי ה-LDAP כבר לא משכפלים:
      /opt/symas/bin/ldapsearch -H ldap://{HOST}:{PORT} -x -w {credentials} -D "cn=manager,dc=apigee,dc=com" -b uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com -LLL

      הפלט אמור להיראות כך:

      No such object (32)
      Matched DN: ou=users,ou=global,dc=apigee,dc=com
    4. מסירים את המשתמש עם הרשאת קריאה בלבד שהוספתם קודם:
      /opt/symas/bin/ldapdelete -v -H ldap://{HOST}:{PORT} -w {credentials} -D "cn=manager,dc=apigee,dc=com" "uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com"
  4. עוצרים את SymasLDAP ב-dc-1:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
  5. מסירים את הרכיב SymasLDAP ב-dc-1:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap uninstall

נתב

בקטע הזה מוסבר איך להוציא משימוש נתב. למידע נוסף על הסרת הנתב, קראו את המאמר הסרת שרת.

בשלבים הבאים מושבת ה-Router מ-dc-1. אם יש כמה צומתי Router שהוגדרו ב-dc-1, מבצעים את השלבים בכל צומתי Router, אחד אחרי השני.

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

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

  1. משביתים את יכולת ההגעה (reachability) של הנתבים על ידי חסימת יציאה 15999, שהיא היציאה של בדיקת התקינות. מוודאים שהתנועה בזמן הריצה חסומה במרכז הנתונים הזה:

    iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT
  2. מוודאים שאפשר לגשת לנתב:

    curl -vvv -X GET http://{ROUTER_IP}:15999/v1/servers/self/reachable

    הפלט אמור להיראות כך:

    About to connect() to 10.126.0.160 port 15999 (#0)
    Trying 10.126.0.160...
    Connection refused
    Failed connect to 10.126.0.160:15999; Connection refused
    Closing connection 0
    curl: (7) Failed connect to 10.126.0.160:15999; Connection refused
  3. מקבלים את ה-UUID של הנתב, כמו שמתואר בקטע קבלת מזהי UUID.
  4. מפסיקים את פעולת הנתב:
    /opt/apigee/apigee-service/bin/apigee-service edge-router stop
  5. מציגים את רשימת הפודים של השערים שזמינים בארגון באמצעות הפקודה הבאה:
    curl -u  <AdminEmailID>:'<AdminPassword>' -X GET "http://{MS_IP}:8080/v1/organizations/{ORG}/pods"

    מידע על Pods

  6. מבטלים את הרישום של סוג השרת:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers -d "type=router&region=dc-1&pod=gateway-1&uuid=UUID&action=remove"
  7. מבטלים את הרישום של השרת:
    curl -u <AdminEmailID>:'<AdminPassword>’ -X DELETE http://{MS_IP}:8080/v1/servers/UUID
  8. הסרת ההתקנה של edge-router:
    /opt/apigee/apigee-service/bin/apigee-service edge-router uninstall
    איך מסירים שרת?
  9. מנקים את הכללים של iptables כדי להפעיל את יציאה 15999 החסומה:
    iptables -F

מעבד בקשות

בקטע הזה מוסבר איך להוציא משימוש את מעבד הבקשות מ-dc-1. מידע נוסף על הסרת מעבד ההודעות מופיע במאמר הסרת שרת.

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

  1. מקבלים את מזהי ה-UUID של מעבדי ההודעות, כמו שמתואר במאמר בנושא קבלת מזהי UUID.
  2. עוצרים את מעבד הבקשות:
    apigee-service edge-message-processor stop
  3. מבטלים את הרישום של סוג השרת:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers -d "type=message-processor&region=dc-1&pod=gateway-1&uuid=UUID&action=remove"
  4. ביטול השיוך של סביבה למעבד הבקשות.
    curl -H "Content-Type:application/x-www-form-urlencoded" <AdminEmailID>:'<AdminPassword>’  \
    -X POST http://{MS_IP}:8080/v1/organizations/{ORG}/environments/{ENV}/servers \
    -d "action=remove&uuid=UUID"
  5. מבטלים את הרישום של סוג השרת:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers -d "type=message-processor&region=dc-1&pod=gateway-1&uuid=UUID&action=remove"
  6. מסירים את מעבד הבקשות:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor uninstall
  7. מבטלים את הרישום של השרת:
    curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID

שרת Qpid ו-Qpidd

בקטע הזה מוסבר איך להוציא משימוש את Qpid Server ‏ (edge-qpid-server) ואת Qpidd ‏(apigee-qpidd). יש שני צמתי Qpid שהוגדרו ב-dc-1, ולכן צריך לבצע את השלבים הבאים עבור שני הצמתים:

  1. משיגים את ה-UUID של Qpidd, כמו שמתואר בקטע קבלת מזהי UUID.
  2. הפסקת השימוש ב-edge-qpid-server וב-apigee-qpidd:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop
  3. כדי לקבל רשימה של קבוצות Analytics וקבוצות צרכנים:
    curl -u <AdminEmailID>:'<AdminPassword>' -X GET http://{MS_IP}:8080/v1/analytics/groups/ax
  4. מסירים את Qpid מקבוצת הצרכנים:
    curl -u <AdminEmailID>:'<AdminPassword>' -H "Content-Type: application/json"  -X DELETE \ "http://{MS_IP}:8080/v1/analytics/groups/ax/{ax_group}/consumer-groups/{consumer_group}/consumers/{QPID_UUID}"
  5. מסירים את Qpid מקבוצת הניתוח:
    curl -v -u <AdminEmailID>:'<AdminPassword>' \
    -X DELETE "http://{MS_IP}:8080/v1/analytics/groups/ax/{ax_group}/servers?uuid={QPID_UUID}&type=qpid-server"
  6. מבטלים את הרישום של שרת Qpid מההתקנה של Edge:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
    -d "type=qpid-server&region=dc-1&pod=central&uuid={QPID_UUID}&action=remove"
  7. מסירים את שרת Qpid מההתקנה של Edge:
    curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
  8. מפעילים מחדש את כל רכיבי ה-edge-qpid-server בכל הצמתים כדי לוודא שהשינוי יזוהה על ידי הרכיבים האלה:
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server wait_for_ready
  9. מסירים את edge-qpid-server ואת apigee-qpidd:
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
    $ /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall

‫Postgres ו-PostgreSQL

למרכז הנתונים שאתם מוציאים משימוש יכול להיות שרת מאסטר או שרת המתנה של Postgres. בקטעים הבאים מוסבר איך להוציא אותם משימוש:

הוצאה משימוש של שרת ראשי של Postgres

הערה: אם מוציאים משימוש את המאסטר של Postgres, צריך לוודא שמקדמים את אחד מהצמתים הזמינים במצב המתנה למאסטר חדש של Postgres. בזמן שהתורים של QPID מאחסנים נתונים במאגר, אם ה-Postgres הראשי לא זמין במשך זמן רב, אתם עלולים לאבד נתוני ניתוח.

כדי להוציא משימוש את ה-Postgres הראשי:

  1. מגבים את הצומת הראשי dc-1 Postgres לפי ההוראות בקישורים הבאים:
  2. מקבלים את מזהי ה-UUID של שרתי Postgres, כמו שמתואר במאמר בנושא קבלת מזהי UUID.
  3. ב-dc-1, עוצרים את edge-postgres-server ואת apigee-postgresql במאסטר הנוכחי:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
  4. בצומת ההמתנה ב-dc-2, מזינים את הפקודה הבאה כדי להפוך אותו לצומת הראשי:
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql promote-standby-to-master <IP of OLD Progress master>

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

    כדי להוסיף רשומות של מארחים ל-Postgres הראשי החדש: פועלים לפי השלבים בסעיף המתאים שלמטה:

    אם נשאר רק צומת אחד במצב המתנה

    לדוגמה, נניח שלפני הוצאה משימוש, הוגדרו שלושה צומתי Postgres. הוצאתם משימוש את המאסטר הקיים וקידמתם את אחד מצומתי ה-standby הנותרים של postgres למאסטר. כדי להגדיר את הצומת הנותר במצב המתנה, פועלים לפי השלבים הבאים:

    1. בשרת הראשי החדש, עורכים את קובץ התצורה כדי להגדיר:
      PG_MASTER=IP_or_DNS_of_new_PG_MASTER
      PG_STANDBY=IP_or_DNS_of_PG_STANDBY
    2. מפעילים שכפול בשרת הראשי החדש:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle

    אם נשאר יותר מצומת אחד במצב המתנה

    1. מוסיפים את ההגדרה הבאה בקטע [/opt/apigee/customer/application/postgresql.properties]:
      conf_pg_hba_replication.connection=host replication apigee standby_1_ip/32 trust \n host replication apigee standby_2_ip/32 trust
    2. מוודאים שהקובץ /opt/apigee/customer/application/postgresql.properties נמצא בבעלות של משתמש apigee:
      chown apigee:apigee /opt/apigee/customer/application/postgresql.properties
    3. הפעלה מחדש של apigee-postgresql:
      apigee-service apigee-postgresql restart
    4. כדי לעדכן את הגדרות השכפול בצומת המתנה:

      1. משנים את קובץ התצורה /opt/silent.conf ומעדכנים את השדה PG_MASTER עם כתובת ה-IP של ה-Postgres master החדש.
      2. מסירים את כל נתוני Postgres הישנים באמצעות הפקודה הבאה:
        rm -rf /opt/apigee/data/apigee-postgresql/
      3. מגדירים רפליקציה בצומת ההמתנה:
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
    5. כדי לוודא ש-Postgres master מוגדר בצורה נכונה, מזינים את הפקודה הבאה ב-dc-2:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
    6. הסרה והוספה של שרתי Postgresql מקבוצת הניתוח ומקבוצת הצרכנים.
      1. מסירים את שרת Postgres הישן מקבוצת הניתוח לפי ההוראות במאמר בנושא הסרת שרת Postgres מקבוצת ניתוח.
      2. מוסיפים שרת postgres חדש לקבוצת הניתוח לפי ההוראות במאמר הוספת שרת Postgres קיים לקבוצת ניתוח.
    7. מבטלים את הרישום של שרת postgres הישן מ-dc-1:
      curl -u <AdminEmailID>:<AdminPassword> -X POST http://{MS_IP}:8080/v1/servers \
      -d "type=postgres-server®ion=dc-1&pod=analytics&uuid=UUID&action=remove"
            
    8. מוחקים את שרת postgres הישן מ-dc-1:
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
    9. עכשיו אפשר להוציא משימוש את ה-Postgres הראשי הישן. הסרת ההתקנה של edge-postgres-server ושל apigee-postgresql:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server uninstall
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql uninstall

    הוצאה משימוש של Postgres במצב המתנה

    הערה: במסמכי התיעוד של התקנה באשכול של 12 צמתים, צומת dc-1 postgresql מוצג כמאסטר, אבל כדי שיהיה נוח, בקטע הזה אנחנו מניחים שצומת dc-1 postgresql הוא במצב המתנה וצומת dc-2 postgresql הוא מאסטר.

    כדי להוציא משימוש את Postgres standby, מבצעים את השלבים הבאים:

    1. פועלים לפי ההוראות במאמר קבלת מזהי UUID כדי לקבל את מזהי ה-UUID של שרתי Postgres.
    2. עוצרים את apigee-postgresql בצומת ההמתנה הנוכחי ב-dc-1:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    3. מסירים ומוסיפים שרתי PostgreSQL מקבוצת הניתוח ומקבוצת הצרכנים.
      1. מסירים את שרת Postgres הישן מקבוצת הניתוח לפי ההוראות במאמר הסרת שרת Postgres מקבוצת ניתוח.
      2. מוסיפים שרת Postgres חדש לקבוצת הניתוח לפי ההוראות במאמר הוספת שרת Postgres קיים לקבוצת ניתוח.
    4. מבטלים את הרישום של שרת postgres הישן מ-dc-1:
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
      -d "type=postgres-server&region=dc-1&pod=analytics&uuid=UUID&action=remove"
    5. מוחקים את שרת postgres הישן מ-dc-1:
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
    6. עכשיו אפשר להוציא משימוש את ה-master הישן של Postgres. הסרה של edge-postgres-server ושל apigee-postgresql:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server uninstall
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql uninstall

    ‫ZooKeeper ו-Cassandra

    בקטע הזה מוסבר איך להוציא משימוש את שרתי ZooKeeper ו-Cassandra בהגדרה של שני מרכזי נתונים.

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

    הערה לגבי ZooKeeper: כדי להבטיח שקבוצת השרתים של ZooKeeper תמשיך לפעול, צריך לשמור על קוורום של צמתים עם זכות הצבעה בזמן שינוי המאפיין ZK_HOST בקובץ התצורה. מספר צומתי ההצבעה בהגדרות חייב להיות אי-זוגי. מידע נוסף זמין במאמר בנושא משימות תחזוקה של Apache ZooKeeper.

    כדי להוציא משימוש את שרתי ZooKeeper ו-Cassandra:

    1. מגבים את הצמתים dc-1 Cassandra ו-ZooKeeper לפי ההוראות שבקישורים הבאים:
    2. מציגים את מזהי ה-UUID של שרתי ZooKeeper ו-Cassandra במרכז הנתונים שבו צמתים של Cassandra עומדים לצאת משימוש.

      apigee-adminapi.sh servers list -r dc-1 -p central -t application-datastore --admin <AdminEmailID> --pwd '<AdminPassword>' --host localhost
    3. מבטלים את הרישום של סוג השרת:
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MS_IP:8080/v1/servers -d "type=cache-datastore&type=user-settings-datastore&type=scheduler-datastore&type=audit-datastore&type=apimodel-datastore&type=application-datastore&type=edgenotification-datastore&type=identityzone-datastore&type=user-settings-datastore&type=auth-datastore&region=dc-1&pod=central&uuid=UUID&action=remove"
    4. מבטלים את הרישום של השרת:
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MS_IP:8080/v1/servers/UUID
    5. מעדכנים את קובץ התצורה כך שכתובות ה-IP של הצמתים שהוצאו משימוש יוסרו מהקטעים ZK_HOSTS ו-CASS_HOSTS.

      דוגמה: נניח שיש לכם את כתובות ה-IP‏ $IP1 $IP2 $IP3 ב-dc-1 ו-$IP4 $IP5 $IP6 ב-dc-2, ואתם מוציאים משימוש את dc-1. אחר כך צריך להסיר את כתובות ה-IP‏ $IP1 $IP2 $IP3 מקובצי התצורה.

      • רשומות קיימות בקובץ התצורה:
        ZK_HOSTS="$IP1 $IP2 $IP3 $IP4 $IP5 $IP6"
        CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1, $IP4:2,1 $IP5:2,1 $IP6:2,1”
      • רשומות חדשות בקובץ התצורה:
        ZK_HOSTS="$IP4 $IP5 $IP6"
        CASS_HOSTS="$IP4:2,1 $IP5:2,1 $IP6:2,1"
    6. מעדכנים את קובץ התצורה השקט (שעבר שינוי בשלב ה') עם כתובות ה-IP של הצמתים שהוסרו והוצאו משימוש, ומריצים את פרופיל שרת הניהול בכל הצמתים שמארחים שרתי ניהול:
      /opt/apigee/apigee-setup/bin/setup.sh -p ms -f updated_config_file
    7. מעדכנים את קובץ התצורה עם כתובות ה-IP של הצמתים שהוצאו משימוש ומריצים את הפרופיל MP/RMP בכל הצמתים של הנתב ומעבד הבקשות:
      • אם Edge Router ו-Message Processor מוגדרים באותו צומת, מזינים:
        /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f updated_config_file
      • אם Edge Router ו-Message Processor מוגדרים בצמתים נפרדים, מזינים את הפרטים הבאים:

        לנתב:

        /opt/apigee/apigee-setup/bin/setup.sh -p r -f updated_config_file

        למעבד הבקשות:

        /opt/apigee/apigee-setup/bin/setup.sh -p mp -f updated_config_file
    8. מגדירים מחדש את כל צומתי Qpid, עם כתובות ה-IP של הצמתים שהוצאו משימוש שהוסרו מקובץ התגובה:
      /opt/apigee/apigee-setup/bin/setup.sh -p qs -f updated_config_file
    9. מגדירים מחדש את כל צמתי Postgres, ומסירים מקובץ התגובה את כתובות ה-IP של הצמתים שהוצאו משימוש:
      /opt/apigee/apigee-setup/bin/setup.sh -p ps -f updated_config_file
    10. שינוי מרחב המפתחות system_auth. אם הפעלתם אימות של Cassandra בצומת קיים של Cassandra, אתם צריכים לעדכן את פקטור הרפליקציה של מרחב המפתחות system_auth. כדי לעשות את זה, מריצים את הפקודה הבאה:
      ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'dc-2': '3'};

      הפקודה הזו מגדירה את פקטור הרפליקציה ל-'3', ומציינת שלושה צומתי Cassandra באשכול. משנים את הערך הזה לפי הצורך.

      אחרי השלמת השלב הזה, הטופולוגיה של Cassandra לא אמורה לכלול את dc-1 באף אחד ממרחבי המפתחות.

    11. מוציאים משימוש את צומתי Cassandra ב-dc-1, אחד אחרי השני.

      כדי להוציא משימוש את צומתי Cassandra, מזינים את הפקודה הבאה:

      /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP -u cassandra -pw '<AdminPassword>' decommission
    12. בודקים את החיבור של צמתי Cassandra מ-dc-1 באמצעות אחת מהפקודות הבאות:
      /opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra -p '<AdminPassword>'

      או פקודת אימות משנית להפעלה בצומת שהוצא משימוש:

      /opt/apigee/apigee-cassandra/bin/nodetool netstats

      הפקודה שלמעלה אמורה להחזיר:

      Mode: DECOMMISSIONED
    13. מריצים את פרופיל ה-DS לכל הצמתים של Cassandra ו-ZooKeeper ב-dc-2:
      /opt/apigee/apigee-setup/bin/setup.sh -p ds -f updated_config_file
    14. מפסיקים את apigee-cassandra ו-apigee-zookeeper ב-dc-1:
      apigee-service apigee-cassandra stop
      apigee-service apigee-zookeeper stop
    15. מסירים את apigee-cassandra ואת apigee-zookeeper ב-dc-1:
      apigee-service apigee-cassandra uninstall
      apigee-service apigee-zookeeper uninstall

    מחיקת הקישורים מ-dc-1

    כדי למחוק את הקישורים מ-dc-1:

    1. מוחקים את הקישורים מ-dc-1.
      1. מציגים את כל הפודים הזמינים בארגון:
        curl -v -u  <AdminEmailID>:'<AdminPassword>' -X GET "http://MS_IP:8080/v1/o/ORG/pods"
      2. כדי לבדוק אם כל הקישורים הוסרו, צריך לקבל את מזהי ה-UUID של השרתים שמשויכים ל-Pods:
        curl -v -u  <AdminEmailID>:'<AdminPassword>' \
        -X GET "http://MS_IP:8080/v1/regions/dc-1/pods/gateway-1/servers"

        אם הפקודה הזו לא מחזירה אף UUID, סימן שהשלבים הקודמים הסירו את כל הקישורים, ואפשר לדלג על השלב הבא. אם לא, עוברים לשלב הבא.

      3. מסירים את כל הקישורים לשרת עבור מזהי ה-UUID שהתקבלו בשלב הקודם:
        curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MS_IP:8080/v1/servers/UUID
      4. ביטול השיוך של הארגון ל-pod:
        curl -v -u  <AdminEmailID>:'<AdminPassword>'  "http://MS_IP:8080/v1/o/ORG/pods" -d "action=remove&region=dc-1&pod=gateway-1" -H "Content-Type: application/x-www-form-urlencoded" -X POST
    2. מוחקים את ה-Pods:
      curl -v -u <AdminEmailID>:'<AdminPassword>' "http://MS_IP:8080/v1/regions/dc-1/pods/gateway-1" -X DELETE
    3. מוחקים את האזור.
      curl -v -u <AdminEmailID>:'<AdminPassword>'  "http://MS_IP:8080/v1/regions/dc-1" -X DELETE

    בשלב הזה, סיימתם את תהליך ההוצאה משימוש של dc-1.

    נספח

    פתרון בעיות

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

    1. משיגים את ה-UUID באמצעות הפקודה הבאה:
      apigee-adminapi.sh servers list -r dc-1 -p POD -t  --admin <AdminEmailID> --pwd  '<AdminPassword>’ --host localhost
    2. סוג השרת שרוצים לבטל את הרישום שלו:
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MP_IP:8080/v1/servers -d "type=TYPE=REGION=dc-1&pod=POD&uuid=UUID&action=remove"
    3. מוחקים את השרתים אחד אחרי השני:
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MP_IP:8080/v1/servers/UUID

    אימות

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

    שרת ניהול

    1. מריצים את הפקודות הבאות משרתי הניהול בכל האזורים.
      curl -v -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=central&region=dc-1
      curl -v -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=gateway&region=dc-1
      curl -v -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=analytics&region=dc-1
    2. מריצים את הפקודה הבאה בכל הרכיבים כדי לבדוק את דרישות היציאה לכל יציאות הניהול.
      curl -v http://MS_IP:8080/v1/servers/self
    3. בודקים את קבוצת הניתוח.
      curl -v  -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/o/ORG/e/ENV/provisioning/axstatus
      curl -v  -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/analytics/groups/ax
    4. צומתי Cassandra/ZooKeeper

      1. בכל צומת Cassandra, מזינים:
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> statusthrift

        הפונקציה תחזיר את הסטטוס running או not running של הצומת הספציפי הזה.

      2. בצומת אחד, מזינים:
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> ring
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> status

        הפקודות שלמעלה יחזירו מידע על מרכז הנתונים הפעיל.

      3. בצמתי ZooKeeper, קודם מזינים:
        echo ruok | nc <host> 2181
        

        הפקודה הזו מחזירה את הערך imok.

        אחר כך מזינים את הפרטים הבאים:

        echo stat | nc <host> 2181 | grep Mode
        

        הערך של Mode שיוחזר על ידי הפקודה שלמעלה יהיה אחד מהבאים: observer,‏ leader או follower.

      4. בצומת ZooKeeper אחד, מריצים את הפקודה:
        /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh >> /tmp/zk-tree.out.txt
      5. בצומת הראשי של Postgres, מריצים את הפקודה:
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

        מוודאים שבתגובה כתוב שהצומת הוא המאסטר.

      6. בצומת ההמתנה, מריצים את הפקודה:
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

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

      7. מתחברים למסד הנתונים של PostgreSQL באמצעות הפקודה הבאה:
        psql -h localhost -d apigee -U postgres

        כשמופיעה בקשה, מזינים את הסיסמה של המשתמש postgres (ברירת המחדל: postgres).

        לאחר מכן מריצים את השאילתה הבאה כדי לבדוק את הערך המקסימלי של client_received_start_timestamp:

        SELECT max(client_received_start_timestamp) FROM "analytics"."$org.$env.fact" LIMIT 1;

      יומנים

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