בדף הזה מוסבר איך להתחבר למכונה של Cloud SQL משירות שפועל בפונקציות Cloud Run, ומוצגות דוגמאות.
להוראות מפורטות להרצת אפליקציית אינטרנט לדוגמה של פונקציות Cloud Run שמחוברת ל-Cloud SQL, קראו את המדריך למתחילים להתחברות מפונקציות Cloud Run.
Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים בענן.
פונקציות Cloud Run הן פתרון מחשוב קל משקל למפתחים, שמאפשר ליצור פונקציות עצמאיות למטרה יחידה שמגיבות לאירועים ב-Cloud, בלי צורך לנהל שרת או סביבת זמן ריצה.
הגדרת מכונה של Cloud SQL
- מפעילים את Cloud SQL Admin API בפרויקט ב- Google Cloud שממנו מתחברים, אם עדיין לא עשיתם את זה:
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים - יוצרים מכונה של Cloud SQL ל-SQL Server. כדי לשפר את זמן האחזור, להימנע מעלויות מסוימות של רשתות ולהפחית את הסיכונים לכשלים בין אזורים, מומלץ לבחור
מיקום למכונה של Cloud SQL באותו אזור שבו נמצא השירות של פונקציות Cloud Run.
כברירת מחדל, Cloud SQL מקצה כתובת IP ציבורית למכונה חדשה. אפשר גם להקצות כתובת IP פרטית. למידע נוסף על אפשרויות הקישוריות של שניהם, קראו את הדף סקירה כללית על התחברות.
- כשיוצרים את המכונה, אפשר לבחור את
ההיררכיה של אישור השרת (CA) של המכונה, ואז להגדיר את ההיררכיה בתור
serverCaModeשל המכונה. כדי להתחבר למכונות מאפליקציות אינטרנט, צריך לבחור באפשרות של רשות אישורים לכל מכונה (GOOGLE_MANAGED_INTERNAL_CA) כמצב של רשות האישורים בשרת.
הגדרת פונקציות Cloud Run
השלבים להגדרת פונקציות Cloud Run משתנים בהתאם לסוג כתובת ה-IP שהקציתם למכונה של Cloud SQL.כתובת IP ציבורית (ברירת מחדל)
פונקציות Cloud Run תומכות בחיבור ל-Cloud SQL ל-SQL Server באמצעות כתובת IP ציבורית, באמצעות המחברים של Go, Java ו-Python.
כדי להגדיר פונקציות של Cloud Run שיאפשרו חיבורים למכונה של Cloud SQL:- מוודאים שלמכונה שנוצרה יש כתובת IP ציבורית. אפשר לוודא את זה בדף Overview של המכונה במסוףGoogle Cloud . אם אתם צריכים להוסיף כתובת IP ציבורית, קראו את המאמר הגדרת כתובת IP ציבורית.
- משיגים את ה-INSTANCE_CONNECTION_NAME של המכונה. הערך הזה זמין:
- בדף Overview של המכונה במסוףGoogle Cloud , או
- מריצים את הפקודה הבאה:
gcloud sql instances describe [INSTANCE_NAME]
-
מגדירים את חשבון השירות לפונקציה. אם חשבון השירות שנותן הרשאה שייך לפרויקט אחר מזה של המכונה של Cloud SQL, צריך להפעיל את Cloud SQL Admin API ולהוסיף את תפקיד ה-IAM
Cloud SQL Clientלשני הפרויקטים. - מוודאים שלחשבון השירות יש את התפקיד הזה, כדי שהחשבון יוכל להתחבר ל-Cloud SQL.
- אם אתם משתמשים ב
פונקציות Cloud Run ולא בפונקציות Cloud Run (דור ראשון), אתם צריכים את ההרשאות הבאות (ראו גם
הגדרת Cloud Run):
- פורסים את הפונקציה בפעם הראשונה.
כשמתחילים ליצור פונקציית Cloud Run במסוף Google Cloud , שירות Cloud Run הבסיסי עדיין לא נוצר. אי אפשר להגדיר חיבור ל-Cloud SQL עד שהשירות הזה נוצר (על ידי פריסת פונקציית Cloud Run). - במסוף Google Cloud , בפינה הימנית העליונה של הדף Function details, בקטע Powered by Cloud Run, לוחצים על הקישור כדי לגשת לשירות Cloud Run הבסיסי.
- בדף Service details של Cloud Run, בוחרים בכרטיסייה Edit and deploy new revision.
- כדי להגדיר חיבור חדש ל-Cloud SQL, פועלים לפי השלבים הרגילים (כמו בכל שינוי בהגדרות).
הפעולה הזו יוצרת גרסה חדשה של Cloud Run, והגרסאות הבאות מקבלות את החיבור הזה ל-Cloud SQL באופן אוטומטי, אלא אם משנים אותו באופן מפורש.
- פורסים את הפונקציה בפעם הראשונה.
כתובת IP פרטית
אם חשבון השירות המאשר שייך לפרויקט אחר מזה שמכיל את המכונה של Cloud SQL, מבצעים את הפעולות הבאות:
- מפעילים את Cloud SQL Admin API בשני הפרויקטים.
- מוסיפים את הרשאות ה-IAM לחשבון השירות בפרויקט שמכיל את המכונה של Cloud SQL.
- מוודאים שלמכונה של Cloud SQL שיצרתם קודם יש כתובת IP פרטית. אם אתם צריכים להוסיף כתובת IP פרטית, תוכלו להיעזר בהוראות שבמאמר הגדרת כתובת IP פרטית.
- יוצרים מחבר של גישה ל-VPC ללא שרת (Serverless) באותה רשת VPC שבה נמצאת המכונה של Cloud SQL. שימו לב לתנאים הבאים:
- אם אתם לא משתמשים ב- VPC משותף, המחבר צריך להיות באותו פרויקט ובאותו אזור כמו המשאב שמשתמש בו, אבל הוא יכול לשלוח תנועה למשאבים באזורים שונים.
- חיבור לרשת (VPC) מאפליקציית serverless תומך בתקשורת עם רשתות VPC שמחוברות באמצעות Cloud VPN וקישור בין רשתות VPC שכנות (peering).
- אי אפשר להשתמש בחיבור לרשת (VPC) מאפליקציית serverless ברשתות מדור קודם.
- מגדירים את פונקציות Cloud Run כך שישתמשו במחבר.
- מתחברים באמצעות כתובת ה-IP הפרטית של המכונה ויציאה
1433.
התחברות ל-Cloud SQL
אחרי שמגדירים את פונקציות Cloud Run, אפשר להתחבר למכונה של Cloud SQL.
כתובת IP ציבורית (ברירת מחדל)
בנתיבים של כתובות IP ציבוריות, פונקציות Cloud Run מספקות הצפנה ומתחברות באמצעות מחברי Cloud SQL.
התחברות באמצעות מחברים של Cloud SQL
המחברים של Cloud SQL הם ספריות ספציפיות לשפה שמספקות הצפנה והרשאה שמבוססת על IAM כשמתחברים למכונה של Cloud SQL.
Python
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
Java
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
הערה:
- הערך של CLOUD_SQL_CONNECTION_NAME צריך להיות מיוצג בתור <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- כאן מפורטות הדרישות של גרסת ה-socket factory של JDBC לקובץ pom.xml.
המשך
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
Node.js
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
כתובת IP פרטית
בנתיבים של כתובות IP פרטיות, האפליקציה מתחברת ישירות למכונה דרך רשת VPC. בשיטה הזו משתמשים ב-TCP כדי להתחבר ישירות למכונה של Cloud SQL בלי להשתמש ב-Cloud SQL Auth Proxy.
התחברות באמצעות TCP
מתחברים באמצעות כתובת ה-IP הפרטית של מכונת Cloud SQL כמארח וליציאה 1433.
Python
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
Java
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
הערה:
- הערך של CLOUD_SQL_CONNECTION_NAME צריך להיות מיוצג בתור <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- השימוש בארגומנט ipTypes=PRIVATE יאלץ את SocketFactory להתחבר לכתובת ה-IP הפרטית שמשויכת למכונה
- דרישות הגרסה של JDBC socket factory לקובץ pom.xml
Node.js
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
המשך
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
PHP
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
שיטות מומלצות ומידע נוסף
אתם יכולים להשתמש ב-Cloud SQL Auth Proxy כשאתם בודקים את האפליקציה באופן מקומי. הוראות מפורטות מופיעות במאמר התחלה מהירה: שימוש ב-Cloud SQL Auth Proxy.
מאגרי חיבורים
יכול להיות שהחיבורים למסדי הנתונים הבסיסיים ינותקו, על ידי שרת מסד הנתונים עצמו או על ידי התשתית שעליה מבוססות פונקציות Cloud Run. מומלץ להשתמש בספריית לקוח שתומכת במאגרי חיבורים, שמחברים מחדש באופן אוטומטי חיבורי לקוח מנותקים. בנוסף, מומלץ להשתמש במאגר חיבורים ברמת ההיקף הגלובלי כדי להגדיל את הסבירות שהפונקציה תעשה שימוש חוזר באותו חיבור להפעלות הבאות של הפונקציה, ותסגור את החיבור באופן טבעי כשהמכונה תפונה (התאמה אוטומטית לעומס (automatic scaling) כלפי מטה). דוגמאות מפורטות יותר לשימוש במאגרי חיבורים מופיעות במאמר ניהול חיבורים למסדי נתונים.מגבלות על החיבורים
ב-Cloud SQL יש מגבלה על מספר החיבורים בו-זמנית, והמגבלות האלה עשויות להשתנות בהתאם למנוע של מסד הנתונים שנבחר (ראו מכסות ומגבלות ב-Cloud SQL).
מומלץ להשתמש במאגר חיבורים עם פונקציות Cloud Run, אבל חשוב להגדיר את מספר החיבורים המקסימלי ל-1.
במידת האפשר, כדאי להקפיד להפעיל מאגר חיבורים רק לפונקציות שצריכות גישה למסד הנתונים. חלק ממאגרי החיבורים יוצרים חיבורים באופן יזום, מה שעלול לצרוך משאבים מיותרים ולהיכלל במגבלות החיבורים. לכן מומלץ להשתמש ב אתחול מושהה כדי לדחות את היצירה של מאגר החיבורים עד שיהיה בו צורך, ולכלול את מאגר החיבורים רק בפונקציות שבהן משתמשים בו.
במאמר ניהול החיבורים למסד הנתונים תוכלו לקרוא דוגמאות מפורטות יותר שמסבירות איך להגביל את מספר החיבורים.
מגבלות המכסות של ה-API
פונקציות Cloud Run מספקות מנגנון שמתחבר באמצעות Cloud SQL Auth Proxy, שמשתמש ב-Cloud SQL Admin API. מגבלות המכסות של ה-API חלות על Cloud SQL Auth Proxy. המכסה של Cloud SQL Admin API שנעשה בה שימוש היא בערך פי שניים ממספר המכונות של Cloud SQL שהוגדרו, כפול המספר הכולל של הפונקציות שנפרסו. כדי לשנות את מכסת ה-API הצפויה, אתם יכולים להגדיר את המספר המקסימלי של קריאות בו-זמנית. בפונקציות Cloud Run יש גם מגבלות קצב על מספר הקריאות ל-API שמותרות לכל 100 שניות.