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

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

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

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

  • OpenLDAP

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

  • ZooKeeper

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

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

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

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

  • Cassandra

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

    לכל צומתי Cassandra חייבת להיות הסיומת ':d,r'. לדוגמה: 'ip:1,1 = data center 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.160.162.24.

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

  • Postgres

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

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

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

    לפני אחרי

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • הגדרת OpenLDAP עם שכפול בשני צומתי OpenLDAP.
  • הוסיפו את הצמתים החדשים של Cassandra ו-zoKeeper מ-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 בכל הצמתים. למידע נוסף, ראו התקנת כלי ההגדרה של Edge apigee.
  4. ב-dc-2, מתקינים את Cassandra ואתzoKeeper בצמתים המתאימים:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. ב-dc-2, מריצים את הפקודה rebuild בכל צומתי 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, מתקינים את הנתיבים ואת מעבדי ההודעות בצמתים המתאימים:
    /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 לצומתי 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

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

    4. בצומת של שרת הניהול של dc-1, מסירים את שרת Postgres הקיים מקבוצת analytics:
      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. בצומת של שרת הניהול של dc-1, מוסיפים את שרתי המאסטר/ההמתנה החדשים Postgres לקבוצת ניתוח הנתונים:
      1. מוסיפים את שני שרתי Postgres לקבוצה ב-Analytics:
        apigee-adminapi.sh analytics groups postgres_server \
          add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost

        Ehere 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 לקבוצת ניתוח הנתונים (מריצים את שתי הפקודות):
        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
    7. מבטלים את הרישום ומוחקים את שרת ההמתנה הישן של Postgres מ-dc-1:
      1. ביטול הרישום של שרת ההמתנה הנוכחי dc-1 Postgres:
        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 keyspaces:
      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 החדש לארגון:
      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. בצומת של שרת הניהול של dc-1, בודקים את הארגון:
      apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \
        --admin adminEmail --pwd adminPword --host localhost

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