יצירת אשכול

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

כדי להתחיל להשתמש ב-AlloyDB Omni, צריך ליצור אשכול מסדי נתונים.

מגבלות

ההגבלות הבאות חלות:

  • ‫AlloyDB Omni פועל ביציאה 5432. אין תמיכה בהגדרת יציאה בהתאמה אישית.

  • לפני שיוצרים את האשכול, חשוב לוודא שכל הגדרות הפרמטרים של מסד הנתונים נכונות. אחרי שיוצרים את האשכול, אי אפשר לשנות את הפרמטרים של מסד הנתונים.

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

לפני שיוצרים את האשכול, צריך לבצע את הפעולות הבאות:

  • התקנת כלי התזמור AlloyDB Omni

  • התקנת רכיבים של AlloyDB Omni

  • הגדרת אישורי TLS

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

  • אם אתם מתכננים להשתמש ב-alloydbctl במקום ב-Ansible, ודאו שחבילת policycoreutils-python-utils הנדרשת מותקנת בכל המכונות הווירטואליות. כדי להתקין את החבילה הזו, מריצים את הפקודה הבאה:

    sudo dnf install policycoreutils-python-utils
  • אם אתם משתמשים בסביבת Google Cloud , צריך להגדיר את ENVIRONMENT_TYPE ל-gcp. לאחר מכן צריך לאמת את החשבון שלכם ב-CLI של gcloud על ידי הרצת gcloud auth login בתור המשתמש root. בנוסף, לחשבון המאומת צריכות להיות ההרשאות הבאות:

    • compute.instances.get
    • compute.instances.list
    • compute.instances.updateNetworkInterface

הכנת מפרטים של אשכולות

כדי ליצור את האשכול, מערכת AlloyDB Omni צריכה לדעת איך להגדיר אותו. כדי ליצור את המפרטים הנדרשים, יוצרים קובץ YAML בפורמט DBCluster:

Secret:
  metadata:
    name: db-pw-DBCLUSTER_NAME
  spec:
    type: Opaque
    data:
      DBCLUSTER_NAME: BASE64_PASSWORD
---
DBCluster:
  metadata:
    name: DBCLUSTER_NAME
  spec:
    databaseVersion: 18.1.0
    mode: ""
    availability:
      numberOfStandbys: NUM_STANDBY_NODES
      enableAutoFailover: true
      enableAutoHeal: true
      autoFailoverTriggerThreshold: AUTOFAILOVER_TRIGGER_THRESHOLD
      autoHealTriggerThreshold: AUTOHEAL_TRIGGER_THRESHOLD
      healthcheckPeriodSeconds: HEALTHCHECK_PERIOD
      replayReplicationSlotsOnStandbys: false
    primarySpec:
      adminUser:
        passwordRef:
          name: db-pw-DBCLUSTER_NAME
      resources:
        cpu: CPU_LIMIT
        memory: MEMORY_LIMIT
        disks:
        - name: DataDisk
          path: PG_DATA_DIR
      parameters:
        max_connections: "MAX_CONNECTIONS"
        max_wal_size: "MAX_WAL_SIZE"
        max_worker_processes: "MAX_WORKER_PROCESSES"
        log_connections: "LOG_CONNECTIONS"
        log_disconnections: "LOG_DISCONNECTS"
        log_hostname: "LOG_HOSTNAME"
        log_statement: "LOG_STATEMENT"
        huge_pages: "HUGE_PAGES"
        tcp_keepalives_idle: "TCP_KEEPALIVES_IDLE"
        tcp_keepalives_interval: "TCP_KEEPALIVES_INTERVAL"
        tcp_keepalives_count: "TCP_KEEPALIVES_COUNT"
      dbLoadBalancerOptions:
        DB_LOAD_BALANCER_TYPE:
          loadBalancerIP: "VIRTUAL_IP"
          loadBalancerType: "internal"
          loadBalancerInterface: "VIRTUAL_IP_INTERFACE"

מחליפים את המשתנים הבאים:

  • DBCLUSTER_NAME: שם אשכול מסד הנתונים. לדוגמה, my-dbcluster.

  • BASE64_PASSWORD: סיסמה בקידוד base64 שמשמשת את משתמש האדמין postgres.

  • NUM_STANDBY_NODES: מספר הצמתים במצב המתנה באשכול. לדוגמה, 2.

  • (אופציונלי) AUTOFAILOVER_TRIGGER_THRESHOLD: מספר הפעמים שבהן בדיקת תקינות יכולה להיכשל לפני מעבר לגיבוי. ערך ברירת המחדל הוא 3. הערך המינימלי הוא 0, אבל אם הערך מוגדר כ-0, AlloyDB Omni משתמש בערך ברירת המחדל.

    מעבר גיבוי אוטומטי מתרחש אם בדיקת תקינות נכשלת AUTOFAILOVER_TRIGGER_THRESHOLD פעמים או אם משך הזמן המצטבר של בדיקת התקינות מגיע ל-HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD שניות.

  • ‫(Optional) AUTOHEAL_TRIGGER_THRESHOLD: number of times the health check can fail before auto-heal begins. The default value is 3. The minimum value is 0, but if the value is set to 0, AlloyDB Omni uses the default value.

    שחזור אוטומטי מתבצע אם בדיקת תקינות נכשלת AUTOHEAL_TRIGGER_THRESHOLD פעמים או אם משך הזמן המצטבר של בדיקת התקינות מגיע ל-HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD שניות.

  • (אופציונלי) HEALTHCHECK_PERIOD: מספר השניות להמתנה בין כל בדיקת תקינות. ערך ברירת המחדל הוא 30. הערך המינימלי הוא 1. הערך המקסימלי הוא 86400 (יום אחד).

  • CPU_LIMIT: מספר המעבדים להקצאה לקונטיינר של מסד הנתונים. לדוגמה, 4.

  • MEMORY_LIMIT: כמות הזיכרון להקצאה לקונטיינר של מסד הנתונים. לדוגמה, 32Gi, ‏ 500Mi.

  • PG_DATA_DIR: נתיב המארח לספרייה שבה יישמרו נתוני מסד הנתונים.

  • ‫(Optional) MAX_CONNECTIONS: מספר החיבורים המקסימלי בו-זמנית למסד הנתונים של PostgreSQL. ערך ברירת המחדל הוא 50. הערך המינימלי הנתמך הוא גם 50. למידע נוסף, אפשר לעיין בהפניה PostgreSQL max_connections.

  • (אופציונלי) MAX_WAL_SIZE: הגודל המקסימלי שמאפשר ליומן הרישום המקדים (WAL) לגדול במהלך נקודות ביקורת אוטומטיות. ערך ברירת המחדל הוא 1GB. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQL max_wal_size.

  • (אופציונלי) MAX_WORKER_PROCESSES: המספר המקסימלי של עובדים שאפשר להפעיל באמצעות Gather או Gather Merge אחד. ערך ברירת המחדל הוא 64. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQL max_worker_processes.

  • (אופציונלי) LOG_CONNECTIONS: קובע אם החיבורים לשרת PostgreSQL יתועדו או לא. ערך ברירת המחדל הוא on. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQL log_connections.

  • (אופציונלי) LOG_DISCONNECTS: קובע אם סיומי סשנים של PostgreSQL נרשמים ביומן. ערך ברירת המחדל הוא on. מידע נוסף זמין במאמר PostgreSQL log_disconnections reference.

  • (אופציונלי) LOG_HOSTNAME: קובע אם שם המארח יתועד בנוסף לכתובת ה-IP של המארח המתחבר. ערך ברירת המחדל הוא on. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQL log_hostname.

  • ‫(Optional) LOG_STATEMENT: ההגדרה קובעת אילו הצהרות SQL נרשמות ביומן. ערך ברירת המחדל הוא none. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQL log_statement.

  • (אופציונלי) HUGE_PAGES: קובע אם יש לבקש דפים גדולים לאזור הזיכרון המשותף הראשי. ערך ברירת המחדל הוא off. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQL huge_pages.

  • (אופציונלי) TCP_KEEPALIVES_IDLE: משך הזמן בשניות שבו לא מתבצעת פעילות ברשת לפני שמערכת ההפעלה מנסה לשלוח הודעת TCP keepalive ללקוח. ערך ברירת המחדל הוא 10. למידע נוסף, אפשר לעיין בהפניה ל-PostgreSQL tcp_keepalives_idle.

  • (אופציונלי) TCP_KEEPALIVES_INTERVAL: משך הזמן בשניות לפני שצריך לשלוח מחדש הודעת TCP keepalive שלא התקבלה לגביה אישור מהלקוח. ערך ברירת המחדל הוא 10. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQL tcp_keepalives_interval.

  • (אופציונלי) TCP_KEEPALIVES_COUNT: מספר הודעות ה-TCP keepalive שיכולות ללכת לאיבוד לפני שהחיבור של השרת ללקוח ייחשב כלא פעיל. ערך ברירת המחדל הוא 10. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQL tcp_keepalives_count.

  • (אופציונלי) ENVIRONMENT_TYPE: קובע את הסביבה שבה מוגדר האשכול – onprem או gcp.

  • (אופציונלי) VIRTUAL_IP: כתובת IP וירטואלית שמשמשת את מאזן העומסים. אם מגדירים את dbLoadBalancerOptions, זהו שדה חובה. מידע נוסף מופיע במאמר בנושא ניהול זמינות גבוהה.

  • (אופציונלי) VIRTUAL_IP_INTERFACE: ממשק הרשת שבו VIRTUAL_IP מוגדר. ערך ברירת המחדל הוא eth0.

