בקטע הזה מוסבר באופן כללי איך להגדיר את Cassandra ב-Apigee Edge for Private Cloud כך שתהיה מודעת למארז, כדי לשנות את קנה המידה של הפעולות ב-Cassandra.
למידע נוסף על החשיבות של הגדרת המודעות למארז של טבעת Cassandra, עיינו במקורות המידע הבאים:
- Replication (תיעוד של Cassandra)
- Cassandra Architecture & Replication Factor Strategy
מה זה ארון שרתים?
ארון Cassandra הוא קיבוץ לוגי של צומתי Cassandra בתוך הטבעת. ב-Cassandra משתמשים במדפים כדי להבטיח שהרפליקות יופצו בין קבוצות לוגיות שונות. כתוצאה מכך, הפעולות נשלחות לא רק לצומת אחד, אלא לכמה צמתים, כל אחד במדף נפרד, מה שמשפר את הזמינות ואת העמידות בפני תקלות.
בדוגמאות שבקטע הזה נעשה שימוש בשלושה ארונות Cassandra, שזה מספר הארונות שנתמכים על ידי Apigee בטופולוגיות של סביבת הייצור.
בהתקנת ברירת המחדל של Cassandra ב-Apigee Edge for Private Cloud, המערכת מניחה שיש ארון שרתים לוגי אחד וממקמת בו את כל הצמתים במרכז הנתונים. למרות שקל להתקין ולנהל את ההגדרה הזו, היא עלולה להיכשל אם פעולה נכשלת באחד מהצמתים האלה.
בתמונה הבאה מוצגת הגדרת ברירת המחדל של טבעת Cassandra:
בהגדרה חזקה יותר, כל צומת יוקצה למדף נפרד והפעולות יתבצעו גם ברפליקות בכל אחד מהמדפים האלה.
בתמונה הבאה מוצגת טבעת עם 3 צמתים. בתמונה הזו מוצג הסדר שבו הפעולות משוכפלות בטבעת (בכיוון השעון), ומודגשת העובדה שאין שני צמתים באותו ארון:
בהגדרה הזו, הפעולות נשלחות לצומת, אבל גם לרפליקות של הצומת הזה במדפים אחרים (בכיוון השעון).
הוספת מוּדעוּת למארז (עם 3 צמתים)
בכל טופולוגיות ההתקנה של Apigee Edge for Private Cloud בסביבת הייצור יש לפחות שלושה צומתי Cassandra, שבקטע הזה נקראים IP1, IP2 ו-IP3. כברירת מחדל, כל אחד מהצמתים האלה נמצא באותו ארון, "ra-1".
בקטע הזה מוסבר איך להקצות את צומתי Cassandra למארזים נפרדים, כדי שכל הפעולות יישלחו לצומתי רפליקה בקבוצות לוגיות נפרדות בתוך הטבעת.
כדי להקצות צומתי Cassandra למארזים שונים במהלך ההתקנה:
- לפני שמריצים את תוכנת ההתקנה, נכנסים לצומת Cassandra ופותחים את קובץ התצורה השקט הבא לעריכה:
/opt/silent.conf
אם הקובץ לא קיים, צריך ליצור אותו ולוודא שהמשתמש apigee הוא הבעלים.
- עורכים את המאפיין
CASS_HOSTS, רשימה של כתובות IP שמופרדות ברווחים (לא רשומות DNS או שם מארח) שמשתמשת בתחביר הבא:CASS_HOSTS="IP_address:data_center_number,rack_number [...]"
ערך ברירת המחדל הוא טבעת Cassandra עם שלושה צמתים, כשכל צומת מוקצה למדף 1 ולמרכז נתונים 1, כמו בדוגמה הבאה:
CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
- משנים את הקצאות המדפים כך שצומת 2 מוקצה למדף 2 וצומת 3 מוקצה למדף 3, כמו בדוגמה הבאה:
CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"
כשמשנים את הקצאות המדפים, מנחים את Cassandra ליצור שתי קבוצות לוגיות נוספות (מדפים), שמספקות רפליקות שמקבלות את כל הפעולות שהצומת הראשון מקבל.
מידע נוסף על השימוש במאפיין ההגדרה
CASS_HOSTSזמין בחומר עזר בנושא קובץ תצורה של Edge. - שומרים את השינויים בקובץ התצורה ומריצים את הפקודה הבאה כדי להתקין את Cassandra עם התצורה המעודכנת:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config
לדוגמה:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
- חוזרים על התהליך הזה לכל צומת Cassandra בטבעת, לפי הסדר שבו הצמתים מוקצים במאפיין
CASS_HOSTS. במקרה כזה, צריך להתקין את Cassandra בסדר הבא:- צומת 1 (IP1)
- צומת 2 (IP2)
- צומת 3 (IP3)
אחרי ההתקנה, צריך לבדוק את ההגדרות של Cassandra.
בדיקת ההגדרות האישיות של Cassandra
אחרי שמתקינים הגדרת Cassandra עם מודעות למארז, אפשר לבדוק שהצמתים מוקצים למארזים השונים באמצעות הפקודה nodetool status, כמו בדוגמה הבאה:
/opt/apigee/apigee-cassandra/bin/nodetool status
(מריצים את הפקודה הזו באחד מצומתי Cassandra).
התוצאות אמורות להיראות כמו בדוגמה הבאה, שבה בעמודה Rack מוצגים מזהי המארזים השונים של כל צומת:
Datacenter: dc-1 ======================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN IP1 737 MB 256 ? 554d4498-e683-4a53-b0a5-e37a9731bc5c ra-1 UN IP2 744 MB 256 ? cf8b7abf-5c5c-4361-9c2f-59e988d52da3 ra-2 UN IP3 723 MB 256 ? 48e0384d-738f-4589-aa3a-08dc5bd5a736 ra-3
אם הפעלתם אימות JMX ל-Cassandra, אתם צריכים גם להעביר את שם המשתמש והסיסמה שלכם אל nodetool. מידע נוסף זמין במאמר שימוש ב-nodetool לניהול צומתי אשכול.
התקנת טבעת עם שישה צמתים
כדי להגביר את היתירות, אפשר להרחיב את טבעת Cassandra לשישה צמתים. במקרה הזה, מקצים שני צמתים לכל אחד משלושת המדפים. ההגדרה הזו דורשת שלושה צמתים נוספים: צומת 4 (IP4), צומת 5 (IP5) וצומת 6 (IP6).
בתמונה הבאה מוצג הסדר שבו הפעולות משוכפלות בטבעת (בכיוון השעון), ומודגשת העובדה שבמהלך השכפול, אין שני צמתים סמוכים באותו מארז:
בהגדרה הזו, לכל צומת יש שתי רפליקות נוספות: אחת בכל אחד משני המדפים האחרים. לדוגמה, לצומת 1 במדף 1 יש רפליקה במדף 2 ובמדף 3. פעולות שנשלחות לצומת 1 נשלחות גם לרפליקות במארזים האחרים, בכיוון השעון.
כדי להרחיב טבעת Cassandra עם שלושה צמתים לטבעת Cassandra עם שישה צמתים, מגדירים את הצמתים באופן הבא בקובץ התצורה השקט:
CASS_HOSTS="IP1:1,1 IP4:1,3 IP2:1,2 IP5:1,1 IP3:1,3 IP6:1,2"
כמו בטבעת עם שלושה צמתים, צריך להתקין את Cassandra באותו סדר שבו הצמתים מופיעים במאפיין CASS_HOSTS:
- צומת 1 (IP1)
- צומת 4 (IP4)*
- צומת 2 (IP2)
- צומת 5 (IP5)
- צומת 3 (IP3)
- Node 6 (IP6)
* מבצעים את השינויים בקובץ התצורה השקט לפני שמריצים את כלי ההגדרה בצומת הרביעי (המכונה השנייה בסדר ההתקנה של Cassandra).
הרחבה ל-12 צמתים
כדי לשפר עוד יותר את הזמינות ואת העמידות בפני תקלות, אתם יכולים להגדיל את מספר הצמתים של Cassandra בטבעת מ-6 ל-12. ההגדרה הזו דורשת עוד שישה צמתים (IP7 עד IP12).
בתמונה הבאה מוצג הסדר שבו הפעולות משוכפלות בטבעת (בכיוון השעון), ומודגשת העובדה שבמהלך השכפול, אין שני צמתים סמוכים באותו מארז:
ההליך להתקנת טבעת של 12 צמתים דומה להתקנת טבעת של שלושה או שישה צמתים:
מגדירים את CASS_HOSTS לערכים הנתונים ומריצים את תוכנית ההתקנה בסדר שצוין.
כדי להרחיב לטבעת Cassandra עם 12 צמתים, מגדירים את הצמתים באופן הבא בקובץ התצורה השקט:
CASS_HOSTS="IP1:1,1 IP7:1,2 IP4:1,3 IP8:1,1 IP2:1,2 IP9:1,3 IP5:1,1 IP10:1,2 IP3:1,3 IP11:1,1 IP6:1,2 IP12:1,3"
כמו בטבעות של שלושה ושישה צמתים, צריך להריץ את מנהל ההתקנה בצמתים לפי הסדר שבו הם מופיעים בקובץ התצורה:
- צומת 1 (IP1)
- Node 7 (IP7)*
- Node 4 (IP4)
- Node 8 (IP8)
- צומת 2 (IP2)
- Node 9 (IP9)
- צומת 5 (IP5)
- Node 10 (IP10)
- צומת 3 (IP3)
- Node 11 (IP11)
- Node 6 (IP6)
- Node 12 (IP12)
* צריך לבצע את השינויים האלה לפני שמתקינים את Apigee Edge for Private Cloud בצומת השביעי (המכונה השנייה בסדר ההתקנה של Cassandra).