התקנת מרכז נתונים מרובים עבור API BaaS

Edge for Private Cloud גרסה 4.17.05

אתם יכולים להתקין את API BaaS בכמה מרכזי נתונים באמצעות הגדרה פעילה/פעילה. במאמר הזה מוסבר איך להוסיף מרכז נתונים של BaaS למרכז נתונים קיים של BaaS.

הוספת מרכז נתונים כשמשתפים את אשכול Cassandra עם Edge

בכל מרכזי הנתונים צריך להיות אותו מספר של צומתי Cassandra. בהתקנה של API BaaS אפשר להשתמש באשכול Cassandra משלה, או לשתף אשכול Cassandra עם Edge.

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

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

כדי להוסיף מרכז נתונים חדש של BaaS (מרכז נתונים 2), צריך לבצע את השלבים להתקנה ולהגדרה של מרכז הנתונים החדש, אבל צריך גם לעדכן את מרכז הנתונים המקורי של BaaS (מרכז נתונים 1) . השינויים האלה נדרשים מהסיבות הבאות:

  • אתם מוסיפים צומתי Cassandra חדשים במרכז הנתונים החדש, שצריכים להיות נגישים למרכז הנתונים הקיים.
  • צריך להגדיר את פרטי השכפול שמשמשים את הצמתים של BaaS Stack במרכז הנתונים הראשון, כך שיכללו מידע ממרכז הנתונים השני. אי אפשר לבצע את ההגדרה הזו עד שמרכז הנתונים השני יותקן.

כדי לבצע את העדכונים האלה במרכז נתונים 1, מעדכנים את קובץ התצורה המקורי ששימש להתקנת מרכז נתונים 1, ואז מריצים מחדש את apigee-setup בצומתי Cassandra של מרכז נתונים 1. אם אשכול Cassandra של מרכז נתונים 1 משותף עם התקנת Edge, צריך לעדכן גם את Management Server.

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

כדי להתקין את מרכז הנתונים הראשון, משתמשים בהגדרות שמוצגות במאמר התקנת API BaaS. קובץ התצורה לא צריך לכלול מידע על מרכז נתונים 2 בזמן ההתקנה של מרכז נתונים 1.אתם מוסיפים מידע לקובץ התצורה אחרי ההתקנה של מרכז נתונים 2.

בהמשך מוצגים קובצי התצורה של מרכז נתונים 2. קובץ התצורה הזה מניח שאתם מתקינים את dc-2 ב-10 צמתים, כמו שמתואר בקטע טופולוגיות התקנה. אם מתקינים ב-7 צמתים, צריך לשנות את הקובץ הזה בהתאם.

שימו לב שקובץ התצורה של מרכז הנתונים השני (dc-2) מכיל מידע על מרכז הנתונים הראשון (dc-1):

# Specify IP address or DNS name of node for dc-2.
IP1=192.168.1.1   # ElasticSearch
IP2=192.168.1.2   # ElasticSearch
IP3=192.168.1.3   # ElasticSearch
IP4=192.168.1.4   # API BaaS Stack
IP5=192.168.1.5   # API BaaS Stack
IP6=192.168.1.6   # API BaaS Stack
IP7=192.168.1.7   # API BaaS Portal
IP8=192.168.1.8   # Cassandra dc-2 (shared with Edge or standalone)
IP9=192.168.1.9   # Cassandra dc-2 (shared with Edge or standalone)
IP10=192.168.1.10  # Cassandra dc-2 (shared with Edge or standalone)

# Specify node information for dc-1
IP11=192.168.1.11   # Cassandra dc-1 (shared with Edge or standalone)
IP12=192.168.1.12   # Cassandra dc-1 (shared with Edge or standalone)
IP13=192.168.1.13   # Cassandra dc-1 (shared with Edge or standalone)
IP14=192.168.1.14   # API BaaS Stack
IP15=192.168.1.15   # API BaaS Stack

# Must resolve to IP address or DNS name of host - not to 127.0.0.1 or localhost.
HOSTIP=$(hostname -i)

# Define the API BaaS administrator account.  
AS_ADMIN="superuser"    # User name - default is "superuser".
AS_ADMIN_EMAIL=stackAdmin@email.com
AS_PASSWD=stackAdminPWord

# Specify Cassandra data center and rack suffix.
# List dc-2 nodes first, then dc-1.
# Must use IP addresses for CASS_HOSTS, not DNS names.
# CASS_HOSTS="$IP8:2,1 $IP9:2,1 $IP10:2,1 $IP11:1,1 $IP12:1,1 $IP13:1,1"

# Specify the Cassandra region.
REGION=dc-2

