במאמר הזה מתואר איך להוסיף מרכז נתונים (שנקרא גם אזור) למרכז נתונים קיים.
דברים שכדאי להביא בחשבון לפני שמוסיפים מרכז נתונים
לפני שמתקינים מרכז נתונים, צריך להבין איך מגדירים את השרתים של SymasLDAP, ZooKeeper, Cassandra ו-Postgres במרכזי הנתונים. צריך גם לוודא שהיציאות הנדרשות פתוחות בין הצמתים בשני מרכזי הנתונים.
- SymasLDAP
לכל מרכז נתונים יש שרת SymasLDAP משלו שמוגדר עם שכפול מופעל. כשמתקינים את מרכז הנתונים החדש, צריך להגדיר את SymasLDAP כך שישתמש בשכפול, וצריך להגדיר מחדש את שרת SymasLDAP במרכז הנתונים הקיים כך שישתמש בשכפול.
- 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 במרכז הנתונים הזה. במרכז הנתונים 2, מפרטים קודם את צמתי 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 במצב ראשי. עם זאת, אם יש לכם כמה מרכזי נתונים, אתם יכולים להגדיר צמתים של Postgres לשימוש בשכפול master-standby, כך שאם צומת ה-master ייכשל, צומת ה-standby יוכל להמשיך להעביר תנועה. בדרך כלל, מגדירים את שרת ה-Postgres הראשי במרכז נתונים אחד, ואת שרת הגיבוי במרכז הנתונים השני.
אם מרכז הנתונים הקיים כבר מוגדר עם שני צמתים של Postgres שפועלים במצב master/standby, במסגרת התהליך הזה צריך לבטל את הרישום של צומת ה-standby הקיים ולהחליף אותו בצומת standby במרכז הנתונים החדש.
בטבלה הבאה מוצגת תצורת Postgres לפני ואחרי שני התרחישים:
לפני אחרי צומת יחיד של Postgres ראשי ב-dc-1
צומת מאסטר של Postgres ב-dc-1
צומת Postgres במצב המתנה ב-dc-2
צומת מאסטר של Postgres ב-dc-1
צומת Postgres במצב המתנה ב-dc-1
צומת מאסטר של Postgres ב-dc-1
צומת Postgres במצב המתנה ב-dc-2
ביטול הרישום של צומת ישן של Standby Postgres ב-dc-1
- דרישות לניוד
צריך לוודא שהיציאות הנדרשות פתוחות בין הצמתים בשני מרכזי הנתונים. תרשים ניוד מופיע במאמר דרישות לניוד.
עדכון מרכז הנתונים הקיים
כדי להוסיף מרכז נתונים, צריך לבצע את השלבים להתקנה ולהגדרה של הצמתים החדשים של מרכז הנתונים, אבל גם לעדכן את הצמתים במרכז הנתונים המקורי. השינויים האלה נדרשים כי אתם מוסיפים צמתים חדשים של Cassandra ו-ZooKeeper במרכז הנתונים החדש, שצריכים להיות נגישים למרכז הנתונים הקיים, ואתם צריכים להגדיר מחדש את SymasLDAP כדי להשתמש בשכפול.
יצירת קובצי התצורה
בהמשך מוצגים קובצי התצורה השקטים של שני מרכזי הנתונים, שבהם לכל מרכז נתונים יש 6 צמתים, כפי שמוצג בטופולוגיות של התקנות. שימו לב שבקובץ ההגדרות של dc-1 נוספו הגדרות נוספות ל:
- מגדירים את SymasLDAP עם שכפול בין שני צמתי SymasLDAP.
- מוסיפים את הצמתים החדשים של 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
אם אתם משתמשים ב-Monetization, מריצים מחדש את פקודת הגדרת המונטיזציה:
/opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1
- ב-dc-2, מתקינים את
apigee-setup
בכל הצמתים. מידע נוסף זמין במאמר התקנת כלי השירות apigee-setup של Edge. - On dc-2, install Cassandra and ZooKeeper on the appropriate nodes:
/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
- בצומת של שרת הניהול ב-dc-2, מתקינים את
apigee-provision
, שמתקין את כלי השירותapigee-adminapi.sh
:/opt/apigee/apigee-service/bin/apigee-service apigee-provision install
- ב-dc-2, מתקינים את Routes ואת Message Processors בצמתים המתאימים:
/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, מעדכנים את הגדרות הניתוח ומגדירים את הארגונים.
- בצומת של שרת הניהול של 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, קובעים את השם של קבוצות הניתוח והצרכנים. הרבה מהפקודות שבהמשך דורשות את המידע הזה.
כברירת מחדל, השם של קבוצת הניתוח הוא axgroup-001, והשם של קבוצת הצרכנים הוא consumer-group-001. בקובץ ההגדרות השקט לאזור, אפשר להגדיר את השם של קבוצת הניתוח באמצעות המאפיין
AXGROUP
.אם אתם לא בטוחים בשמות של קבוצות הניתוח והצרכנים, תוכלו להשתמש בפקודה הבאה כדי להציג אותם:
apigee-adminapi.sh analytics groups list \ --admin adminEmail --pwd adminPword --host localhost
הפקודה הזו מחזירה את השם של קבוצת הניתוח בשדה 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 לקבוצת הצרכנים בתור שרת ראשי/גיבוי:
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 לקבוצת analytics (מריצים את שתי הפקודות):
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
אם אתם משתמשים ב-Monetization, מוסיפים את צמתי Qpid לקבוצת MINT בצומת Management Server של dc-1:
apigee-adminapi.sh analytics groups qpid_server \ add -g mxgroup001 -u UUID_1 --admin adminEmail \ --pwd adminPword --host localhost
apigee-adminapi.sh analytics groups qpid_server \ add -g mxgroup001 -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.
- מוחקים את שרת הגיבוי הקיים dc-1 Postgres:
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
- מריצים את פקודות ה-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.
- לכל ארגון ולכל סביבה שרוצים לתמוך בהם במרכזי נתונים שונים:
- בצומת של שרת הניהול של dc-1, מוסיפים את MP_POD החדש אל
Organization:
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:
- בצומת Management Server של 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 החדש אל
Organization:
אם אתם משתמשים במונטיזציה, צריך להתקין את צומת המונטיזציה ב-DC2.
מריצים את פקודת ההגדרה של MINT בצמתים של שרת הניהול ומעבד ההודעות ב-DC2:
/opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1