Edge for Private Cloud v4.18.01
במסמך הזה מוסבר איך מוסיפים מרכז נתונים (שנקרא גם אזור) למרכז נתונים קיים.
שיקולים לפני הוספה של מרכז נתונים
לפני שמוסיפים מרכז נתונים, צריך להבין איך מגדירים את השרתים של 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 במרכז הנתונים הזה. במרכז הנתונים השני, קודם צריך לרשום את צמתים של 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 הראשי במרכז נתונים אחד, ואת שרת ההמתנה במרכז הנתונים השני.
אם במרכז הנתונים הקיים כבר מוגדרים שני צמתים של Postgres שפועלים במצב מאסטר/סטנדביי, כחלק מהתהליך הזה צריך לבטל את הרישום של צומת הסטנדביי הקיים ולהחליף אותו בצומת סטנדביי במרכז הנתונים החדש.
בטבלה הבאה מוצגות ההגדרות של Postgres לפני ואחרי השימוש בשני התרחישים:
לפני
אחרי
צומת ראשי אחד של 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: מרכז הנתונים החדש
- ב-dc-1, מריצים מחדש את setup.sh בצמתי Cassandra המקוריים עם קובץ התצורה החדש של dc-1 שכולל את צמתי Cassandra מ-dc-2:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1 - ב-dc-1, מריצים מחדש את setup.sh בצומת של שרת הניהול:
> /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1 - ב-dc-2, מתקינים את apigee-setup בכל הצמתים. מידע נוסף זמין במאמר התקנה של הכלי apigee-setup ב-Edge.
- ב-dc-2, מתקינים את Cassandra ו-ZooKeeper בצמתים המתאימים:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2 - ב-dc-2, מריצים את הפקודה rebuild בכל צמתים של Cassandra, ומציינים את שם האזור של dc-1:
> /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP rebuild dc-1 - ב-dc-2, מתקינים את שרת הניהול בצומת המתאים:
> /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2 - ברשת הצמתים של שרת הניהול ב-dc-2, מתקינים את apigee-provision, שמתקין את השירות apigee-adminapi.sh:
> /opt/apigee/apigee-service/bin/apigee-service apigee-provision install - ב-dc-2, מתקינים את מעבדי המסלולים וההודעות בצמתים המתאימים:
> /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2 - ב-dc-2, מתקינים את Qpid בצמתים המתאימים:
> /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2 - ב-dc-2, מתקינים את Postgres בצומת המתאים:
> /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2 - הגדרת מאסטר/המתנה של Postgres לצמתים של Postgres. צומת Postgres ב-dc-1 הוא השרת הראשי, וצומת Postgres ב-dc-2 הוא שרת התמיכה.
הערה: אם ב-dc-1 כבר מוגדר שני צומתי Postgres שפועלים במצב מאסטר/בהמתנה, אז כחלק מהתהליך הזה, משתמשים בצומת ה-Postgres הראשי הקיים ב-dc-1 בתור המאסטר, ובצומת Postgres ב-dc-2 כשרת ההמתנה. בהמשך התהליך, תבטלו את הרישום של שרת ה-Postgres הקיים במצב המתנה ב-dc-1.- בצומת המאסטר ב-dc-1, עורכים את קובץ התצורה ומגדירים את הערכים הבאים:
PG_MASTER=IPorDNSofDC1Master
PG_STANDBY=IPorDNSofDC2Standby - מפעילים את הרפליקציה במאסטר החדש:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle - בצומת ההמתנה ב-dc-2, עורכים את קובץ התצורה כדי להגדיר:
PG_MASTER=IPorDNSofDC1Master
PG_STANDBY=IPorDNSofDC2Standby - בצומת המתנה ב-dc-2, מפסיקים את השרת ומוחקים את כל נתוני Postgres הקיימים:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
> rm -rf /opt/apigee/data/apigee-postgresql/
הערה: אם יש צורך, אפשר לגבות את הנתונים האלה לפני שמוחקים אותם. - מגדירים את צומת ה-standby ב-dc-2:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- בצומת המאסטר ב-dc-1, עורכים את קובץ התצורה ומגדירים את הערכים הבאים:
- ב-dc-1, מעדכנים את הגדרות Analytics ומגדירים את הארגונים.
- ברשת הצמתים של שרת הניהול ב-dc-1, מקבלים את ה-UUID של צומת Postgres:
> apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server --admin adminEmail --pwd adminPword --host localhost
ה-UUID מופיע בסוף הנתונים שמוחזרים. שומרים את הערך.
הערה: אם ב-dc-1 מוגדרים שני צומתי Postgres שפועלים במצב מאסטר/המתנה, יופיעו שתי כתובות IP ומזהי UUID בפלט. שומרים את שני המזהים הייחודיים. לפי כתובות ה-IP, אמורה להיות לך אפשרות לקבוע איזה UUID הוא של המאסטר ואיזה UUID הוא לצומת ההמתנה. - ברשת הצומת של שרת הניהול ב-dc-2, מקבלים את ה-UUID של צומת Postgres כפי שמתואר בשלב הקודם. שומרים את הערך הזה.
- ברשת הצמתים של שרת הניהול ב-dc-1, קובעים את השם של קבוצות הניתוח וקבוצות הצרכנים. הרבה מהפקודות הבאות דורשות את המידע הזה.
כברירת מחדל, השם של קבוצת Analytics הוא axgroup-001 והשם של קבוצת הצרכנים הוא consumer-group-001. בקובץ התצורה השקט של אזור, אפשר להגדיר את השם של קבוצת הניתוח באמצעות המאפיין AXGROUP.
אם אתם לא בטוחים מה השמות של קבוצות ניתוח הנתונים ושל קבוצות הצרכנים, תוכלו להשתמש בפקודה הבאה כדי להציג אותן:
> apigee-adminapi.sh analytics list list --admin adminEmail --pwd adminPword --host Localhost
הפקודה הזו מחזירה את השם של קבוצת ניתוח הנתונים בשדה השם, ואת שם קבוצת הצרכנים בשדה של קבוצות הצרכנים. - בצומת של שרת הניהול ב-dc-1, מסירים את שרת Postgres הקיים מקבוצת הניתוח:
- מסירים את צומת Postgres מ-consumer-group:
> 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 - מסירים את צומת 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
- מסירים את צומת Postgres מ-consumer-group:
-
בצומת של שרת הניהול ב-dc-1, מוסיפים את שרתי Postgres החדשים (המאסטר/הסטאנדביי) לקבוצת הניתוח:
- מוסיפים את שני שרתי 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. - מוסיפים את שרתי ה-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
- מוסיפים את שני שרתי Postgres לקבוצת הניתוח:
- מוסיפים את שרתי ה-Qpid מ-dc-2 לקבוצת ניתוח הנתונים:
- בצומת שרת הניהול של dc-1, מקבלים את מזהי ה-UUID של צמתים ה-Qpid ב-dc-2:
> apigee-adminapi.sh רשימת השרתים -r dc-2 -p Central -t qpid-server --admin adminEmail --pwd adminPwordID – הערך Localhost
שומרים את הערכים האלה. - ברשת הצמתים של שרת הניהול ב-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 - בצומת של שרת הניהול ב-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
- בצומת שרת הניהול של dc-1, מקבלים את מזהי ה-UUID של צמתים ה-Qpid ב-dc-2:
- מבטלים את הרישום ומוחקים את שרת ה-Postgres הישן במצב המתנה מ-dc-1:
- ביטול הרישום של שרת dc-1 ההמתנה הנוכחי:
> apigee-adminapi.sh השרתים מבטלים רישום -u UUID -r dc-1 -p analytics -t postgres-server -Y --admin adminEmail --pwd adminPword --host Localhost Post
כאשר UUgrID הוא הצומת הישן של מארח - מוחקים את שרת ה-Postgres הקיים dc-1 במצב המתנה:
הערה: הפקודה הזו לא מסירה את צומת שרת Postgres. הוא רק מסיר אותו מרשימת צמתים הקצה. אם צריך, תוכלו להסיר את Postgres מהצומת מאוחר יותר.
> apigee-adminapi.sh servers delete -u UUID --admin adminEmail --pwd adminPword --host localhost
- ביטול הרישום של שרת dc-1 ההמתנה הנוכחי:
- ברשת הצמתים של שרת הניהול ב-dc-1, מקבלים את ה-UUID של צומת Postgres:
- מעדכנים את מרחבי המפתחות של Cassandra בגורם השכפול הנכון לשני מרכזי הנתונים. צריך להריץ את השלב הזה רק פעם אחת בכל שרת Cassandra באחד ממרכזי הנתונים:
הערה: בכל הפקודות הבאות, גורם הרפליקציה מוגדר ל-3, כלומר שלושה צמתים של Cassandra באשכול. משנים את הערך הזה לפי הצורך להתקנה.- מפעילים את הכלי cqlsh של Cassandra:
> /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP - מריצים את פקודות ה-CQL הבאות בהודעת ה-prompt "cqlsh>" כדי להגדיר את רמות היצירה של מרחבי המפתחות של Cassandra:
- cqlsh> ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- כדי להציג את מרחבי המפתחות, משתמשים בפקודה:
cqlsh> select * from system.schema_keyspaces; - יציאה מ-cqlsh:
cqlsh> exit
- מפעילים את הכלי cqlsh של Cassandra:
- מריצים את הפקודה הבאה של nodetool בכל צמתים של Cassandra ב-dc-1 כדי לפנות זיכרון:
> /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP cleanup - לכל ארגון וסביבה שרוצים לתמוך בהם במרכזי הנתונים:
- בצומת של שרת הניהול ב-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 הוא שם ה-gateway pod כפי שמוגדר במאפיין MP_POD בקובץ התצורה של dc-2. - מוסיפים את מעבדי ההודעות החדשים לארגון ולאווירה:
- ברשת הצמתים של שרת הניהול ב-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 מופיעים בסוף הנתונים שמוחזרים. שומרים את הערכים האלה. - בצומת שרת הניהול של dc-1, עבור כל מעבד הודעות
ב-dc-2, מוסיפים את מעבד ההודעות לסביבה עבור הארגון:
> apigee-adminapi.sh orgs שרתי envs add -o orgName -e envName -u UhostPadminID --admin Email --pwd UhostPadminEmail --pwd
- ברשת הצמתים של שרת הניהול ב-dc-2, מקבלים את מזהי ה-UUID של צמתים של מעבדי ההודעות ב-dc-2:
- בצומת של שרת הניהול ב-dc-1, בודקים את הארגון:
> apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName --admin adminEmail --pwd adminPword --host localhost
כאשר apiProxyName הוא השם של שרת proxy ל-API שנפרס בארגון.
- בצומת של שרת הניהול ב-dc-1, מוסיפים את ה-MP_POD החדש לארגון: