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

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

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

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

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

  • Postgres

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

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

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

    לפני אחרי

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

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

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

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

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

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

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

    ביטול הרישום של צומת Postgres ישן במצב Standby ב-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, מריצים את הפקודה 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, מעדכנים את הגדרות Analytics ומגדירים את הארגונים.
    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, קובעים את השם של קבוצות הניתוח וקבוצות הצרכנים. רבים מהפקודות הבאות דורשות את הפרטים האלה.

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

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

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

      הפקודה הזו מחזירה את שם קבוצת Analytics בשדה 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 לקבוצת הצרכנים בתור שרתי master/standby:
        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. מבטלים את הרישום של שרת ה-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 standby:
        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 הבאות בהודעת ה-prompt "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 החדש לארגון:
      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 שנפרס בארגון.