בדף הזה מוסבר איך האשכול ב-Memorystore for Redis Cluster פועל במהלך שינוי קנה המידה.
אפשר לשנות את הקיבולת של האשכול בדרכים הבאות:
אתם יכולים לשנות את מספר השארדים באשכול. זה נקרא שינוי קנה מידה אופקי. אפשר לשנות את קנה המידה של אשכול באופן אופקי באחת מהדרכים הבאות:
הרחבה אופקית (scale out): הגדלת הקיבולת של האשכול, כדי להוסיף לו זיכרון וכוח עיבוד שיאפשרו לו לטפל בנפח גדול יותר של נתונים או תנועה. הקיבולת של האשכול נקבעת לפי מספר ה-shards באשכול.
כשמרחיבים את האשכול, האפליקציה יכולה להתמודד עם עלייה בביקוש בלי לפגוע בביצועים. כדי להגדיל את האשכול, מוסיפים לו פיצולים.
הקטנת קנה המידה: הקטנת הקיבולת של האשכול, וכך גם את כוח העיבוד ואת כמות הזיכרון הזמינה לאחסון נתונים. זה קורה כשדרישות הנתונים של האפליקציה פוחתות, וצריך להפחית את השימוש במשאבים כדי לחסוך בעלויות. כדי להקטין את האשכול, צריך להקטין את מספר השארדים באשכול.
אתם יכולים לשנות את סוג הצומת של האשכול. זה נקרא שינוי קנה מידה אנכי. אפשר לשנות את קנה המידה של אשכול באופן אנכי באחת מהדרכים הבאות:
- הרחבה: הגדלת הקיבולת של האשכול. הקיבולת של האשכול נקבעת לפי סוג הצומת של האשכול. כדי להגדיל את האשכול, משנים את סוג הצומת לסוג גדול יותר. לדוגמה, אפשר להגדיל את האשכול מסוג צומת
redis-standard-smallלסוג צומתredis-highmem-medium. צמצום אנכי בהתאם לעומס (scale down): הקטנת הקיבולת של האשכול. כדי להקטין את האשכול, משנים את סוג הצומת לסוג קטן יותר. לדוגמה, אפשר להקטין את האשכול מסוג הצומת
redis-highmem-mediumלסוג הצומתredis-standard-small.
- הרחבה: הגדלת הקיבולת של האשכול. הקיבולת של האשכול נקבעת לפי סוג הצומת של האשכול. כדי להגדיל את האשכול, משנים את סוג הצומת לסוג גדול יותר. לדוגמה, אפשר להגדיל את האשכול מסוג צומת
ההשפעה של שינוי קנה המידה
במהלך פעולת שינוי קנה מידה, הזמינות של האשכול לא מושפעת. עם זאת, כשמשנים את מספר המאגרים באשכול, Memorystore for Redis Cluster מאזן מחדש את מרחב המפתחות של האשכול. זה עלול לגרום לעלייה בזמן האחזור במהלך פעולת ההתאמה לעומס.
בנוסף, ההשפעה של שינוי קנה המידה של האשכול באופן אנכי על ידי שינוי סוג הצומת דומה למה שקורה בפעולת תחזוקה.
תרחישים של כשלים
אם נתקלתם בשגיאה במהלך פעולת ההתאמה לעומס, יכול להיות שהיא נגרמה בגלל אחד מהתרחישים הבאים:
אתם רוצים לעדכן את מספר השארדים באשכול, אבל אין לכם מספיק זיכרון פנוי לסוג הצומת
redis-shared-core-nanoבאשכול.כדי לפתור את הבעיה, אתם יכולים להגדיל את האשכול או לפנות זיכרון מהצמתים של האשכול. כדי לפנות מקום בזיכרון:
- מתחברים לאשכול.
- כדי לקבל פרטים על האשכול, כולל כתובת ה-IP ומספר היציאה, משתמשים בפקודה
gcloud redis clusters describe. - שימו לב לכתובת ה-IP ולמספר היציאה של האשכול.
כדי לקבל מידע על הצמתים של האשכול, משתמשים בפקודה הבאה:
redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
מחליפים את IP_ADDRESS ו-PORT_NUMBER בערכים שציינתם בשלב הקודם.
רושמים את כתובת ה-IP ואת מספר היציאה של צומת שאין בו מספיק מקום פנוי. המזהה של הצומת הזה תואם למזהה שמופיע בשגיאה.
כדי להתחבר לצומת הזה, משתמשים בפקודה הבאה:
redis-cli -h IP_ADDRESS -p PORT_NUMBER
מחליפים את IP_ADDRESS ו-PORT_NUMBER בערכים שציינתם בשלב הקודם.
מזינים את הפקודה
info memory.בפלט מופיעים הערכים של הפרמטרים
used_memoryו-maxmemory. used_memoryהוא נפח הזיכרון שהצומת משתמש בו, ו-maxmemoryהוא נפח הזיכרון שזמין לצומת.מחלקים את הערך של הפרמטר
used_memoryבערך של הפרמטרmaxmemory, ומוודאים שהמנה גדולה מ-98%.כדי לפנות מקום לצומת, מוחקים חלק מהמפתחות של הצומת.
מזינים שוב את הפקודה
info memory. בפלט, הערך של הפרמטרused_memoryקטן יותר.מחלקים את הערך של הפרמטר
used_memoryבערך של הפרמטרmaxmemory, ומוודאים שהמנה קטנה מ-98%. אם לא, צריך למחוק עוד מפתחות.אם יש עוד צמתים שאין בהם מספיק מקום פנוי, חוזרים על שלבים 4 עד 11 בתהליך הזה.
שיניתם את קנה המידה למספר קטן יותר של שאדים, שאין לו קיבולת להכיל את כל המפתחות ש-Memorystore for Redis Cluster מאחסן באשכול המקורי. כדי לפתור את הבעיה, צריך להגדיל את מספר השארדים כך שיוכלו להכיל את כל המפתחות המאוחסנים. מידע נוסף על הגדלת מספר המקטעים באשכול זמין במאמר שינוי מספר המקטעים.
שיניתם את קנה המידה לסוג צומת קטן יותר, שאין לו קיבולת להכיל את כל הנתונים ש-Memorystore for Redis Cluster מאחסן בסוג הצומת המקורי. במקרה כזה, Memorystore for Redis Cluster מספק המלצה על סוג הצומת לצמצום אנכי בהתאם לעומס.
עדכנתם את סוג הצומת של האשכול, ודרסתם את הגדרות ברירת המחדל של סוג הצומת המקורי, או שההגדרות האלה כבר נדרסו. עם זאת, סוג הצומת החדש והמותאם לא תומך בערכים של הגדרות ברירת המחדל, או שההגדרות לא תקפות לסוג הצומת. במקרה כזה, Memorystore for Redis Cluster מחזיר שגיאה. כדי לפתור את הבעיה, צריך לשנות את ההגדרות באופן ידני כך שיהיו תקינות לסוג הצומת החדש.
שיניתם את קנה המידה של האשכול במהלך תקופה של לחץ כתיבה גבוה (לדוגמה, במהלך בדיקת עומס). כדי לפתור את הבעיה, צריך לשנות את קנה המידה בתקופות שבהן התנועה באשכול נמוכה.
יש לכם משבצת שמכילה מפתח גדול, ואתם רוצים להעביר את המפתח הזה לצומת אחר. עם זאת, לצומת הזה אין מספיק זיכרון כדי לתמוך במפתח. אי אפשר לעדכן את האשכול. כדי לפתור את הבעיה, צריך להקטין את המפתח כך שיהיה קטן מ-128MB. לאחר מכן, מנסים שוב לבצע את פעולת העדכון.
מספר המשבצת שבבעלות צומת של אשכול לא ידוע, אלא רק טווח המשבצות. Memorystore for Redis Cluster מחזיר הודעת שגיאה. אם זה קורה, צריך להקטין את המפתח ולנסות שוב את פעולת העדכון.
הגדלתם את הקיבולת של האשכול על ידי הרחבה אופקית בהתאם לעומס (scale out) למספר קטן יותר של פיסות מידע. עם זאת, ב-Memorystore for Redis Cluster אין מספיק זיכרון כדי לענות על הבקשה הזו. כדי לפתור את הבעיה, צריך להקטין את הקיבולת של האשכול על ידי צמצום למספר המקורי והגדול יותר של ה-shards.
שיטות מומלצות
כדי להגדיל את הקיבולת של האשכול, מומלץ לפעול לפי השיטות המומלצות הבאות:
- בחירת מועד לשינוי קנה המידה: כדי להגביר את המהירות והאמינות של שינוי קנה המידה של האשכול, כדאי לשנות את קנה המידה בתקופות של תנועה נמוכה. במאמר מעקב אחרי אשכולות מוסבר איך עוקבים אחרי התנועה באשכולות.
- נסו שוב כשאתם לא מצליחים לשנות את קנה המידה: הזמינות של המשאבים משתנה לעיתים קרובות. אם אתם לא מצליחים לשנות את קנה המידה של האשכול בגלל מגבלת משאבים זמנית, נסו לשנות את קנה המידה של האשכול מאוחר יותר.