תחזוקת פריסה של Spanner Omni

במאמר הזה מוסבר איך לתחזק פריסה של Spanner Omni. תחזוקה של פריסת Spanner Omni כוללת בדיקות תקינות שגרתיות, הוצאה משימוש של רכיבים לא תקינים והחלפה של צמתי שרת או דיסקים פגומים כדי להבטיח את היציבות והעקביות של האשכול. ניהול תקינות מסד הנתונים מגן על מסדי הנתונים מפני הפסקות לא מתוכננות, ושומר על יתירות של קבוצת ההסכמה הבסיסית של Paxos.

ביצוע תחזוקה עוזר לכם:

  • הבטחת זמינות גבוהה: הקצאה מחדש של מכונות וירטואליות (VM) או של פודים לא תקינים כדי לשמור על יתירות של שרת מסד הנתונים. כך תוכלו להמשיך להריץ את האפליקציות שלכם אם תהיה תקלה בחומרה.

  • הגנה על אבטחת הנתונים ועל תקינותם: הוצאה משימוש של צמתים עם דיסקים פגומים כדי למנוע את התפשטות הכשלים באחסון לחלקים אחרים במסד הנתונים. כך גם מוודאים ששרתים מנותקים לא יתעדו עדכונים סותרים.

לפני שמתחילים

לפני שמבצעים תחזוקה בפריסת Kubernetes, צריך לבצע את הפעולות הבאות:

החלפת שרת

יכול להיות שתצטרכו להחליף שרת בפריסה כדי לפתור תקלות במערכת או באחסון.

החלפת שרת בסיס

כדי להחליף שרת בסיסי, בוחרים את הכרטיסייה של הסביבה:

‏Kubernetes

כדי להחליף שרת שורש בפריסת Kubernetes, מבצעים את השלבים הבאים. למרות שאי אפשר להוסיף עוד שרתי בסיס לפריסת Kubernetes קיימת, אפשר להחליף שרתי בסיס קיימים כדי לפתור שגיאות שלא ניתן לתקן.

  1. מוחקים את השרת שרוצים להחליף:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SERVER_ENDPOINT: נקודת הקצה של ה-pod של השרת שרוצים למחוק, בפורמט SERVER.pod.NAMESPACE:PORT. לדוגמה: spanner-a-1.pod.spanner-ns:15000. כדי למצוא את נקודות הקצה של השרתים בהטמעה, מריצים את הפקודה spanner deployment servers list --zone=ZONE כדי להציג את רשימת השרתים בהטמעה.
    • ZONE: האזור שבו נמצא השרת, לדוגמה us-central1-a.

    השלב הזה עשוי להימשך כמה דקות, בהתאם לנפח הנתונים בשרת. ‫Spanner Omni מעביר את הנתונים מהשרת הזה לשרתים אחרים בפריסה. לפני שממשיכים לשלב הבא, מוודאים שמחיקת השרת הושלמה.

    כדי לעקוב אחרי התקדמות המחיקה, בודקים את הסטטוס של השרת:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    מחכים עד שהפקודה מחזירה שגיאה NOT_FOUND או מציינת שהשרת כבר לא רשום.

  2. מוחקים את דרישת נפח האחסון המתמיד (PVC) של הפוד שמארח את השרת:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DATA_VOLUME_NAME: שם נפח הנתונים, לדוגמה data-volume-spanner-a-1. כדי למצוא את השם של נפח הנתונים, מריצים את הפקודה kubectl get pvc -n NAMESPACE כדי להציג את רשימת ה-PVC במרחב השמות.
    • NAMESPACE: מרחב השמות של הפריסה, לדוגמה spanner-ns.
  3. מוחקים את ה-pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    מחליפים את POD_NAME בשם של פוד השרת שרוצים למחוק, לדוגמה, spanner-a-1.

    מערכת Kubernetes מפעילה באופן אוטומטי שרת חדש בתרמיל חלופי ומצרפת PVC חדש.

  4. מוסיפים את השרת החדש לפריסה:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    מוודאים שהארגומנטים תואמים לנקודת הקצה ולמיקום החדשים של ה-pod – לדוגמה, שימוש ב-spanner-a-1.pod.spanner-ns:15000 כנקודת הקצה וב-us-central1-a כמיקום.

VM

