עדכון רכיבי אשכול של RPM Orchestrator

בוחרים גרסת תיעוד:

בדף הזה מוסבר איך לעדכן את חבילות התוכנה של אשכול מסד הנתונים של AlloyDB Omni, את הגדרות המשאבים ואת מתזמן ה-RPM בסביבות Red Hat Enterprise Linux ‏ (RHEL).

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

מוודאים שיש לכם את קובץ מפרט הפריסה, deployment_spec.yaml, שמכיל את כל פרטי הרכיבים של הצומת והאשכול.

שדרוג הכלי לניהול סוכנים

התזמור מנהל את אשכולות מסדי הנתונים. לפני שמשדרגים את רכיבי האשכול האחרים, צריך לשדרג את ה-orchestrator בצומת הבקרה.

Ansible

אם אתם מנהלים את התשתית באמצעות פלייבוקים של Ansible, בצעו את השלבים הבאים:

  1. כדי לבדוק את הגרסה המותקנת של אוסף google.alloydbomni_orchestrator בצומת הבקרה, מריצים את הפקודה הבאה:

    ansible-galaxy collection list | grep alloydbomni_orchestrator
  2. כדי להחליף את הגרסה הקיימת, מורידים את הגרסה היציבה האחרונה של קובץ ה-tar של האוסף ומבצעים התקנה מאולצת:

    ansible-galaxy collection install --force google-alloydbomni_orchestrator-NEW_VERSION.tar.gz

    מחליפים את NEW_VERSION בגרסה של האוסף החדש.

alloydbctl

אם משתמשים בכלי שורת הפקודה alloydbctl, צריך לבצע את השלבים הבאים:

  1. כדי לבדוק את גרסת החבילה המותקנת של מתזמן ה-RPM‏ alloydbomni_orchestrator בצומת הבקרה, מריצים את הפקודה הבאה:

    rpm -q alloydbomni_orchestrator
  2. משדרגים את חבילת התוכנה בצומת הבקרה באמצעות הכלי לניהול חבילות:

    sudo dnf upgrade alloydbomni_orchestrator

עדכון רכיבי אשכול באמצעות Ansible

‫Google ממליצה לעדכן באמצעות התפקיד שסופק ב-Ansible.

  1. יוצרים playbook בשם update.yaml שמפנה לתפקיד update מאוסף כלי התזמור. צריך להגדיר את ערך הפרמטר update_action בתור update_rpm.

    כברירת מחדל, התפקיד update מעדכן גם את מישור הבקרה וגם את מישור הנתונים. כדי לעדכן רק את רכיבי מישור הבקרה או מישור הנתונים, מגדירים את הפרמטר של המישור השני ל-false.

    ---
    - hosts: all
      become: true
      vars:
        update_action: "update_rpm"
        ansible_user: SSH_USER
        ansible_ssh_private_key_file: PRIVATE_KEY_PATH
        update_control_plane: true # Optional argument if you want to only update data plane components
        update_data_plane: true # Optional argument if you want to only update control plane components
      roles:
        - role: google.alloydbomni_orchestrator.update
    

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

    • ‫SSH_USER: שם המשתמש ב-SSH שיש לו גישה לצמתי האשכול.
    • ‫PRIVATE_KEY_PATH: הנתיב לקובץ של מפתח ה-SSH הפרטי.
    • ‫update_action: היקף העדכון. מגדירים את הערך הזה בתור update_rpm.
    • ‫update_control_plane: אופציונלי. מגדירים את הערך false כדי לעדכן רק רכיבים של מישור הנתונים. ערך ברירת המחדל הוא true.
    • ‫update_data_plane: אופציונלי. מגדירים את הערך false כדי לעדכן רק את רכיבי מישור הבקרה. ערך ברירת המחדל הוא true.
  2. כדי לבצע עדכון בכל הצמתים שצוינו, מריצים את ה-playbook עם קובץ המלאי:

    ansible-playbook -i DEPLOYMENT_SPEC update.yaml

    מחליפים את DEPLOYMENT_SPEC בנתיב לקובץ מפרט הפריסה.

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

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

עדכון ידני של רכיבי האשכול

אם אתם לא משתמשים בכלי Ansible לניהול תהליכים או אם אתם רוצים שליטה מדויקת בתהליך העדכון, אתם יכולים לעדכן רכיבי RPM באופן ידני לכל צומת באשכול. מומלץ לבצע עדכוני תוכנה במהלך חלון זמן לתחזוקה.

תהליך העדכון הידני כולל עדכון של שני המישורים הבאים:

  • מישור הבקרה (רכיבי תזמור RPM): מישור הבקרה הוא השכבה ששולטת ומנהלת את אשכולות מסדי הנתונים. בפריסת RPM, מישור הבקרה כולל את cluster_manager, node_manager ו-etcd.

  • מישור הנתונים (אשכול מסד הנתונים): מישור הנתונים מכיל את הרכיבים של אשכול מסד הנתונים, כולל המנוע של מסד הנתונים AlloyDB Omni עצמו, monitor, וגם שירותים כמו pgBackRest,‏ PgBouncer,‏ keepalived ו-HAProxy. כשמשדרגים את מישור הנתונים, עדכוני הגרסה של מסד הנתונים, תיקוני האבטחה ושיפורי הביצועים חלים ישירות על אשכולות מסד הנתונים.

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

