בדף הזה מופיעים מידע ודוגמאות לחיבור למופע Cloud SQL משירות שפועל בפונקציות Cloud Run.
הוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה של פונקציות Cloud Run שמחוברת ל-Cloud SQL זמינות במדריך למתחילים בנושא התחברות מפונקציות Cloud Run.
Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים בענן.
Cloud Run functions הוא פתרון מחשוב קל משקל למפתחים, שמאפשר ליצור פונקציות עצמאיות למטרה יחידה שמגיבות לאירועים ב-Cloud, בלי צורך לנהל שרת או סביבת זמן ריצה.
הגדרת מופע של Cloud SQL
- אם עדיין לא עשיתם את זה, מפעילים את Cloud SQL Admin API בפרויקט Google Cloud שממנו מתחברים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים - יצירת מכונה של Cloud SQL ל-SQL Server. מומלץ לבחור
מיקום של מופע Cloud SQL באותו אזור שבו נמצא שירות Cloud Run, כדי לשפר את זמן האחזור, להימנע מחלק מהעלויות של הרשת ולהפחית את הסיכון לכשלים חוצי-אזורים.
כברירת מחדל, Cloud SQL מקצה כתובת IP ציבורית למכונה חדשה. יש לכם גם אפשרות להקצות כתובת IP פרטית. מידע נוסף על אפשרויות הקישוריות לשניהם זמין בדף סקירה כללית על חיבורים.
- כשיוצרים את המכונה, אפשר לבחור את
היררכיית אישורי השרת (CA) עבור המכונה, ואז להגדיר את ההיררכיה כ-
serverCaModeעבור המכונה. צריך לבחור באפשרות של CA לכל מופע (GOOGLE_MANAGED_INTERNAL_CA) בתור מצב ה-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 ולהוסיף את
Cloud SQL Clientתפקיד ה-IAM לשני הפרויקטים. - מוודאים שלחשבון השירות יש את התפקיד הזה כדי שהחשבון יוכל להתחבר ל-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), לוחצים על הקישור כדי לגשת לשירות 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 וקישור בין רשתות שכנות (peering) של VPC.
- חיבור לרשת (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>
- כאן אפשר לראות את דרישות הגרסה של JDBC socket factory עבור הקובץ pom.xml.
המשך
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
Node.js
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
כתובת IP פרטית
בנתיבי IP פרטיים, האפליקציה מתחברת ישירות למופע דרך רשת VPC. השיטה הזו משתמשת ב-TCP כדי להתחבר ישירות למכונה של Cloud SQL בלי להשתמש בשרת ה-proxy ל-Cloud SQL Auth.
חיבור באמצעות 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.
שיטות מומלצות ומידע נוסף
אתם יכולים להשתמש בשרת proxy ל-Cloud SQL Auth כשאתם בודקים את האפליקציה באופן מקומי. הוראות מפורטות מופיעות במדריך לתחילת העבודה עם שרת proxy ל-Cloud SQL Auth.
מאגרי חיבורים
יכול להיות שהחיבורים למסדי הנתונים הבסיסיים ינותקו, על ידי שרת מסד הנתונים עצמו או על ידי התשתית הבסיסית של פונקציות Cloud Run. מומלץ להשתמש בספריית לקוח שתומכת במאגרי חיבורים שמבצעים חיבור מחדש אוטומטי לחיבורי לקוח שנפסקו. בנוסף, מומלץ להשתמש במאגר חיבורים עם היקף גלובלי כדי להגדיל את הסיכוי שהפונקציה תשתמש מחדש באותו חיבור להפעלות הבאות של הפונקציה, ותסגור את החיבור באופן טבעי כשהמופע יוסר (הקטנת קנה מידה אוטומטית). דוגמאות מפורטות נוספות לשימוש במאגרי חיבורים מופיעות במאמר בנושא ניהול חיבורים למסדי נתונים.מגבלות על חיבורים
ב-Cloud SQL יש מגבלה מקסימלית על מספר החיבורים בו-זמנית, והמגבלות האלה משתנות בהתאם למנוע מסד הנתונים שנבחר (ראו מכסות ומגבלות של Cloud SQL).
מומלץ להשתמש בחיבור לפונקציות של Cloud Run, אבל חשוב להגדיר את המספר המקסימלי של החיבורים ל-1.
ככל שאפשר, צריך להקפיד לאתחל מאגר חיבורים רק לפונקציות שזקוקות לגישה למסד הנתונים. חלק ממאגרי החיבורים יוצרים חיבורים מראש, מה שיכול לצרוך משאבים עודפים ולכלול את החיבורים האלה במגבלות החיבורים שלכם. לכן מומלץ להשתמש ב Lazy Initialization כדי לדחות את היצירה של מאגר חיבורים עד שיהיה צורך בו, ולכלול את מאגר החיבורים רק בפונקציות שבהן הוא נמצא בשימוש.
דוגמאות מפורטות יותר להגבלת מספר החיבורים מופיעות במאמר בנושא ניהול חיבורים למסדי נתונים.
מגבלות מכסת API
פונקציות Cloud Run מספקות מנגנון שמתחבר באמצעות שרת proxy ל-Cloud SQL Auth, שמשתמש ב-Cloud SQL Admin API. מגבלות המכסה של API חלות על שרת proxy ל-Cloud SQL Auth. המיכסה של Cloud SQL Admin API שנעשה בה שימוש היא בערך פי שניים ממספר המופעים של Cloud SQL שהוגדרו כפול המספר הכולל של הפונקציות שנפרסו. אתם יכולים להגדיר את המספר המקסימלי של הפעלות בו-זמניות כדי לשנות את מכסת ה-API הצפויה לשימוש. בנוסף, בפונקציות של Cloud Run יש מגבלות קצב על מספר הקריאות ל-API שמותרות בכל 100 שניות.
המאמרים הבאים
- מידע נוסף על פונקציות Cloud Run
- מידע נוסף על פריסת פונקציות Cloud Run
- מידע נוסף על הגדרת טריגרים לפונקציות Cloud Run
- מידע נוסף על הגדרת פונקציות Cloud Run