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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ממשק המשתמש של Edge

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

/opt/apigee/apigee-service/bin/apigee-service edge-ui stop
/opt/apigee/apigee-service/bin/apigee-service edge-ui 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. מסירים את הרכיב של שרת הניהול ב-dc-1:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server uninstall

Open LDAP

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

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

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

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

    1. בודקים את המצב הנוכחי:
      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}bdb,cn=config
      changetype: modify
      delete: olcSyncRepl
      
      dn: olcDatabase={2}bdb,cn=config
      changetype: modify
      delete: olcMirrorMode
    3. מריצים את הפקודה ldapmodify:
      ldapmodify -x -w {credentials} -D "cn=admin,cn=config" -H "ldap://{HOST}:{PORT}/" -f path/to/file/break_repl.ldif

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

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

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

    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:
      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 כבר לא מבצעות רפליקה:
      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. מסירים את המשתמש עם הרשאת קריאה בלבד שהוספתם קודם:
      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. עוצרים את OpenLDAP ב-dc-1:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
  5. מסירים את הרכיב OpenLDAP ב-dc-1:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap uninstall

נתב

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

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

הערה: כאן נניח שיציאת בדיקת התקינות של הנתב, 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

מעבד בקשות

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

מאחר שמניחים שב-dc-1 יש התקנה באשכול של 12 צמתים, יש שני צמתים של Message Processor שמוגדרים ב-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, חשוב לקדם אחד מהצומתים הזמינים במצב המתנה כמאסטר 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. הוצאתם משימוש את המאסטר הקיים והעליתם לאחד מהצמתים הנותרים של postgres standby למאסטר. מגדירים את צומת המתנה שנותר לפי השלבים הבאים:

    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.
      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 מוגדר בצורה נכונה, מזינים את הפקודה הבאה ב-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 צמתים, הצומת postgresql של dc-1 מוצג כמאסטר, אבל למען הנוחות, בקטע הזה נניח שהצומת postgresql של dc-1 הוא סטנדביי והצומת postgresql של dc-2 הוא מאסטר.

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

    1. מקבלים את מזהי ה-UUID של שרתי Postgres לפי ההוראות שמפורטות בקטע קבלת מזהי UUID.
    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. עכשיו אפשר להוציא משימוש את המאסטר הישן של 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. מגבים את הצמתים של Cassandra ו-ZooKeeper ב-dc-1 לפי ההוראות שבקישורים הבאים:
    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 באשכול. משנים את הערך הזה לפי הצורך.

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

    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. הצגת רשימה של כל ה-pods הזמינים בארגון:
        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.

    נספח

    פתרון בעיות

    אם אחרי ביצוע השלבים הקודמים עדיין יש שרתי pod מסוימים, מבצעים את השלבים הבאים כדי לבטל את הרישום של השרתים ולמחוק אותם. הערה: משנים את הסוגים ואת ה-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;

      יומנים

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