בדף הזה מוסבר איך האשכול ב-Memorystore for Redis Cluster מתנהג במהלך שינוי הגודל.
אפשר להגדיל את הקיבולת של האשכול בדרכים הבאות:
אפשר לשנות את מספר הרסיסים של האשכול. הפעולה הזו נקראת שינוי גודל אופקי. אפשר להרחיב את האשכול אופקית באחת מהדרכים הבאות:
הרחבת הקיבולת: הגדלת הקיבולת של האשכול, וכך לאשכול יש יותר זיכרון וכוח עיבוד כדי לטפל בנפח גדול יותר של נתונים או תנועה. הקיבולת של האשכול נקבעת לפי מספר הרסיסים באשכול.
הגדלת האשכול מאפשרת לאפליקציה להתמודד עם ביקוש מוגבר בלי לפגוע בביצועים. כדי להרחיב את האוסף, מוסיפים לו רסיסים.
הקטנת הקיבולת: הקטנת הקיבולת של האשכול, שמקטינה גם את כוח העיבוד וגם את כמות הזיכרון שזמינה לאחסון נתונים. המצב הזה קורה כשדרישות הנתונים של האפליקציה יורדות ואתם צריכים להפחית את השימוש במשאבים כדי לחסוך בעלויות. כדי להקטין את גודל האשכול, צריך לצמצם את מספר הרסיסים באשכול.
אפשר לשנות את סוג הצומת של האשכול. הפעולה הזו נקראת שינוי גודל אנכי. אפשר להגדיל את הקיבולת של אשכול באופן אנכי באחת מהדרכים הבאות:
- הגדלת הקיבולת: הגדלת הקיבולת של האוסף. הקיבולת של האשכול נקבעת לפי סוג הצומת של האשכול. כדי להגדיל את הקיבולת של אשכול, צריך לשנות את סוג הצומת לסוג צומת גדול יותר. לדוגמה, אפשר להגדיל את גודל האשכול מסוג הצומת
redis-standard-smallלסוג הצומתredis-highmem-medium. הקטנת קנה המידה: הקטנת הקיבולת של האשכול. כדי להקטין את גודל האשכול, משנים את סוג הצומת לסוג צומת קטן יותר. לדוגמה, אפשר להקטין את גודל האשכול מסוג הצומת
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 מחזיר הודעת שגיאה. אם זה קורה, צריך לצמצם את גודל המפתח ולנסות שוב לבצע את פעולת העדכון.
הגדלתם את הקיבולת של האשכול על ידי הרחבת קנה המידה למספר קטן יותר של רסיסים. עם זאת, אין מספיק זיכרון ב-Memorystore for Redis Cluster כדי להכיל את הבקשה הזו. כדי לפתור את הבעיה, צריך להקטין את הקיבולת של האשכול על ידי הרחבה פנימה למספר המקורי והגדול יותר של הרסיסים.
שיטות מומלצות
כדי להגדיל את הקיבולת של האשכול, וכדי להגדיל את המהירות והאמינות של שינוי הגודל של האשכול, מומלץ לשנות את הגודל של האשכול בתקופות של נפח תנועה נמוך, בכל הזדמנות. מידע נוסף על מעקב אחרי תנועת הגולשים באשכול זמין במאמר מעקב אחרי אשכולות.