ניהול חיבורים למסד נתונים באמצעות נקודות קצה לכתיבה

כדי לנתק את האפליקציות מכתובת ה-IP הספציפית או ממזהה המשאבים האחיד (URI) של המכונה הראשית של AlloyDB ל-PostgreSQL במהלך החלפות, יתירות כשל בין אזורים, שחזורי גיבוי או העברות, אתם יכולים להגדיר נקודת קצה לכתיבה.

נקודת קצה (endpoint) היא משאב של AlloyDB שמספק שם יציב של מערכת שמות דומיינים (DNS), שהאפליקציות יכולות להשתמש בו כדי להתחבר למכונה של AlloyDB. ההפשטה הזו מפשטת את ניהול החיבורים במהלך אירועים תפעוליים – למשל, תוכנית התאוששות מאסון (DR), שחזור גיבויים או העברות – כי אפשר להפנות מחדש את שם ה-DNS של נקודת הקצה למכונה אחרת בלי לשנות את ההגדרות של האפליקציה.

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

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

יתרונות השימוש בנקודות קצה (endpoints)

היתרונות של שימוש בנקודת קצה לכתיבה:

  • תוכנית התאוששות מאסון (DR) פשוטה: אם מבצעים מעבר או יתירות כשל בין אזורים לאשכול משני, AlloyDB מעדכן באופן אוטומטי את נקודת הקצה כך שתפנה למכונה הראשית החדשה. לאחר מכן, האפליקציות יכולות להתחבר מחדש באמצעות אותו שם DNS של נקודת הקצה, וכך לקצר את זמן ההתאוששות (RTO).
  • שחזור גיבוי יעיל: כשמשחזרים מכונה מגיבוי, AlloyDB יוצר מכונה חדשה עם כתובת IP חדשה. אתם יכולים לעדכן את נקודת הקצה כך שתצביע על המכונה החדשה ששוחזרה. היכולת הזו מאפשרת לאפליקציות להמשיך לפעול בלי שינויים בהגדרות.
  • העברות קלות יותר: במהלך ההעברות, אתם יכולים להעביר נקודת קצה ממסד נתונים של מקור למכונה של AlloyDB, עם הפרעה מינימלית לאפליקציה.

מגבלות

  • נקודות הקצה תומכות רק במכונות שמוגדרות לשימוש בגישה לשירותים פרטיים (PSA). נקודות קצה לא תומכות במכונות שמוגדרות לשימוש ב-Private Service Connect ‏ (PSC).
  • אין תמיכה במחברי שפות ל-AlloyDB וב-AlloyDB Auth Proxy בנקודות קצה לכתיבה.
  • אי אפשר לבצע פעולות שינוי בו-זמניות (כמו עדכונים בו-זמניים, או עדכון ומחיקה) בנקודות קצה שמפנות לאותה מכונת יעד, והן עלולות להיכשל.

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

  1. מתקינים ומפעילים את Google Cloud CLI.
  2. מפעילים את Cloud DNS API.
  3. מוודאים שיש לכם מכונה קיימת של AlloyDB שתשמש כיעד לנקודת הקצה.
  4. כדי לקבל את ההרשאות שנדרשות לניהול נקודות קצה, צריך לבקש מהאדמין להקצות לכם את התפקיד אדמין של AlloyDB‏ (roles/alloydb.admin) ב-Identity and Access Management (IAM) בפרויקט. התפקיד המוגדר מראש הזה מכיל את ההרשאות שנדרשות כדי לנהל נקודות קצה.

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

    • alloydb.endpoints.create
    • alloydb.endpoints.update
    • alloydb.endpoints.get
    • alloydb.endpoints.list
    • alloydb.endpoints.delete

מידע נוסף זמין במאמר תפקידים והרשאות ב-IAM ב-AlloyDB.

אפשר ליצור ולנהל נקודות קצה לכתיבה באמצעות Google Cloud CLI.

יצירת נקודת קצה (endpoint)

כדי ליצור נקודת קצה לכתיבה, משתמשים ב-Google Cloud CLI. סוג נקודת הקצה (endpoint) חייב להיות WRITE_ENDPOINT, והיא חייבת לטרגט מכונה ראשית אחת.

המסוף

  1. נכנסים לדף Endpoints במסוף Google Cloud .

    כניסה לדף Endpoints

  2. לוחצים על Create endpoint.

  3. בשדה Endpoint name, מזינים מזהה לנקודת הקצה. השם צריך לכלול אותיות קטנות (a-z), מספרים ומקפים, להתחיל באות קטנה ולהסתיים באות קטנה או במספר.

  4. בוחרים Region.

  5. בשדה Endpoint type, בוחרים באפשרות Write.

  6. בשדה Target instance, בוחרים את מכונת היעד הראשית שאליה נקודת הקצה הזו צריכה להפנות.

  7. לוחצים על יצירה.

gcloud

gcloud beta alloydb endpoints create ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --endpoint-type=ENDPOINT_TYPE \
    --target-instances=TARGET_INSTANCE_NAME

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

  • ‫ENDPOINT_ID: מזהה ייחודי של נקודת הקצה. המזהה הזה חייב להיות ייחודי בפרויקט ובמיקום שצוינו.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫REGION_ID: מזהה האזור שבו רוצים ליצור את נקודת הקצה, לדוגמה us-central1.
  • ‫ENDPOINT_TYPE: סוג המשאב של נקודת הקצה. יש תמיכה רק ב-WRITE_ENDPOINT.
  • ‫TARGET_INSTANCE_NAME: שם המשאב המלא של מכונת AlloyDB ל-PostgreSQL שאליה מפנה נקודת הקצה. הנתיב המלא למשאב של מכונה הוא בפורמט הבא: projects/$PROJECT/locations/$LOCATION/clusters/$CLUSTER/instances/$INSTANCE.

