מגבלות
המגבלות הבאות חלות:
AlloyDB Omni פועל ביציאה
5432. אין תמיכה בהגדרת יציאה בהתאמה אישית.לפני שיוצרים את האשכול, צריך לוודא שכל הגדרות הפרמטרים של מסד הנתונים נכונות. אחרי שיוצרים את האשכול, אי אפשר לשנות את הפרמטרים של מסד הנתונים.
לפני שמתחילים
לפני שיוצרים את האשכול, צריך לבצע את הפעולות הבאות:
טוענים אמצעי אחסון חיצוני (
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.getcompute.instances.listcompute.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. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQLmax_connections.(אופציונלי)
MAX_WAL_SIZE: הגודל המקסימלי שמאפשר ליומן הרישום של פעולות הכתיבה (WAL) לגדול במהלך נקודות בקרה אוטומטיות. ערך ברירת המחדל הוא1GB. מידע נוסף זמין בחומר העזר של PostgreSQLmax_wal_size.
MAX_WORKER_PROCESSES(אופציונלי): המספר המקסימלי של ה-workers שאפשר להפעיל באמצעותGatherאוGather Mergeיחידים. ערך ברירת המחדל הוא64. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQLmax_worker_processes.(אופציונלי)
LOG_CONNECTIONS: קובע אם החיבורים לשרת PostgreSQL יתועדו ביומן. ערך ברירת המחדל הואon. מידע נוסף זמין בחומר העזר של PostgreSQLlog_connections.(אופציונלי)
LOG_DISCONNECTS: קובע אם סיומי סשן של PostgreSQL יתועדו ביומן. ערך ברירת המחדל הואon. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQLlog_disconnections.(אופציונלי)
LOG_HOSTNAME: קובע אם שם המארח יתועד בנוסף לכתובת ה-IP של המארח המתחבר. ערך ברירת המחדל הואon. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQLlog_hostname.(אופציונלי)
LOG_STATEMENT: קובע אילו הצהרות SQL נרשמות ביומן. ערך ברירת המחדל הואnone. מידע נוסף זמין במאמר PostgreSQLlog_statementreference.(אופציונלי)
HUGE_PAGES: קובע אם מתבקשים דפים ענקיים לאזור הזיכרון המשותף הראשי. ערך ברירת המחדל הואoff. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQLhuge_pages.(אופציונלי)
TCP_KEEPALIVES_IDLE: משך הזמן בשניות ללא פעילות ברשת לפני שמערכת ההפעלה מנסה לשלוח הודעת TCPkeepaliveללקוח. ערך ברירת המחדל הוא10. מידע נוסף זמין במאמר בנושא הפניה ל-PostgreSQLtcp_keepalives_idle.(אופציונלי)
TCP_KEEPALIVES_INTERVAL: משך הזמן, בשניות, לפני שצריך לשלוח מחדש הודעת TCPkeepaliveשהלקוח לא אישר. ערך ברירת המחדל הוא10. מידע נוסף זמין בחומר העזר של PostgreSQLtcp_keepalives_interval.(אופציונלי)
TCP_KEEPALIVES_COUNT: number of TCPkeepaliveמספר הודעות ה-TCP שאפשר לאבד לפני שהחיבור של השרת ללקוח ייחשב לא פעיל. ערך ברירת המחדל הוא10. מידע נוסף זמין בחומר העזר של PostgreSQLtcp_keepalives_count.(אופציונלי)
ENVIRONMENT_TYPE: קובע את הסביבה שבה האשכול מוגדר –onpremאוgcp.(אופציונלי)
VIRTUAL_IP: כתובת IP וירטואלית שמשמשת את מאזן העומסים. אם מגדירים אתdbLoadBalancerOptions, זהו שדה חובה. מידע נוסף זמין במאמר ניהול זמינות גבוהה.(אופציונלי)
VIRTUAL_IP_INTERFACE: ממשק הרשת שבו מוגדרVIRTUAL_IP. ערך ברירת המחדל הואeth0.
יצירת האשכול
כדי ליצור את האשכול, בוחרים את הכרטיסייה שמתאימה לסביבה שלכם ופועלים לפי ההוראות.
Ansible
כדי ליצור את האשכול, פועלים לפי ההוראות הבאות:
יוצרים פלייבוק למפרטים של אשכול מסד הנתונים.
- 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.
מפעילים את הפלייבוק.
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:
יוצרים 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מריצים את הפלייבוק באמצעות
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.