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

-
Postgres
כברירת מחדל, Edge מתקין את כל צומתי Postgres במצב מאסטר. עם זאת, אם יש לכם כמה מרכזי נתונים, אתם מגדירים צומתי Postgres לשימוש בשכפול מסוג master-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 הישן במצב המתנה ב-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, מריצים את פקודת הבנייה מחדש בכל צומתי Cassandra, ומציינים את שם האזור של dc-1:
/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1
צריך להעביר את שם המשתמש והסיסמה רק אם הפעלתם אימות JMX ל-Cassandra.
- ב-dc-2, מתקינים את שרת הניהול בצומת המתאים:
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
- בצומת Management Server ב-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 master/standby לצומתי Postgres. צומת Postgres ב-dc-1 הוא המאסטר, וצומת Postgres ב-dc-2 הוא השרת במצב המתנה.
- בצומת הראשי ב-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/אם צריך, אפשר לגבות את הנתונים האלה לפני שמוחקים אותם.
- מגדירים את הצומת במצב המתנה ב-dc-2:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- בצומת הראשי ב-dc-1, עורכים את קובץ התצורה כדי להגדיר:
- ב-dc-1, מעדכנים את הגדרות הניתוח ומגדירים את הארגונים.
- בצומת Management Server של dc-1, מקבלים את ה-UUID של צומת Postgres:
apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \ --admin adminEmail --pwd adminPword --host localhost
ה-UUID מופיע בסוף הנתונים שמוחזרים. שומרים את הערך הזה.
- בצומת Management Server של dc-2, מקבלים את ה-UUID של צומת Postgres, כמו שמוצג בשלב הקודם. שומרים את הערך הזה.
- בצומת Management Server של dc-1, מזהים את השם של קבוצות הניתוח והצרכנים. רבות מהפקודות שבהמשך דורשות את המידע הזה.
כברירת מחדל, השם של קבוצת הניתוח הוא "axgroup-001", והשם של קבוצת הצרכנים הוא "consumer-group-001". בקובץ התצורה השקט של אזור, אפשר להגדיר את השם של קבוצת הניתוח באמצעות המאפיין
AXGROUP.אם אתם לא בטוחים מה השמות של קבוצות הניתוח והצרכנים, אתם יכולים להשתמש בפקודה הבאה כדי להציג אותם:
apigee-adminapi.sh analytics groups list \ --admin adminEmail --pwd adminPword --host localhost
הפקודה הזו מחזירה את שם קבוצת הניתוח בשדה name, ואת שם קבוצת הצרכנים בשדה consumer-groups.
- בצומת Management Server של dc-1, מסירים את שרת Postgres הקיים מקבוצת הניתוח:
- מסירים את צומת 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
- מסירים את צומת 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
- מסירים את צומת Postgres מקבוצת הצרכנים:
- בצומת Management Server של 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 לקבוצת הניתוח:
- בצומת Management Server של 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 מופיעים בסוף הנתונים שמוחזרים. שומרים את הערכים האלה.
- בצומת Management Server של 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 - בצומת Management Server של 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
- בצומת Management Server של dc-1, מקבלים את מזהי ה-UUID של צומתי Qpid ב-dc-2:
- מבטלים את הרישום של שרת הגיבוי הישן של Postgres מ-dc-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.
- מוחקים את שרת הגיבוי הקיים של Postgres ב-dc-1:
apigee-adminapi.sh servers delete -u UUID \ --admin adminEmail --pwd adminPword --host localhost
- מבטלים את הרישום של שרת הגיבוי הקיים של Postgres ב-dc-1:
- בצומת Management Server של dc-1, מקבלים את ה-UUID של צומת Postgres:
- מעדכנים את מרחבי המפתחות של Cassandra עם פקטור השכפול הנכון לשני מרכזי הנתונים. צריך להריץ את השלב הזה רק פעם אחת בכל שרת Cassandra בכל אחד ממרכזי הנתונים:
- מפעילים את הכלי
cqlshשל Cassandra:/opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
- מריצים את פקודות ה-CQL הבאות בשורת הפקודה "cqlsh>" כדי להגדיר את רמות הרפליקציה של מרחבי המפתחות של Cassandra:
ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };- מציגים את מרחבי המפתחות באמצעות הפקודה:
select * from system.schema_keyspaces;
- יציאה
cqlsh:exit
- מפעילים את הכלי
- מריצים את הפקודה הבאה של
nodetoolבכל צומתי Cassandra ב-dc-1 כדי לפנות זיכרון:/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup
צריך להעביר את שם המשתמש והסיסמה רק אם הפעלתם אימות JMX ל-Cassandra.
- לכל ארגון ולכל סביבה שרוצים לתמוך בהם במרכזי נתונים:
- בצומת Management Server של 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 הוא השם של pod השער, כפי שמוגדר במאפיין MP_POD בקובץ התצורה dc-2.
- מוסיפים את מעבדי הבקשות החדשים לארגון ולסביבה:
- בצומת Management Server של 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 מופיעים בסוף הנתונים שמוחזרים. שומרים את הערכים האלה.
- בצומת Management Server של dc-1, לכל מעבד בקשות ב-dc-2, מוסיפים את מעבד הבקשות לסביבה של הארגון:
apigee-adminapi.sh orgs envs servers add -o orgName -e envName \ -u UUID --admin adminEmail --pwd adminPword --host localhost
- בצומת Management Server של dc-2, מקבלים את מזהי ה-UUID של צומתי מעבד בקשות ב-dc-2:
- בצומת Management Server של dc-1, בודקים את הארגון:
apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \ --admin adminEmail --pwd adminPword --host localhost
כאשר apiProxyName הוא השם של שרת proxy ל-API שנפרס בארגון.
- בצומת Management Server של dc-1, מוסיפים את ה-MP_POD החדש לארגון: