יצירת אשכול

בוחרים גרסה של מאמרי העזרה:

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

מגבלות

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

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

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

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

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

  • התקנת התזמור ב-AlloyDB Omni

  • התקנת רכיבי AlloyDB Omni

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

  • טוענים אמצעי אחסון חיצוני (DataDisk) אל PG_DATA_DIR בכל צומתי מסד הנתונים שהוקצו ב-orchestrator.

  • אם אתם מתכננים להשתמש ב-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 שניות.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • (אופציונלי) 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: number of TCP keepalive מספר הודעות ה-TCP שאפשר לאבד לפני שהחיבור של השרת ללקוח ייחשב לא פעיל. ערך ברירת המחדל הוא 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_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"

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

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

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

מחיקת האשכול

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

Ansible

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

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

    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        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.