כדי להחליף שרת שורש בפריסת מכונה וירטואלית, מבצעים את השלבים הבאים:

  1. מוחקים את השרת שרוצים להחליף:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SERVER_ENDPOINT: כתובת ה-IP של השרת או שם המארח והיציאה – לדוגמה, spanner-vm-1.example.com:15000. כדי לראות את נקודות הקצה של השרת, מריצים את הפקודה spanner deployment servers list --zone=ZONE כדי להציג את רשימת שרתי הפריסה.
    • ZONE: האזור שבו נמצא השרת, לדוגמה us-central1-a.

    השלב הזה עשוי להימשך כמה דקות, בהתאם לנפח הנתונים בשרת. ‫Spanner Omni מעביר את הנתונים מהשרת הזה לשרתים אחרים בפריסה. לפני שממשיכים לשלב הבא, מוודאים שמחיקת השרת הושלמה.

    כדי לעקוב אחרי התקדמות המחיקה, בודקים את הסטטוס של השרת:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    מחכים עד שהפקודה מחזירה שגיאה NOT_FOUND או מציינת שהשרת כבר לא רשום.

  2. מבצעים הקצאה מחדש של השרת עם אחסון נקי, כמו שמוסבר במאמר יצירת פריסה של Spanner Omni במכונות וירטואליות:

    spanner start \
      --root \
      --server-address=HOSTNAME \
      --zone=ZONE \
      --base-dir=BASE_DIR
    

    מחליפים את מה שכתוב בשדות הבאים:

    • HOSTNAME: שם המארח או שם הדומיין המלא (FQDN) של המכונה הווירטואלית החדשה שאפשר לפתור – לדוגמה, spanner-vm-1.example.com.
    • ZONE: אזור היעד, לדוגמה, us-central1-a.
    • BASE_DIR: הנתיב שבו הנתונים מאוחסנים, לדוגמה ./span-dir.
  3. מוסיפים את השרת החדש לפריסה:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    מוודאים שהארגומנטים תואמים לפרמטרים של השרת החדש – לדוגמה, משתמשים ב-spanner-vm-1.example.com:15000 כנקודת הקצה וב-us-central1-a כאזור.

החלפת שרת שאינו שרת הבסיס

כדי להחליף שרת שאינו שרת הבסיס, בוחרים את הכרטיסייה של הסביבה:

‏Kubernetes

כדי להחליף שרת שאינו שרת הבסיס בפריסת Kubernetes, מבצעים את השלבים הבאים:

  1. מוחקים את השרת שרוצים להחליף:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SERVER_ENDPOINT: נקודת הקצה של ה-pod של השרת שרוצים למחוק, בפורמט SERVER.pod.NAMESPACE:PORT. לדוגמה: spanner-a-4.pod.spanner-ns:15000. כדי למצוא את נקודות הקצה של השרתים בהטמעה, מריצים את הפקודה spanner deployment servers list --zone=ZONE כדי להציג את רשימת השרתים בהטמעה.
    • ZONE: האזור שבו נמצא השרת, לדוגמה us-central1-a.

    השלב הזה עשוי להימשך כמה דקות, בהתאם לנפח הנתונים בשרת. ‫Spanner Omni מעביר את הנתונים מהשרת הזה לשרתים אחרים בפריסה. לפני שממשיכים לשלב הבא, מוודאים שמחיקת השרת הושלמה.

    כדי לעקוב אחרי התקדמות המחיקה, בודקים את הסטטוס של השרת:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    מחכים עד שהפקודה מחזירה שגיאה NOT_FOUND או מציינת שהשרת כבר לא רשום.

  2. מוחקים את דרישת נפח האחסון המתמיד (PVC) של הפוד שמארח את השרת:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DATA_VOLUME_NAME: שם נפח הנתונים, לדוגמה data-volume-spanner-a-4. כדי למצוא את השם של נפח הנתונים, מריצים את הפקודה kubectl get pvc -n NAMESPACE כדי להציג את רשימת ה-PVC במרחב השמות.
    • NAMESPACE: מרחב השמות של הפריסה, לדוגמה spanner-ns.
  3. מוחקים את ה-pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    מחליפים את POD_NAME בשם של פוד השרת שרוצים למחוק, לדוגמה, spanner-a-4.

    מערכת Kubernetes מפעילה באופן אוטומטי שרת חדש בתרמיל חלופי ומצרפת PVC חדש. ‫Spanner Omni רושם אוטומטית את השרת החדש שאינו Root בפריסה.

VM

כדי להחליף שרת שאינו שרת הבסיס בפריסת מכונה וירטואלית, מבצעים את השלבים הבאים:

  1. מוחקים את השרת שרוצים להחליף:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SERVER_ENDPOINT: כתובת ה-IP של השרת או שם המארח והיציאה – לדוגמה, spanner-vm-4.example.com:15000. כדי לראות את נקודות הקצה של השרת, מריצים את הפקודה spanner deployment servers list --zone=ZONE כדי להציג את רשימת שרתי הפריסה.
    • ZONE: האזור שבו נמצא השרת, לדוגמה us-central1-a.

    השלב הזה עשוי להימשך כמה דקות, בהתאם לנפח הנתונים בשרת. ‫Spanner Omni מעביר את הנתונים מהשרת הזה לשרתים אחרים בפריסה. לפני שממשיכים לשלב הבא, מוודאים שמחיקת השרת הושלמה.

    כדי לעקוב אחרי התקדמות המחיקה, בודקים את הסטטוס של השרת:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    מחכים עד שהפקודה מחזירה שגיאה NOT_FOUND או מציינת שהשרת כבר לא רשום.

  2. מבצעים הקצאה מחדש של שרת שאינו Root עם אחסון נקי, כמו שמוסבר במאמר בנושא הוספת שרתים שאינם Root. השרת יתווסף לפריסה באופן אוטומטי.

השלבים הבאים