התחברות למכונה באמצעות נקודת קצה (endpoint)

כדי להתחבר למכונה של AlloyDB באמצעות נקודת קצה, קודם צריך לקבל את שם ה-DNS שמשויך לנקודת הקצה ונוצר באופן אוטומטי.

קבלת שם ה-DNS

אתם יכולים לראות את שם ה-DNS של נקודת קצה באמצעות Google Cloud CLI.

המסוף

  1. נכנסים לדף Endpoints במסוף Google Cloud .

    כניסה לדף Endpoints

  2. מוצאים את נקודת הקצה שאליה רוצים להתחבר ומעתיקים את הערך שבעמודה DNS name.

gcloud

  1. משתמשים בפקודה gcloud beta alloydb endpoints describe:

    gcloud beta alloydb endpoints describe ENDPOINT_ID \
        --project=PROJECT_ID \
        --region=REGION_ID
    

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

    • ‫ENDPOINT_ID: המזהה של נקודת הקצה
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫REGION_ID: מזהה האזור שבו נמצאת נקודת הקצה
  2. בפלט הפקודה, מאתרים את השדה dnsName ומעתיקים את הערך שלו.

התחברות באמצעות psql

אחרי שקיבלתם את שם ה-DNS, אתם יכולים להשתמש בו כמארח במחרוזת החיבור או בכלי הלקוח. לדוגמה, כדי להתחבר באמצעות הלקוח psql, מריצים את הפקודה הבאה:

psql -h DNS_NAME -U USERNAME -d DATABASE_NAME

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

  • ‫DNS_NAME: שם ה-DNS של נקודת הקצה
  • ‫USERNAME: המשתמש במסד הנתונים שאליו רוצים להתחבר
  • ‫DATABASE_NAME: השם של מסד הנתונים שאליו רוצים להתחבר

למידע נוסף על השימוש ב-psql, קראו את המאמר התחברות באמצעות לקוח psql.

עדכון נקודת קצה (endpoint)

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

המסוף

  1. נכנסים לדף Endpoints במסוף Google Cloud .

    כניסה לדף Endpoints

  2. בשורה של נקודת הקצה שרוצים לעדכן, לוחצים על Actions ואז על Edit.

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

  4. לוחצים על עדכון.

gcloud

gcloud beta alloydb endpoints update ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --target-instances=NEW_TARGET_INSTANCE_NAME

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

  • ‫ENDPOINT_ID: המזהה של נקודת הקצה שרוצים לעדכן
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫REGION_ID: המזהה של האזור שבו נמצאת נקודת הקצה
  • ‫NEW_TARGET_INSTANCE_NAME: שם המשאב המלא של מכונות היעד החדשות

לראות רשימה של נקודות הקצה

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

המסוף

  1. נכנסים לדף Endpoints במסוף Google Cloud .

    כניסה לדף Endpoints

    בדף מופיעה רשימה של כל נקודות הקצה בפרויקט הנוכחי.

gcloud

gcloud beta alloydb endpoints list --project=PROJECT_ID \
    --region=REGION_ID

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫REGION_ID: מזהה האזור שבו נמצאת נקודת הקצה

הצגת הפרטים של נקודת הקצה

כדי לראות את הפרטים של נקודת קצה ספציפית, משתמשים בפקודה הבאה ב-Google Cloud CLI:

gcloud

gcloud beta alloydb endpoints describe ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID

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

  • ‫ENDPOINT_ID: המזהה של נקודת הקצה שרוצים לתאר
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫REGION_ID: מזהה האזור שבו נמצאת נקודת הקצה

במסוף Google Cloud , אפשר לראות את פרטי נקודת הקצה בדף Endpoints.

מחיקה של נקודת קצה (endpoint)

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

המסוף

  1. נכנסים לדף Endpoints במסוף Google Cloud .

    כניסה לדף Endpoints

  2. בשורה של נקודת הקצה שרוצים למחוק, לוחצים על Actions ובוחרים באפשרות Delete.

  3. כדי לאשר, מקלידים את מזהה נקודת הקצה ולוחצים על מחיקה.

gcloud

gcloud beta alloydb endpoints delete ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID

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

  • ‫ENDPOINT_ID: המזהה של נקודת הקצה שרוצים למחוק
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫REGION_ID: מזהה האזור שבו נמצאת נקודת הקצה

התנהגות של נקודת קצה (endpoint) לכתיבה במהלך מעבר או יתירות כשל בין אזורים

שם ה-DNS של נקודת הקצה מתורגם לכתובת ה-IP של מכונה ספציפית בזמן היצירה, אבל נקודות הקצה האלה הן דינמיות. במקרה של פעילויות רפליקציה בין אזורים, כמו מעבר או יתירות כשל בין אזורים (גרסת טרום-השקה (Preview)), נקודות הקצה לכתיבה של AlloyDB שומרות על קישוריות רציפה בלי התערבות ידנית. כשמקדמים אשכול משני כדי שיהפוך לאשכול הראשי החדש, נקודת הקצה מעדכנת באופן אוטומטי את רשומת ה-DNS שלה כך שתצביע על המכונה הראשית החדשה. ההתנהגות הזו מבטלת את הצורך בהגדרה ידנית מחדש של מחרוזות החיבור של האפליקציה, מפחיתה באופן משמעותי את המורכבות התפעולית ומצמצמת את זמן ההשבתה כדי לעמוד ביעד זמן ההתאוששות (RTO).

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

מניעת כתיבות סותרות במהלך יתירות כשל

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

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