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

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

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

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

  • SymasLDAP

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

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

  • Postgres

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

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

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

    לפני אחרי

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

    צומת מאסטר של Postgres ב-dc-1

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

    צומת מאסטר של Postgres ב-dc-1

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

    צומת מאסטר של Postgres ב-dc-1

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

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

  • דרישות לניוד

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

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

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

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

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

  • מגדירים את SymasLDAP עם שכפול בין שני צמתי SymasLDAP.
  • מוסיפים את הצמתים החדשים של 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

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

    /opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1

  3. ב-dc-2, מתקינים את apigee-setup בכל הצמתים. מידע נוסף זמין במאמר התקנת כלי השירות apigee-setup של Edge.
  4. On dc-2, install Cassandra and ZooKeeper on the appropriate nodes:
    /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. בצומת של שרת הניהול ב-dc-2, מתקינים את apigee-provision, שמתקין את כלי השירות apigee-adminapi.sh:
    /opt/apigee/apigee-service/bin/apigee-service apigee-provision install
  8. ב-dc-2, מתקינים את Routes ואת Message Processors בצמתים המתאימים:
    /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. בצומת של שרת הניהול של 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. בצומת של שרת הניהול של dc-2, מאחזרים את ה-UUID של צומת Postgres כפי שמוצג בשלב הקודם. שומרים את הערך הזה.
    3. בצומת של שרת הניהול של dc-1, קובעים את השם של קבוצות הניתוח והצרכנים. הרבה מהפקודות שבהמשך דורשות את המידע הזה.

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

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

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

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

    4. בצומת שרת הניהול של 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 שפועלים במצב master/standby, מסירים את שניהם:

        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 שפועלים במצב master/standby, צריך להסיר את שניהם:

        apigee-adminapi.sh analytics groups postgres_server \
          remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \
          --pwd adminPword --host localhost
    5. בצומת של שרת הניהול של 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. בצומת של שרת הניהול 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. בצומת של שרת הניהול dc-1, מוסיפים את צמתי Qpid לקבוצת analytics (מריצים את שתי הפקודות):
        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. בצומת של שרת הניהול של 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

        אם אתם משתמשים ב-Monetization, מוסיפים את צמתי Qpid לקבוצת MINT בצומת Management Server של dc-1:

        apigee-adminapi.sh analytics groups qpid_server \
        add -g mxgroup001 -u UUID_1 --admin adminEmail \
        --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups qpid_server \
        add -g mxgroup001 -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. מוחקים את שרת הגיבוי הקיים dc-1 Postgres:
        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. בצומת של שרת הניהול של dc-1, מוסיפים את MP_POD החדש אל Organization:
      apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \
        --admin adminEmail --pwd adminPword --host localhost

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

    2. מוסיפים את מעבדי ההודעות החדשים לארגון ולסביבה:
      1. בצומת של שרת הניהול של 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. בצומת של שרת הניהול של 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 שפריסתו בוצעה בארגון.

  16. אם אתם משתמשים במונטיזציה, צריך להתקין את צומת המונטיזציה ב-DC2.

    מריצים את פקודת ההגדרה של MINT בצמתים של שרת הניהול ומעבד ההודעות ב-DC2:

    /opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1