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

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

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

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

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

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

  • חסימת כל התעבורה של זמן הריצה והניהול למרכז הנתונים שמוציאים משימוש והפנייתה למרכזי נתונים אחרים.
  • אחרי הוצאת מרכז הנתונים משימוש, הקיבולת של אשכול Apigee תפחת. כדי לפצות על כך, כדאי להגדיל את הקיבולת במרכזי הנתונים שנותרו או להוסיף מרכזי נתונים לאחר הוצאתם משימוש.
  • במהלך תהליך ההוצאה משימוש, יש סיכון לאובדן נתונים אנליטיים, בהתאם לרכיבי הניתוח שמותקנים במרכז הנתונים שמוצא משימוש. מידע נוסף זמין במאמר הוספה או הסרה של צמתי 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-ui)
  2. שרת ניהול (edge-management-server)
  3. Symas LDAP ‏ (apigee-openldap)
  4. נתב (נתב קצה)
  5. Message Processor (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

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

נתב

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

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

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

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

  1. משביתים את הגישה לנתבים על ידי חסימת יציאה 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. כדי להציג את רשימת ה-pods של השערים שזמינים בארגון, מריצים את הפקודה הבאה:
    curl -u  <AdminEmailID>:'<AdminPassword>' -X GET "http://{MS_IP}:8080/v1/organizations/{ORG}/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). ב-dc-1 מוגדרים שני צמתי Qpid, ולכן צריך לבצע את השלבים הבאים עבור שני הצמתים:

  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 בכל הצמתים כדי לוודא שהשינוי נקלט על ידי הרכיבים האלה:
    $ /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 master:

  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 שנותרו לשרת ראשי. כדי להגדיר את צומת ההמתנה שנותר, פועלים לפי השלבים הבאים:

    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 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 standby

    הערה: במסמכי התיעוד של התקנת אשכול עם 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. עכשיו אפשר להוציא משימוש את ה-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 באשכול. משנים את הערך לפי הצורך.

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

      יומנים

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