יצירת האשכול

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

Ansible

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

  1. יוצרים תוכנית פעולה למפרטים של אשכול מסדי הנתונים.

    - name: Create DBCluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    
    

    מחליפים את המשתנים הבאים:

    • ANSIBLE_USER: משתמש במערכת ההפעלה שמשמש את Ansible כדי להתחבר לצמתים של AlloyDB Omni.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: המפתח הפרטי שמשמש את Ansible לחיבור לצמתים של AlloyDB Omni באמצעות SSH.

  2. מפעילים את חוברת ההדרכה.

    ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPEC" \
          -e resource_spec="DBCLUSTER_SPECIFICATIONS"

    מחליפים את המשתנים הבאים:

    • DBCLUSTER_PLAYBOOK: הנתיב ל-playbook שיצרתם לאשכול מסד הנתונים.

    • DEPLOYMENT_SPEC: הנתיב למפרט הפריסה שיצרתם בקטע התקנת רכיבים של AlloyDB Omni.

    • DBCLUSTER_SPECIFICATIONS: הנתיב למפרט האשכול.

alloydbctl

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

alloydbctl apply -d "DEPLOYMENT_SPEC" -r "DBCLUSTER_SPECIFICATIONS"

מחליפים את המשתנים הבאים:

מחיקת האשכול

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

Ansible

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

  1. יוצרים playbook בשם teardown.yaml:

    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.delete
    
  2. מריצים את הפלייבוק באמצעות ansible-playbook. צריך לציין את DBCluster כresource_type ואת שם האשכול שרוצים למחוק כresource_name.

    ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
      -e `resource_type`=`DBCluster` -e `resource_name`="DBCLUSTER_NAME"

אם תהליך ההסרה נכשל בגלל חוסר עקביות במצב האשכול (לדוגמה, אם לא ניתן להגיע לצומת), אפשר לנסות למחוק את האשכול בכוח על ידי הוספת -e force=true לפקודה. ההוראה הזו גורמת לכלי האורקסטרציה להתעלם משגיאות במהלך תהליך ההסרה ולנסות להסיר כמה שיותר משאבים.

  ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
    -e resource_type=DBCluster -e resource_name="DBCLUSTER_NAME" -e force=true

alloydbctl

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

alloydbctl delete -d "DEPLOYMENT_SPEC" \
      --resource_type DBCluster --resource_name "DBCLUSTER_NAME"

מחליפים את המשתנים הבאים:

  • DEPLOYMENT_SPEC: הנתיב למפרט הפריסה שיצרתם בקטע התקנת רכיבים של AlloyDB Omni.

  • DBCLUSTER_NAME: שם אשכול מסד הנתונים. לדוגמה, my-dbcluster.