# Cassandra uname/pword.
# Even if Cassandra authentication is disabled,
# you must still pass values for these properties.
CASS_USERNAME=cassandra    # Default value
CASS_PASSWORD=cassandra    # Default value

# Specify BaaS Cassandra connection information.
# Specify the data center name as dc-2.
BAAS_CASS_LOCALDC=dc-2    

# Specify both data centers.
BAAS_CASS_DC_LIST=dc-1,dc-2

# Replication is in the form "dataCenterName:#CassandraNodes". 
# Specify both data centers.
BAAS_CASS_REPLICATION=dc-1:3,dc-2:3

# Defines the initial contact points for members of the BaaS cluster. 
# Specify the IP address of no more than two Stack nodes per data center.
# Specify both data centers. 
BAAS_CLUSTER_SEEDS="dc-1:$IP14,dc-1:$IP15,dc-2:$IP4,dc-2:$IP5"

# ElasticSearch IPs or DNS names, separated by spaces, for dc-2.
ES_HOSTS="$IP1 $IP2 $IP3"

# API BaaS Stack information.
# Default cluster name is "apigee_baas"
BAAS_USERGRID_CLUSTERNAME="apigee_baas" 

# URL and port of the load balancer for the API BaaS Stack nodes, 
# or IP/DNS and port 8080 of a single Stack node with no load balancer.
BAAS_USERGRID_URL=http://myloadbalancer:8443

# API BaaS Portal information.
# URL and port number of load balancer, if there is one in front of the Portal,
# or the URL and port of the Portal node.  
BAAS_PORTAL_URL="http://$IP7:9000"

# Portal port. Default value is 9000.
BAAS_PORTAL_LISTEN_PORT=9000 