כדי לעדכן שירות או חבילה:

  1. מפסיקים את השירות:

    sudo systemctl stop SERVICE
  2. משדרגים את החבילה באמצעות אחת מהפקודות הבאות:

    • כדי לעדכן לגרסה העדכנית ביותר:

      sudo dnf upgrade PACKAGE
    • כדי לעדכן לגרסה ספציפית:

      sudo dnf upgrade PACKAGE-VERSION
  3. מפעילים את השירות:

    sudo systemctl start SERVICE

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

  • ‫SERVICE: שם השירות שרוצים לעצור ולהפעיל, לדוגמה pgbouncer או keepalived.
  • ‫PACKAGE: שם החבילה שרוצים לעדכן, לדוגמה pgbouncer או alloydbomni18.
  • ‫VERSION: גרסת חבילת היעד להתקנה, לדוגמה 18.3.0 או 18.3.0-2.rhel9.

עדכון ידני של מישור הבקרה

כדי לעדכן את מישור הבקרה, מבצעים את השלבים הבאים בצמתים הייעודיים:

  1. כדי לעצור את תוכנה לניהול אשכולות בכל הצמתים של תוכנה לניהול אשכולות, מריצים את הפקודה הבאה:

    sudo systemctl stop alloydbomni_cluster_manager
  2. כדי לעדכן את etcd בכל הצמתים של DCS, מריצים את הפקודות הבאות ברצף:

    sudo systemctl stop etcd
    sudo dnf upgrade etcd
    sudo systemctl start etcd
  3. כדי לעדכן את Node Manager בכל הצמתים, מריצים את הפקודות הבאות לפי הסדר:

    sudo systemctl stop alloydbomni_node_manager
    sudo dnf upgrade alloydbomni_node_manager
    sudo systemctl start alloydbomni_node_manager
  4. אחרי שמעדכנים את הרכיבים של מישור הבקרה, אפשר לעדכן את תוכנה לניהול אשכולות בכל הצמתים של תוכנה לניהול אשכולות, ולהפעיל אותו מחדש אם צריך.

    sudo dnf upgrade alloydbomni_cluster_manager
    sudo systemctl start alloydbomni_cluster_manager

עדכון ידני של מישור הנתונים

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

פועלים לפי ההוראות לפריסה בהתאם לארכיטקטורת העזר.

  1. מאחזרים את סטטוס האשכול באמצעות הפקודה alloydbctl get ומגדירים את פורמט הפלט ל-YAML:

    alloydbctl get -d DEPLOYMENT_SPEC -t RESOURCE_TYPE -n CLUSTER_NAME -o yaml

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

    • ‫RESOURCE_TYPE: סוג המשאב שרוצים לבדוק, לדוגמה DBCluster.
    • ‫CLUSTER_NAME: השם של אשכול מסד הנתונים.
    • ‫DEPLOYMENT_SPEC: הנתיב לקובץ של מפרט הפריסה.
  2. בפלט של YAML, מאתרים את instanceList בקטע status.

    מוצאים את הצומת שהתפקיד שלו מוגדר כ-Primary. כל שאר הצמתים במסד הנתונים הם צמתי המתנה.

  3. קודם מעדכנים את כל הרכיבים של מישור הנתונים שפועלים בצומתי הגיבוי, ואז מעדכנים את הרכיבים האלה בצומת הראשי. כדי לעדכן את הרכיבים של מישור הנתונים בכל צומת:

    1. כדי לעדכן את AlloyDB Omni, מריצים את הפקודות הבאות ברצף:

      sudo systemctl stop alloydbomni18
      sudo dnf upgrade alloydbomni18
      sudo systemctl start alloydbomni18
    2. כדי לעדכן את המעקב, מריצים את הפקודות הבאות לפי הסדר:

      sudo systemctl stop alloydbomni_monitor
      sudo dnf upgrade alloydbomni_monitor
      sudo systemctl start alloydbomni_monitor
    3. כדי לעדכן את pgBackRest, מריצים את הפקודות הבאות לפי הסדר:

      sudo dnf upgrade pgbackrest
    4. כדי לעדכן את PgBouncer, מריצים את הפקודות הבאות לפי הסדר:

      sudo systemctl stop pgbouncer
      sudo dnf upgrade pgbouncer
      sudo systemctl start pgbouncer
    5. כדי לעדכן את keepalived, מריצים את הפקודות הבאות ברצף:

      sudo systemctl stop keepalived
      sudo dnf upgrade keepalived
      sudo systemctl start keepalived
    6. כדי לעדכן את HAProxy, מריצים את הפקודות הבאות ברצף:

      sudo systemctl stop haproxy
      sudo dnf upgrade haproxy
      sudo systemctl start haproxy