במאמר הזה מוסבר איך להוסיף מרכז נתונים (נקרא גם אזור) למרכז נתונים קיים.
שיקולים לפני הוספה של מרכז נתונים
לפני ההתקנה של הוספת מרכז נתונים, צריך להבין איך להגדיר את השרתים OpenLDAP, ZooKeeper, Cassandra ו-Postgres במרכזי הנתונים. בנוסף, צריך לוודא שהיציאות הדרושות פתוחות בין הצמתים בשני מרכזי הנתונים.
- OpenLDAP
לכל מרכז נתונים יש שרת OpenLDAP משלו שמוגדר כאשר מופעל שכפול. כשמתקינים את מרכז הנתונים החדש, צריך להגדיר את OpenLDAP לשימוש בשכפול, ולהגדיר מחדש את שרת OpenLDAP במרכז הנתונים הקיים כדי להשתמש ברפליקציה.
- ZooKeeper
בנכס
ZK_HOSTS
של שני מרכזי הנתונים, צריך לציין את כתובות ה-IP או את שמות ה-DNS של כל צומתי התאמות גן החיות בשני מרכזי הנתונים, באותו סדר, ולסמן את הצמתים באמצעות מקש הצירוף ' :observer'. צמתים ללא המאפיין:observer
נקראים 'מצביעים'. צריך להיות לך מספר אי-זוגי של "מצביעים" בהגדרה.בטופולוגיה הזו, המארח של גן החיות במארח 9 הוא הצופה:
בקובץ התצורה לדוגמה שמוצג למטה, צומת 9 מתויג עם מקש הצירוף
:observer
כך שיהיו לך חמישה מצביעים: צמתים 1, 2, 3, 7 ו-8.בנכס
ZK_CLIENT_HOSTS
של כל מרכז נתונים, צריך לציין את כתובות ה-IP או שמות ה-DNS רק של צומתי ה-ZooKeeper במרכז הנתונים, באותו סדר, בכל הצמתים שלzoKeeper במרכז הנתונים. - Cassandra
ב-
CASS_HOSTS
בכל מרכז נתונים, חשוב לציין את כל כתובות ה-IP של Cassandra (ולא שמות ה-DNS) בשני מרכזי הנתונים. עבור מרכז נתונים 1, צריך קודם לרשום את צומתי Cassandra במרכז הנתונים הזה. למרכז הנתונים 2, צריך לרשום קודם את צומתי Cassandra במרכז הנתונים הזה. הצגת רשימה של צומתי Cassandra באותו סדר, עבור כל הצמתים של Cassandra במרכז הנתונים.לכל צומתי Cassandra חייבת להיות הסיומת ':d,r'. לדוגמה: 'ip:1,1 = data center 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.160.162.24.
הצומת הראשון של אזור הזמינות 1 של כל מרכז נתונים ישמש כשרת המקור. במודל הפריסה הזה, ההגדרה של Cassandra תיראה כך:
-
Postgres
כברירת מחדל, Edge מתקין את כל צומתי Postgres במצב ראשי. עם זאת, אם יש לך כמה מרכזי נתונים, אפשר להגדיר צומתי Postgres לשימוש בשכפול של מצב המתנה, כך שאם הצומת הראשי נכשל, צומת ההמתנה יוכל להמשיך לתעבורה של השרת. בדרך כלל מגדירים את שרת ה-Postgres הראשי במרכז נתונים אחד ואת שרת ההמתנה במרכז הנתונים השני.
אם במרכז הנתונים הקיים כבר מוגדרים שני צומתי Postgres שפועלים במצב ראשי/המתנה, כחלק מהתהליך הזה צריך לבטל את הרישום של צומת ההמתנה הקיים ולהחליף אותו בצומת המתנה במרכז הנתונים החדש.
בטבלה הבאה מוצגים ההגדרות לפני ואחרי Postgres בשני התרחישים:
לפני אחרי צומת ראשי של Postgres ב-dc-1
צומת ראשי של Postgres ב-dc-1
צומת Postgres במצב המתנה ב-dc-2
צומת ראשי של Postgres ב-dc-1
צומת Postgres במצב המתנה ב-dc-1
צומת ראשי של Postgres ב-dc-1
צומת Postgres במצב המתנה ב-dc-2
ביטול הרישום של צומת מצב המתנה ישן ב-dc-1
- דרישות לגבי יציאות
עליכם לוודא שהיציאות הדרושות פתוחות בין הצמתים בשני מרכזי הנתונים. לקבלת תרשים יציאה, כדאי לעיין בדרישות לגבי יציאות.
עדכון של מרכז הנתונים הקיים
כדי להוסיף מרכז נתונים צריך לבצע את השלבים להתקנה ולהגדרה של הצמתים החדשים של מרכז הנתונים, אבל צריך גם לעדכן את הצמתים במרכז הנתונים המקורי. השינויים האלה נחוצים כי מוסיפים צמתים חדשים של Cassandra ו-zoKeeper במרכז הנתונים החדש, שצריכים להיות נגישים למרכז הנתונים הקיים, וצריך להגדיר מחדש את OpenLDAP כדי להשתמש ברפליקציה.
יצירת קובצי התצורה
למטה מוצגים קובצי התצורה השקטים של שני מרכזי הנתונים, כאשר לכל מרכז נתונים יש 6 צמתים, כפי שמתואר בקטע טופולוגיות של התקנות. שימו לב שקובץ התצורה של dc-1 מוסיף הגדרות נוספות כדי:
- הגדרת OpenLDAP עם שכפול בשני צומתי OpenLDAP.
- הוסיפו את הצמתים החדשים של Cassandra ו-zoKeeper מ-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
בכל הצמתים. למידע נוסף, ראו התקנת כלי ההגדרה של Edge apigee. - ב-dc-2, מתקינים את Cassandra ואתzoKeeper בצמתים המתאימים:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
- ב-dc-2, מריצים את הפקודה rebuild בכל צומתי 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, מתקינים את הנתיבים ואת מעבדי ההודעות בצמתים המתאימים:
/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, מעדכנים את ההגדרות האישיות של ניתוח הנתונים ומגדירים את הארגונים.
- בצומת של שרת הניהול של 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
פקודה זו מחזירה את השם של קבוצת ניתוח הנתונים בשדה השם, ואת השם של קבוצת הצרכנים בשדה של קבוצות הצרכנים.
- בצומת של שרת הניהול של dc-1, מסירים את שרת Postgres הקיים מקבוצת analytics:
- מסירים את צומת 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 מקבוצת הצרכנים:
- בצומת של שרת הניהול של dc-1, מוסיפים את שרתי המאסטר/ההמתנה החדשים
Postgres לקבוצת ניתוח הנתונים:
- מוסיפים את שני שרתי Postgres לקבוצה ב-Analytics:
apigee-adminapi.sh analytics groups postgres_server \ add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
Ehere 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 לקבוצה ב-Analytics:
- מוסיפים את שרתי ה-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:
- ביטול הרישום של שרת ההמתנה הנוכחי dc-1 Postgres:
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
- ביטול הרישום של שרת ההמתנה הנוכחי dc-1 Postgres:
- בצומת של שרת הניהול של dc-1, מקבלים את ה-UUID של צומת Postgres:
- צריך לעדכן את מרחבי המפתח של Cassandra בגורם השכפול הנכון לשני מרכזי הנתונים. צריך
להריץ את השלב הזה פעם אחת בלבד בכל שרת של Cassandra באחד ממרכזי הנתונים:
- מפעילים את תוכנת העזר
cqlsh
של Cassandra:/opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
- מריצים את פקודות ה-CQL הבאות בהנחיה 'cqlsh>' כדי להגדיר את רמות
השכפול של Cassandra keyspaces:
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 החדש לארגון:
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 החדש לארגון: