Edge for Private Cloud v4.18.05
במסמך הזה מוסבר איך מוסיפים מרכז נתונים (שנקרא גם אזור) למרכז נתונים קיים.
שיקולים לפני שמוסיפים מרכז נתונים
לפני שמוסיפים מרכז נתונים, צריך להבין איך מגדירים את השרתים של 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: מרכז הנתונים החדש
כדי להוסיף מרכז נתונים חדש:
- ב-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, עורכים את קובץ התצורה כדי להגדיר:
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, מעדכנים את הגדרות 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-2, מקבלים את ה-UUID של צומת Postgres כפי שמתואר בשלב הקודם. שומרים את הערך הזה.
- ברשת הצמתים של שרת הניהול ב-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.
- בצומת של שרת הניהול ב-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 שפועלים במצב 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 מקבוצת הצרכנים:
- בצומת של שרת הניהול ב-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 לקבוצת הצרכנים בתור שרתי 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
- מוסיפים את שני שרתי Postgres לקבוצת הניתוח:
- מוסיפים את שרתי Qpid מ-dc-2 לקבוצת הניתוח:
- ברשת הצומת של שרת הניהול ב-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 מופיעים בסוף הנתונים המוחזרים. שומרים את הערכים האלה.
- בצומת של שרת הניהול ב-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:
- מבטלים את הרישום של שרת ה-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 standby:
apigee-adminapi.sh servers delete -u UUID \ --admin adminEmail --pwd adminPword --host localhost
- מבטלים את הרישום של שרת ה-Postgres הקיים dc-1 במצב המתנה:
- בצומת של שרת הניהול ב-dc-1, מקבלים את ה-UUID של צומת Postgres:
- מעדכנים את מרחבי המפתחות של Cassandra בגורם השכפול הנכון לשני מרכזי הנתונים. צריך להריץ את השלב הזה רק פעם אחת בכל שרת Cassandra באחד ממרכזי הנתונים:
- מפעילים את הכלי
cqlsh
של Cassandra:/opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
- כדי להגדיר את רמות היצירה של מרחבי המפתחות ב-Cassandra, מריצים את פקודות ה-CQL הבאות בהודעת ה-prompt "cqlsh>":
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 -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 הוא שם אשכול השער כפי שמוגדר במאפיין 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 servers add -o orgName -e envName \ -u UUID --admin adminEmail --pwd adminPword --host localhost
- בצומת של שרת הניהול ב-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 החדש לארגון: