סקירה כללית
בדף הזה מוסבר איך להשתמש בנקודת קצה (endpoint) לכתיבה כדי להתחבר מלקוחות ברשת של הענן הווירטואלי הפרטי (VPC) למופע Cloud SQL באמצעות גישה לשירותים פרטיים (PSA).
נקודת קצה לכתיבה היא שם גלובלי של Domain Name Service (DNS) שמקבל באופן אוטומטי את כתובת ה-IP של המופע הראשי הנוכחי. במקרה של פעולת יתירות כשל או מעבר לשרת חלופי של רפליקה, נקודת הקצה הזו של הכתיבה מפנה אוטומטית את החיבורים הנכנסים למכונה הראשית החדשה. אתם יכולים להשתמש בנקודת הקצה לכתיבה במחרוזת חיבור SQL למופע Cloud SQL במקום להשתמש בכתובת IP. שימוש בנקודת קצה לכתיבה מאפשר לכם להימנע משינויים בחיבור האפליקציה כשאתם מבצעים גיבוי אוטומטי של רפליקה או מעבר לגיבוי אוטומטי של רפליקה לצורך שחזור של אזור שהושבת או תרגיל שחזור מאסון.
לכל מופע שעומד בדרישות ב-Cloud SQL יש נקודת קצה מובנית אחת לכתיבה, שהשם, היצירה והעדכון שלה מנוהלים על ידי Cloud SQL. הדוגמה הבאה ממחישה את הפורמט:
primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.
נקודת הקצה לכתיבה תמיד מסתיימת בסיומת .global.sql-psa.goog..
אי אפשר לשנות את השם או הפורמט של נקודת הקצה הזו לכתיבה שמנוהלת על ידי Cloud SQL.
אפשר להשתמש בנקודת הקצה לכתיבה לכל פעולות הכתיבה במופע הראשי, כולל הוספות, עדכונים, מחיקות ושינויים ב-DDL. אפשר להשתמש בנקודת הקצה של הכתיבה גם לפעולות קריאה, כמו שאילתות. כתובת ה-IP הפרטית שאליה מצביעה נקודת הקצה לכתיבה משתנה באופן אוטומטי על ידי Cloud SQL כשמבצעים יתירות כשל של רפליקה או פעולת מעבר כדי להעלות מופע רפליקה למופע הראשי החדש.
יצירת נקודת הקצה לכתיבה
אם יוצרים מכונה חדשה של Cloud SQL, Cloud SQL יוצר באופן אוטומטי את נקודת הקצה לכתיבה כשמתקיימים התנאים המוקדמים הבאים:
- צריך להפעיל את ממשקי ה-API הבאים ב Google Cloud פרויקט שבו נמצאת מכונת Cloud SQL:
אם לא מפעילים את Cloud DNS API בפרויקט, אי אפשר ליצור את תחום ה-DNS של הקישור בין רשתות שכנות (peering), ולכן אי אפשר להשתמש בשמות ה-DNS.
אחרי שיוצרים בהצלחה את תחום ה-DNS של הפירינג, חשוב לא לשנות אותו בשום צורה. כל שינוי, כולל מחיקה, יגרום לכך שלא יהיה אפשר להשתמש ב-DNS לחיבור למסד הנתונים.
- המופע ב-Cloud SQL צריך להיות מהדורת Cloud SQL Enterprise Plus.
- צריך להגדיר את מכונת Cloud SQL לשימוש בכתובת IP פרטית עם גישה לשירותים פרטיים (PSA).
- כדי להשתמש בתכונה הזו, צריך ליצור מופעים בארכיטקטורת הרשת החדשה. ברוב המקרים, מופעים חדשים נוצרים עם הארכיטקטורה החדשה. כדי לוודא זאת, צריך לבדוק את ארכיטקטורת הרשת של המופע.
כשמשדרגים מכונה קיימת במהדורת Cloud SQL Enterprise למכונה במהדורת Cloud SQL Enterprise Plus, מערכת Cloud SQL יוצרת אוטומטית את נקודת הקצה לכתיבה אם מתקיימות הדרישות המוקדמות שצוינו קודם. אם המכונה הקיימת שלכם נמצאת בארכיטקטורת הרשת הישנה, אתם צריכים קודם לשדרג את המכונה לארכיטקטורת הרשת החדשה כדי לקבל את נקודת הקצה לכתיבה.
אם כבר יש לכם מופע של Cloud SQL Enterprise Plus ללא נקודת קצה לכתיבה ואתם רוצים ש-Cloud SQL ייצור נקודת קצה לכתיבה באופן אוטומטי, אתם צריכים ליצור רפליקה שמופעלת בה אפשרות מתקדמת לשחזור מאסון.
הצגת נקודת הקצה של הכתיבה
gcloud
כדי למצוא את נקודת הקצה של הכתיבה, משתמשים בפקודה הבאה ב-CLI של gcloud:
gcloud sql instances describe INSTANCE_NAME \ | grep writeEndpoint
מחליפים את הפרטים הבאים:
INSTANCE_NAME: השם של מכונת Cloud SQL.
נקודות קצה של כתיבה תמיד מסתיימות בסיומת .global.sql-psa.goog., כמו בדוגמה הבאה:
primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.
אם לא מופיעה נקודת הקצה לכתיבה עבור מופע שעומד בדרישות, אפשר לעיין במאמר פתרון בעיות.
התחברות למכונה של Cloud SQL באמצעות נקודת קצה לכתיבה
sqlcmd
כדי לחבר לקוח sqlcmd למכונת Cloud SQL באמצעות נקודת הקצה לכתיבה, מריצים את הפקודה הבאה:
sqlcmd -S WRITE_ENDPOINT -U USERNAME -d DATABASE_NAME -P
מחליפים את הפרטים הבאים:
- DATABASE_NAME: שם מסד הנתונים. לדוגמה:
main. - USERNAME: שם המשתמש. לדוגמה,
sqlserver. - WRITE_ENDPOINT: שם ה-DNS או נקודת הקצה לכתיבה הערך האלפאנומרי הזה תמיד מסתיים בסיומת
.global.sql-psa.goog.. לדוגמה,primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog..
מגבלות
- נקודות קצה לכתיבה לא זמינות ליצירת מופעים במהדורת Cloud SQL Enterprise.
- נקודות קצה לכתיבה לא זמינות במקרים הבאים: מכונות וירטואליות עם כתובת IP ציבורית בלבד או מכונות וירטואליות עם Private Service Connect בלבד.
פתרון בעיות
בקטעים הבאים מתוארת הארכיטקטורה של נקודות קצה לכתיבה, ומוסבר איך לפתור בעיות נפוצות.
ארכיטקטורה של נקודת קצה לכתיבה
כשיוצרים מופע שעומד בדרישות, נוצרת כברירת מחדל נקודת קצה לכתיבה.
כדי ליצור נקודת קצה לכתיבה, Cloud SQL מבצע את ההגדרה הבאה:
- יצירה של אזור DNS פרטי ברשת ה-VPC של ספק שירות Cloud SQL
- יוצר תחום DNS של peering ברשת ה-VPC של הלקוח
- יצירת רשומת DNS באזור ה-DNS הפרטי ברשת של בעלי השירות המנוהל
התרשים הבא ממחיש איך התהליך הזה עובד:
בעיות בפענוח DNS
אם פתרון ה-DNS לא פועל, כדאי לבדוק כל אחד מהפריטים הבאים:
- חשוב לוודא שכל הדרישות המוקדמות מתקיימות.
- מוודאים שהלקוחות שבהם צפוי הפתרון נמצאים באותה רשת שאליה מצורפת מכונת Cloud SQL. כדי לבדוק את זה, משתמשים בפקודה
gcloud compute instances list:gcloud compute instances list \ --format="table( name, zone.basename(), networkInterfaces[].network )" \ --project=PROJECT_NAME
מחליפים את PROJECT_NAME בשם הפרויקט שבו נמצאת רשת צרכני ה-DNS.
- מוודאים שאזור הפירינג קיים. כדי לעשות זאת, משתמשים בפקודה
gcloud dns managed-zones list:gcloud dns managed-zones list \ --project=PROJECT_NAME
מחליפים את PROJECT_NAME בשם הפרויקט שבו נמצאת רשת צרכני ה-DNS.
למופע החדש אין נקודת קצה לכתיבה
אם מופע חדש שנוצר לא מכיל נקודת קצה לכתיבה, צריך לבדוק כל אחד מהפריטים הבאים:
- חשוב לוודא שכל הדרישות המוקדמות מולאו.
- מוודאים שאין תחום DNS של שירותי peering שנותר עם שם ה-DNS
sql-psa.goog..תחום DNS מקושר הוא תחום DNS שנשאר אם לרשת שמשויכת לתחום ה-DNS אין קישור בין רשתות VPC עם מזהה פרויקט עמית של תחום ה-DNS המקושר.
אם נשאר אזור DNS של שירותי Peering עם הסיומת
sql-psa.goog., צריך למחוק אותו.כדי לבדוק אם נשארו אזורי DNS של שירותי Peering, משתמשים בפקודה
gcloud dns managed-zones list:gcloud dns managed-zones list \ --project=PROJECT_NAME
מחליפים את PROJECT_NAME בשם הפרויקט שבו נמצאת רשת הצרכן של ה-DNS.
אם קיים תחום DNS עם הסיומת
sql-psa.goog., צריך למחוק את תחום ה-DNS אחרי שמוודאים שתחום ה-DNS של הקישור בין רשתות שכנות (peering) הוא תחום DNS שנותר.כדי למחוק תחום DNS, משתמשים בפקודה
gcloud dns managed-zones delete:gcloud dns managed-zones delete ZONE_NAME
מחליפים את ZONE_NAME בשם תחום ה-DNS שמשויך לנקודות הקצה של הכתיבה. הערכים הם אלפאנומריים ומופיעים בפורמט הבא:
cloud-sql-psa-dns-1234567890.