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

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

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

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

    לכל צומת Cassandra צריך להיות סיומת ':d,r'; לדוגמה: ‎'ip:1,1 = data center 1 and rack/availability zone 1 and 'ip:2,1 = data center 2 and rack/availability zone 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

    ביטול הרישום של צומת 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-2, מתקינים את apigee-setup בכל הצמתים. מידע נוסף זמין במאמר התקנת כלי השירות apigee-setup של Edge.
  3. ב-dc-2, מתקינים את Cassandra ואת ZooKeeper בצמתים המתאימים:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  4. ב-dc-1, מריצים מחדש את setup.sh בצומת של שרת הניהול:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1

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

    /opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1
  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

        אם אתם משתמשים במונטיזציה, מוסיפים את צמתי Qpid לקבוצת MINT בצומת של שרת הניהול של 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. מפעילים את כלי השירות של Cassandra cqlsh:
      /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