הוספה של מרכז נתונים

במסמך הזה מוסבר איך להוסיף מרכז נתונים (שנקרא גם אזור) למרכז נתונים קיים.

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

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

  • OpenLDAP

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

  • ZooKeeper

    במאפיין ZK_HOSTS של שני מרכזי הנתונים, מציינים את כתובות ה-IP או שמות ה-DNS של כל צומתי ZooKeeper משני מרכזי הנתונים, באותו סדר, ומסמנים את כל הצמתים עם המשנה ":observer". צמתים בלי המשתנה :observer נקראים "מצביעים". מספר "המצביעים" בהגדרות האישיות חייב להיות אי-זוגי.

    בטופולוגיה הזו, מארח ZooKeeper במארח 9 הוא הצופה:

    בקובץ התצורה לדוגמה שמוצג בהמשך, צומת 9 מתויג עם המשנה :observer, כך שיש חמישה מצביעים: צמתים 1, 2, 3, 7 ו-8.

    במאפיין ZK_CLIENT_HOSTS של כל מרכז נתונים, מציינים את כתובות ה-IP או שמות ה-DNS רק של צומתי ZooKeeper במרכז הנתונים, באותו סדר, לכל צומתי ZooKeeper במרכז הנתונים.

  • Cassandra

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

    לכל צומתי Cassandra חייבת להיות הסיומת "‎:d,r". לדוגמה, "‎ip:1,1" = מרכז נתונים 1 ומתלה/אזור זמינות 1, ו-"‎ip:2,1" = מרכז נתונים 2 ומתלה/אזור זמינות 1.

    לדוגמה, "192.168.124.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.168.124.205:2,1 192.168.124.206:2,1"

    הצומת הראשון במדף/אזור הזמינות 1 של כל מרכז נתונים ישמש כשרת ה-seed. במודל הפריסה הזה, ההגדרה של Cassandra תיראה כך:

  • Postgres

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

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

    בטבלה הבאה מוצגת הגדרת Postgres לפני ואחרי בשני התרחישים:

    לפני אחרי

    צומת Postgres ראשי יחיד ב-dc-1

    צומת Postgres ראשי ב-dc-1

    צומת Postgres במצב המתנה ב-dc-2

    צומת Postgres ראשי ב-dc-1

    צומת Postgres במצב המתנה ב-dc-1

    צומת Postgres ראשי ב-dc-1

    צומת Postgres במצב המתנה ב-dc-2

    ביטול הרישום של צומת ה-Postgres הישן במצב המתנה ב-dc-1

  • דרישות לגבי היציאות

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

עדכון מרכז הנתונים הקיים

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

יצירת קובצי התצורה

בהמשך מוצגים קובצי התצורה השקטים של שני מרכזי הנתונים, כאשר לכל מרכז נתונים יש 6 צמתים, כמו שמוצג בטופולוגיות התקנה. שימו לב שקובץ התצורה של dc-1 מוסיף הגדרות נוספות ל:

  • להגדיר את OpenLDAP עם שכפול בשני צומתי OpenLDAP.
  • מוסיפים את הצמתים החדשים של Cassandra ו-ZooKeeper מ-dc-2 לקובץ התצורה של dc-1.
# Datacenter 1
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP1
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=1
LDAP_PEER=$IP7
APIGEE_LDAPPW=secret
MP_POD=gateway-1
REGION=dc-1
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1 $IP7:2,1 $IP8:2,1 $IP9:2,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"
# Datacenter 2
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP7
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=2
LDAP_PEER=$IP1
APIGEE_LDAPPW=secret
MP_POD=gateway-2
REGION=dc-2
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP7:2,1 $IP8:2,1 $IP9:2,1 $IP1:1,1 $IP2:1,1 $IP3:1,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"

הוספת מרכז נתונים חדש

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

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

  • ‫dc-1: מרכז הנתונים הקיים
  • ‫dc-2: מרכז הנתונים החדש

כדי להוסיף מרכז נתונים חדש:

  1. ב-dc-1, מריצים מחדש את setup.sh בצומתי Cassandra המקוריים עם קובץ התצורה החדש של dc-1 שכולל את צומתי Cassandra מ-dc-2:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. ב-dc-1, מריצים מחדש את setup.sh בצומת של שרת הניהול:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
  3. ב-dc-2, מתקינים את apigee-setup בכל הצמתים. מידע נוסף זמין במאמר התקנת כלי השירות apigee-setup של Edge.
  4. ב-dc-2, מתקינים את Cassandra ואת ZooKeeper בצמתים המתאימים:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. ב-dc-2, מריצים את פקודת הבנייה מחדש בכל צומתי Cassandra, ומציינים את שם האזור של dc-1:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1

    צריך להעביר את שם המשתמש והסיסמה רק אם הפעלתם אימות JMX ל-Cassandra.

  6. ב-dc-2, מתקינים את שרת הניהול בצומת המתאים:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. בצומת Management Server ב-dc-2, מתקינים את apigee-provision, שמתקין את כלי השירות apigee-adminapi.sh:
    /opt/apigee/apigee-service/bin/apigee-service apigee-provision install
  8. ב-dc-2, מתקינים את הנתבים ואת מעבדי הבקשות בצמתים המתאימים:
    /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
  9. ב-dc-2, מתקינים את Qpid בצמתים המתאימים:
    /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
  10. ב-dc-2, מתקינים את Postgres בצומת המתאים:
    /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
  11. הגדרת Postgres master/standby לצומתי Postgres. צומת Postgres ב-dc-1 הוא המאסטר, וצומת Postgres ב-dc-2 הוא השרת במצב המתנה.
    1. בצומת הראשי ב-dc-1, עורכים את קובץ התצורה כדי להגדיר:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    2. מפעילים את הרפליקציה במאסטר החדש:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
    3. בצומת ההמתנה ב-dc-2, עורכים את קובץ התצורה כדי להגדיר:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    4. בצומת ההמתנה ב-dc-2, עוצרים את השרת ומוחקים את כל נתוני Postgres הקיימים:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
      rm -rf /opt/apigee/data/apigee-postgresql/

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

    5. מגדירים את הצומת במצב המתנה ב-dc-2:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
  12. ב-dc-1, מעדכנים את הגדרות הניתוח ומגדירים את הארגונים.
    1. בצומת Management Server של dc-1, מקבלים את ה-UUID של צומת Postgres:
      apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \
        --admin adminEmail --pwd adminPword --host localhost

      ה-UUID מופיע בסוף הנתונים שמוחזרים. שומרים את הערך הזה.

    2. בצומת Management Server של dc-2, מקבלים את ה-UUID של צומת Postgres, כמו שמוצג בשלב הקודם. שומרים את הערך הזה.
    3. בצומת Management Server של dc-1, מזהים את השם של קבוצות הניתוח והצרכנים. רבות מהפקודות שבהמשך דורשות את המידע הזה.

      כברירת מחדל, השם של קבוצת הניתוח הוא "axgroup-001", והשם של קבוצת הצרכנים הוא "consumer-group-001". בקובץ התצורה השקט של אזור, אפשר להגדיר את השם של קבוצת הניתוח באמצעות המאפיין AXGROUP.

      אם אתם לא בטוחים מה השמות של קבוצות הניתוח והצרכנים, אתם יכולים להשתמש בפקודה הבאה כדי להציג אותם:

      apigee-adminapi.sh analytics groups list \
        --admin adminEmail --pwd adminPword --host localhost

      הפקודה הזו מחזירה את שם קבוצת הניתוח בשדה name, ואת שם קבוצת הצרכנים בשדה consumer-groups.

    4. בצומת Management Server של dc-1, מסירים את שרת Postgres הקיים מקבוצת הניתוח:
      1. מסירים את צומת Postgres מקבוצת הצרכנים:
        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u UUID \
          -Y --admin adminEmail --pwd adminPword --host localhost

        אם dc-1 מוגדר עם שני צומתי Postgres שפועלים במצב מאסטר/המתנה, צריך להסיר את שניהם:

        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \
          -Y --admin adminEmail --pwd adminPword --host localhost
      2. מסירים את צומת Postgres מקבוצת הניתוח:
        apigee-adminapi.sh analytics groups postgres_server remove \
          -g axgroup-001 -u UUID -Y --admin adminEmail \
          --pwd adminPword --host localhost

        אם dc-1 מוגדר עם שני צומתי Postgres שפועלים במצב המתנה, צריך להסיר את שניהם:

        apigee-adminapi.sh analytics groups postgres_server \
          remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \
          --pwd adminPword --host localhost
    5. בצומת Management Server של dc-1, מוסיפים את שרתי ה-Postgres הראשיים/החלופיים החדשים לקבוצת הניתוח:
      1. מוסיפים את שני שרתי Postgres לקבוצת הניתוח:
        apigee-adminapi.sh analytics groups postgres_server \
          add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost

        כאשר UUID_1 תואם לצומת הראשי של Postgres ב-dc-1, ו-UUID_2 תואם לצומת הגיבוי של Postgres ב-dc-2.

      2. מוסיפים את שרתי ה-PG לקבוצת הצרכנים כשרת ראשי/שרת גיבוי:
        apigee-adminapi.sh analytics groups consumer_groups datastores \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
    6. מוסיפים את שרתי Qpid מ-dc-2 לקבוצת הניתוח:
      1. בצומת Management Server של dc-1, מקבלים את מזהי ה-UUID של צומתי Qpid ב-dc-2:
        apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \
          --admin adminEmail --pwd adminPword --host localhost

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

      2. בצומת Management Server של dc-1, מוסיפים את צומתי Qpid לקבוצת הניתוח (מריצים את שתי הפקודות):
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_1" --admin adminEmail \
          --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
      3. בצומת Management Server של dc-1, מוסיפים את צומתי Qpid לקבוצת הצרכנים (מריצים את שתי הפקודות):
        apigee-adminapi.sh analytics groups consumer_groups consumers \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_1" \
          --admin adminEmail --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups consumer_groups consumers \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_2" \
          --admin adminEmail --pwd adminPword --host localhost
    7. מבטלים את הרישום של שרת הגיבוי הישן של Postgres מ-dc-1 ומוחקים אותו:
      1. מבטלים את הרישום של שרת הגיבוי הקיים של Postgres ב-dc-1:
        apigee-adminapi.sh servers deregister -u UUID -r dc-1 \
          -p analytics -t postgres-server -Y --admin adminEmail \
          --pwd adminPword --host localhost

        כאשר UUID הוא צומת Postgres הישן במצב המתנה ב-dc-1.

      2. מוחקים את שרת הגיבוי הקיים של Postgres ב-dc-1:
        apigee-adminapi.sh servers delete -u UUID \
          --admin adminEmail --pwd adminPword --host localhost
  13. מעדכנים את מרחבי המפתחות של Cassandra עם פקטור השכפול הנכון לשני מרכזי הנתונים. צריך להריץ את השלב הזה רק פעם אחת בכל שרת Cassandra בכל אחד ממרכזי הנתונים:
    1. מפעילים את הכלי cqlsh של Cassandra:
      /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. מריצים את פקודות ה-CQL הבאות בשורת הפקודה "cqlsh>‎" כדי להגדיר את רמות הרפליקציה של מרחבי המפתחות של Cassandra:
      1. ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' }; 
      2. ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. מציגים את מרחבי המפתחות באמצעות הפקודה:
        select * from system.schema_keyspaces;
      4. יציאה cqlsh:
        exit
  14. מריצים את הפקודה הבאה של nodetool בכל צומתי Cassandra ב-dc-1 כדי לפנות זיכרון:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup

    צריך להעביר את שם המשתמש והסיסמה רק אם הפעלתם אימות JMX ל-Cassandra.

  15. לכל ארגון ולכל סביבה שרוצים לתמוך בהם במרכזי נתונים:
    1. בצומת Management Server של dc-1, מוסיפים את ה-MP_POD החדש לארגון:
      apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \
        --admin adminEmail --pwd adminPword --host localhost

      gateway-2 הוא השם של pod השער, כפי שמוגדר במאפיין MP_POD בקובץ התצורה dc-2.

    2. מוסיפים את מעבדי הבקשות החדשים לארגון ולסביבה:
      1. בצומת Management Server של dc-2, מקבלים את מזהי ה-UUID של צומתי מעבד בקשות ב-dc-2:
        apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \
          -t message-processor --admin adminEmail --pwd adminPword --host localhost

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

      2. בצומת Management Server של dc-1, לכל מעבד בקשות ב-dc-2, מוסיפים את מעבד הבקשות לסביבה של הארגון:
        apigee-adminapi.sh orgs envs servers add -o orgName -e envName \
          -u UUID --admin adminEmail --pwd adminPword --host localhost
    3. בצומת Management Server של dc-1, בודקים את הארגון:
      apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \
        --admin adminEmail --pwd adminPword --host localhost

      כאשר apiProxyName הוא השם של שרת proxy ל-API שנפרס בארגון.