יצירת הגדרה של זמינות גבוהה

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

בדף הזה מוסבר איך להגדיר זמינות גבוהה ב-AlloyDB Omni. בדף הזה מוסבר רק איך ליצור מכונה חדשה של AlloyDB Omni בהגדרת זמינות גבוהה. הוא לא כולל המרה של מכונות קיימות לזמינות גבוהה.

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

  1. זמינות גבוהה ועמידות נתונים

  2. אם עדיין אין לכם פרויקט, צרו פרויקט ב- Google Cloud .

  3. מוודאים שהחיוב מופעל בפרויקט.

  4. פותחים את Cloud Shell במסוף Google Cloud .

  5. במסוף Google Cloud , משכפלים את מאגר המקור הבא.

    git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
    

התקנה

במדריך הזה אנחנו פורסים אשכול Patroni עם שלושה צמתים באמצעות AlloyDB Omni, ואשכול etcd עם שלושה צמתים בתור מאגר ההגדרות האישיות. בחלק הקדמי של האשכול, אנחנו משתמשים ב-HAProxy בקבוצת מופעי מכונה מנוהלים בשביל כתובת ה-IP הצפה, כדי שיתירות הכשל תהיה שקופה ללקוחות.

ההגדרה הראשונית של המערך הזה מוצגת בדיאגרמה הבאה:

הגדרה שבה HAProxy מנהל את החיבור בין הלקוחות לצומת הראשי

איור 1. הגדרה שבה HAProxy מנהל את החיבור בין הלקוחות לבין הצומת הראשי.

אם מתרחשת הפסקה, ההגדרות משתנות לתרשים הבא:

הגדרות מעודכנות שבהן הצומת הראשי שנכשל מוחלף בצומת הגיבוי

איור 2. הגדרות מעודכנות שבהן הצומת הראשי שנכשל מוחלף בצומת ההמתנה.

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

פריסה

  1. ב-Cloud Shell, אחרי שמשכפלים את המאגר של Cloud Solutions, עוברים לספריית Terraform.

    cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
    
  2. יוצרים ועורכים קובץ terraform.tfvars. בקובץ, מגדירים ערכים למשתנים הבאים:

    project_id                   = "PROJECT_ID"
    region                       = "REGION"
    zones                        = [ZONES]
    node_count                   = 3
    cluster_name                 = "CLUSTER_NAME"
    replication_user_password    = "REPLICATION_USER_PASSWORD"
    postgres_super_user_password = "PG_SUPER_USER_PASSWORD"
    

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

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • ‫REGION: האזור ב- Google Cloud שבו רוצים לפרוס את המשאבים, לדוגמה us-central1.
    • ‫ZONES: רשימה מופרדת בפסיקים של אזורים במירכאות באזור שצוין, לדוגמה "us-central1-a", "us-central1-b", "us-central1-c" או "us-central1-a", "us-central1-c".
    • ‫CLUSTER_NAME: השם של אשכול Patroni ו-AlloyDB Omni.
    • ‫REPLICATION_USER_PASSWORD: הסיסמה של משתמש הרפליקציה.
    • PG_SUPER_USER_PASSWORD: הסיסמה של משתמש-העל של PostgreSQL‏ (postgres).

    למידע נוסף על כל משתנה, ראו את קובץ התצורה של המשתנים ב-GitHub.

  3. מריצים את הסקריפט של Terraform כדי ליצור את כל המשאבים.

    terraform init && terraform apply
    

    הסקריפט הזה יוצר ומגדיר את הדברים הבאים:

    • שלושה צמתים לאשכול ה-etcd

    • שלושה צמתים לאשכול Patroni

    • צומת אחד ל-HAProxy

הגדרת Patroni לסנכרון

כדי ש-Patroni ישתמש רק ברפליקציה סינכרונית באשכול של שלושת הצמתים, צריך להוסיף פריטי הגדרה כמו synchronous_mode,‏ synchronous_node_count,‏ synchronous_commit ו-synchronous_standby_names בקטע ה-bootstrap בקובצי התצורה של Patroni. ההגדרה של Patroni מוגדרת בתבנית של סקריפט לטעינה בזמן ההפעלה ובקובץ /alloydb/config/patroni.yml בצמתים של Patroni. כדי להשתמש ברפליקציה סינכרונית, הגדרת ה-bootstrap של Patroni צריכה להיראות כך:

bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576
    synchronous_mode: true
    synchronous_node_count: 2
    postgresql:
      use_pg_rewind: true
      use_slots: true
      parameters:
        hot_standby: "on"
        wal_keep_segments: 20
        max_wal_senders: 8
        max_replication_slots: 8
        synchronous_commit: remote_apply
        synchronous_standby_names: '*'

כשהאפשרות synchronous_mode מופעלת, Patroni משתמש ברפליקציה סינכרונית בין הרפליקה הראשית לרפליקות האחרות. הפרמטר synchronous_node_count משמש את Patroni לניהול מספר הרפליקות של הגיבוי הסינכרוני. ‫Patroni מנהל מספר מדויק של רפליקות המתנה סינכרוניות על סמך הפרמטר synchronous_node_count, ומתאים את המצב במאגר ההגדרות וב-synchronous_standby_names כשחברים מצטרפים ועוזבים. למידע נוסף על שכפול סינכרוני, קראו את הקטע Replication modes במסמכי התיעוד של Patroni.

המאמרים הבאים