# SMTP information. BaaS requires an SMTP server.
SMTPHOST=smtp.gmail.com
SMTPPORT=465
SMTPUSER=your@email.com
SMTPPASSWORD=yourEmailPassword
SMTPSSL=y

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

  1. מתקינים את מרכז הנתונים הראשון, כמו שמתואר במאמר התקנת API BaaS. המסמך הזה כולל את קובץ התצורה שמשמש להתקנת מרכז נתונים 1.
  2. יוצרים את קובץ התצורה של dc-2 כמו שמתואר למעלה.
  3. מתקינים את Cassandra, כחלק מהתקנה קיימת של Edge או כאשכול נפרד ל-BaaS:
    1. מתקינים את כלי השירות apigee-setup של Edge בצומת הראשון של Cassandra ב-dc-2, מכונה 8, באמצעות ההליך עם האינטרנט או בלי האינטרנט. מידע נוסף זמין במאמר התקנת כלי השירות apigee-setup של Edge.
    2. בשורת הפקודה, מריצים את סקריפט ההגדרות כדי להתקין את Cassandra בצומת הראשון:
      > ‎/opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile

      האפשרות "‎-p c" מציינת שצריך להתקין את Cassandra.

      קובץ התצורה צריך להיות נגיש או קריא למשתמש "apigee".
    3. חוזרים על שלבים 3 ו-4 בשאר צומתי Cassandra, מכונות 9 ו-10, ב-dc-2.
  4. בצומתי Cassandra של dc-1, עורכים את קובץ התצורה כדי להוסיף את צומתי Cassandra ממרכז הנתונים השני, בהתאם לאופן שבו התקנתם את Cassandra:

    # List dc-1 nodes first, then dc-2,
    # including Cassandra data center and rack suffix
    CASS_HOSTS="$IP11:1,1 $IP12:1,1 $IP13:1,1 $IP8:2,1 $IP9:2,1 $IP10:2,1"
  5. בצומת Cassandra הראשון של dc-1, מריצים את setup.sh עם קובץ התצורה החדש של dc-1 שכולל את צומתי Cassandra מ-dc-2:
    > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  6. חוזרים על שלבים 6 ו-7 בשאר צומתי Cassandra ב-dc-1.
  7. אם אתם מתחברים לאשכול Cassandra של dc-1 שמשותף עם Edge, מוסיפים את צומתי Cassandra של dc-2 לקובץ התצורה של צומת Management Server של dc-1 ומריצים את setup.sh:
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. מעדכנים את מרחבי המפתחות של Cassandra עם פקטור השכפול הנכון לשני מרכזי הנתונים. צריך להריץ את השלב הזה רק פעם אחת בכל שרת Cassandra בכל אחד ממרכזי הנתונים:

    הערה: כל הפקודות שבהמשך מגדירות את פקטור הרפליקציה ל-"3", מה שמציין שלושה צומתי Cassandra באשכול. משנים את הערך הזה לפי הצורך בהתקנה.
    1. מפעילים את כלי השירות cqlsh של Cassandra:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. מריצים את פקודות ה-CQL הבאות בשורת הפקודה "cqlsh>‎" כדי להגדיר את רמות הרפליקציה של מרחבי המפתחות של Cassandra:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      4. cqlsh> ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      5. cqlsh> ALTER KEYSPACE "system_auth" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      6. מציגים את מרחבי המפתחות באמצעות הפקודה:
        cqlsh> select * from system.schema_keyspaces;
      7. יוצאים מ-cqlsh:
        cqlsh> exit
  9. בכל הצמתים של Cassandra ב-dc-2, מריצים את הפקודה rebuild ומציינים את שם האזור של dc-1:
    > ‎/opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP rebuild dc-1
  10. מריצים את הפקודה "nodetool status" בכל צומת של Cassandra ומוודאים שבכל הצמתים של Cassandra הערך של "Owns" הוא "100%":
    > /opt/apigee/apigee-cassandra/bin/nodetool status
  11. מתקינים את BaaS ב-dc-2:
    1. עורכים את קובץ התצורה כך שיכלול רק את צומתי Cassandra ב-dc-2:
      # List dc-2 Cassandra nodes,
      # omitting Cassandra data center and rack suffix
      CASS_HOSTS="$IP8 $IP9 $IP10"
    2. מתקינים את ElasticSearch בצמתים 4, 5 ו-6 של dc-2:
      > ‎/opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. מתקינים את BaaS Stack בצמתים 4, 5 ו-6 של dc-2:
      > ‎/opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile
    4. מתקינים את פורטל BaaS במכונה 7:
      > ‎/opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. מעדכנים את הצמתים של BaaS Stack במרכז הנתונים הראשון:
    1. בצומת הראשון של BaaS Stack במרכז הנתונים 1, עורכים את /opt/apigee/customer/application/usergrid.properties בעורך. אם הקובץ לא קיים, יוצרים אותו.
    2. מוסיפים את המאפיינים הבאים לקובץ usergrid.properties:
      # Same value as BAAS_CLUSTER_SEEDS in the dc-2 קובץ תצורה,
      # without double quotes.
      usergrid-deployment_usergrid.cluster.seeds=dc-1:dc1StackIP1,dc-1:dc1StackIP2,dc-2:dc2StackIP1,dc-2:dc2StackIP2

      # Same value as BAAS_CASS_DC_LIST in the dc-2 config file.
      usergrid-deployment_usergrid.cluster.region.list=dc-1,dc-2
    3. חוזרים על שלבים א' ו-ב' בשאר הצמתים של BaaS Stack.
    4. מפעילים מחדש את כל הצמתים של BaaS Stack.

      הערה: כשמפעילים מחדש את צומתי BaaS Stack, צריך להפעיל אותם מחדש באותו סדר שבו הם מופיעים ב-BAAS_CLUSTER_SEEDS. ‫BAAS_CLUSTER_SEEDS מציג עד שני צמתים של Stack. אחרי שמפעילים מחדש את שני הצמתים האלה לפי הסדר, אפשר להפעיל מחדש את שאר הצמתים בכל סדר שרוצים.

      > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  13. מעדכנים את הערכים של מרחב המפתחות של BaaS. צריך להגדיר את מרחבי המפתחות האלה לשכפול בזמן ההתקנה, אבל לא בזמן הריצה. הסרת הרפליקציה גם חוסכת בזיכרון של Cassandra.

    צריך להריץ את השלב הזה רק פעם אחת בכל שרת Cassandra בכל אחד ממרכזי הנתונים:
    1. מפעילים את כלי השירות cqlsh של Cassandra:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. מריצים את פקודות ה-CQL הבאות כדי להגדיר את רמות השכפול של מרחבי המפתחות של Cassandra:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. מציגים את מרחבי המפתחות באמצעות הפקודה:
        cqlsh> select * from system.schema_keyspaces;
      4. יוצאים מ-cqlsh:
        cqlsh> exit

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

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

  1. בכל הצמתים של BaaS Stack, בודקים את הסטטוס:
    > curl 0:8080/status
  2. בודקים שהקריאה ל-API של האסימון פועלת:
    > curl -X POST "http://localhost:8080/management/token" -d '{"grant_type":"password", "username":"adminEmail","password":"pWord"}'
  3. נסו להתחבר לפורטל BaaS של dc-2. מוודאים שכל הנתונים משוכפלים ב-dc-2, כמו אוספים שנוצרו ב-dc-1.