פתרון בעיות ברשת ב-Dataflow

כללי הניתוב וחומת האש של הענן הווירטואלי הפרטי (VPC) עוזרים ל-workers של Dataflow לתקשר זה עם זה ולהגיע לנקודות הקצה הנדרשות של Google Cloud . כאן מוסבר איך לאבחן ולפתור שגיאות בחיבור לרשת, כמו זמן קצוב לתפוגה של תקשורת בין ה-workers, ניצול מלא של כתובות ה-IP והגדרות חסרות של גישה פרטית ל-Google.

למידע נוסף על הגדרת הרשת של משימות Dataflow, קראו את המאמרים הגדרת גישה לאינטרנט וכללי חומת אש וציון רשת ורשת משנה.

אי אפשר ליצור PoolableConnectionFactory

השגיאה הבאה מתרחשת כשמשימת Dataflow צריכה להתחבר למסד נתונים חיצוני:

java.sql.SQLException: Cannot create PoolableConnectionFactory
(The connection attempt failed.)

הבעיה הזו מתרחשת כש-Dataflow worker לא מצליח להתחבר לשרת של מסד הנתונים, בדרך כלל בגלל כלל תעבורת נתונים יוצאת או חומת אש.

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

כדי לעדכן את כללי התעבורה היוצאת, קראו את הדוגמה לכלל תעבורה יוצאת של חומת האש.

הזמן הקצוב לתפוגה של החיבור מסתיים כשמשתמשים ב-Cloud NAT

השגיאה הבאה יכולה להתרחש כשמשימת Dataflow מנסה להתחבר לשירות חיצוני דרך שער Cloud NAT:

java.net.ConnectTimeoutException: Connection timed out

הבעיה הזו יכולה לקרות אם משימת Dataflow מוגדרת להשתמש בכתובות IP חיצוניות, כשהרשת מוגדרת גם להשתמש ב-Cloud NAT לתעבורת נתונים יוצאת. כשל-workers של Dataflow יש כתובות IP חיצוניות, הם מנסים לנתב את התנועה ישירות לאינטרנט במקום דרך שער Cloud NAT. אם כללי חומת האש מונעים את הגישה הישירה הזו, יכול להיות שתקבלו הודעות על זמן קצוב לתפוגה של החיבור.

כדי לפתור את הבעיה, צריך להגדיר את ה-workers של Dataflow כך שלא ישתמשו בכתובות IP חיצוניות. ההגדרה הזו עוזרת לוודא שתנועת הנתונים היוצאת מנותבת דרך שער Cloud NAT שהוגדר. מידע נוסף זמין במאמרי העזרה בנושא Cloud NAT.

במאמר הגדרת גישה לאינטרנט וכללי חומת אש מוסבר איך להשבית כתובות IP חיצוניות.

אי אפשר להפנות למשאב הזה מפרויקטים אחרים

השגיאה הבאה מתקבלת כשמריצים משימת Dataflow ברשת VPC משותפת:

Invalid value for field 'resource.properties.networkInterfaces[0].subnetwork':
'https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK'.
Cross-project references for this resource are not allowed.

הבעיה הזו מתרחשת אם מציינים רשת משנה ברשת VPC משותפת, אבל פרויקט השירות לא מצורף לפרויקט המארח של ה-VPC המשותף.

כדי לפתור את הבעיה, אדמין של VPC משותף צריך לצרף את פרויקט השירות לפרויקט המארח.

המכונה צריכה להיות באותו אזור שבו נמצאת רשת המשנה

השגיאה הבאה מתרחשת כשמריצים משימת Dataflow עם רשת משנה ספציפית:

Failed to start the VM, launcher-ID, used for launching because of status code: INVALID_ARGUMENT, reason: Invalid Error:
Message: Invalid value for field 'resource.networkInterfaces[0].subnetwork': 'https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK'. Instance must be in the same region as the subnetwork.
HTTP Code: 400.

הבעיה הזו מתרחשת כשהמשימה ורשת המשנה שצוינה במשימה נמצאות באזורים שונים.

כדי לפתור את הבעיה, צריך להריץ את המשימה באזור שבו נמצאת רשת המשנה. לדוגמה, אם רשת המשנה נמצאת ב-us-central1, צריך להריץ את המשימה באזור us-central1.

אין יותר כתובות IP פנויות

כשיוצרים משימת Dataflow או מפעילים פעולת התאמה אוטומטית לעומס, יכול להיות שהפעולות האלה ייכשלו ותופיע ההודעה הבאה:

IP_SPACE_EXHAUSTED: Instance 'INSTANCE_NAME' creation failed: IP space of 'projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK' is exhausted.

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

  1. להקטין את מספר הבקשות של ה-worker למשימת Dataflow. אפשר להגדיר מספר ספציפי של וורקרים באמצעות האפשרות num_workers של צינור עיבוד הנתונים, או להגדיר גבול עליון למספר הוורקרים באמצעות האפשרות max_num_workers של צינור עיבוד הנתונים. מידע נוסף זמין במאמר Pipeline options.
  2. אם אפשר, מגדילים את הגודל של רשת המשנה של משימת Dataflow. למידע על הרחבת רשת משנה קיימת, עיינו במסמכי התיעוד של ענן פרטי וירטואלי.
  3. משתמשים ברשת משנה אחרת עם מספיק כתובות IP זמינות למשימת Dataflow.
  4. אם אפשר, צרו רשת משנה ייעודית עם מספיק כתובות IP למשימות Dataflow.

אם משאב הרשת נמצא במצב של רשת משנה בהתאמה אישית, צריך לציין רשת משנה בממשק הרשת

השגיאה הבאה מתרחשת כשמריצים משימת Dataflow:

Workflow failed. Causes: Invalid Error: Message: Invalid value for field
'resource.properties.networkInterfaces[0].subnetwork': ''. Network interface
must specify a subnet if the network resource is in custom subnet mode. HTTP
Code: 400

הבעיה הזו מתרחשת אם רשת ה-VPC שנקראת default הומרה מרשת VPC במצב אוטומטי לרשת VPC במצב מותאם אישית.

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

אי אפשר להגיע לרשת

השגיאה הבאה מתקבלת כשמנסים להריץ משימת Dataflow כשכתובות ה-IP החיצוניות מושבתות:

NewConnectionError(''<pip._vendor.urllib3.connection.HTTPSConnection  object at ID>:
Failed to establish a new connection: [Errno 101] Network is unreachable

הבעיה הזו מתרחשת כי הגדרתם את צינור עיבוד הנתונים כך שלא יאפשר חיבורים לכתובות IP חיצוניות, אבל כדי להריץ את צינור עיבוד הנתונים צריך להתחבר לכתובת IP חיצונית. האפשרויות הבאות של צינור עיבוד הנתונים משביתות את החיבורים לכתובות IP חיצוניות:

Java

--usePublicIps=false

Python

--no_use_public_ips=true

המשך

--no_use_public_ips=true

API

options = PipelineOptions(use_public_ips=False)

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

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

מידע נוסף על הגדרת הגישה לאינטרנט ב-Dataflow זמין במאמר גישה לאינטרנט ב-Dataflow.

הרשת או רשת המשנה לא קיימת או שאין גישה אליה מחשבון השירות של Dataflow

אחת מהשגיאות הבאות מתרחשת כשמנסים להריץ משימת Dataflow. המשימה נכשלת.

Workflow failed. Causes: Network default is not accessible to Dataflow Service
account or does not exist
Workflow failed. Causes: Subnetwork SUBNETWORK is not
accessible to Dataflow Service account or does not exist

הבעיה הזו יכולה לקרות מהסיבות הבאות:

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

כדי לפתור את הבעיה, צריך לפעול לפי ההנחיות להגדרת רשת ורשת משנה.

הזמן הקצוב לתפוגה של ה-RPC חלף או שהחיבור ליציאות 12345 או 12346 נכשל

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

למשימות סטרימינג:

Rpc to WORKER_HARNESS:12345 completed with error
UNAVAILABLE: failed to connect to all addresses; last error : UNKNOWN:
ipv4:WORKER_IP_ADDRESS:12345: Failed to connect to remote
host: FD Shutdown

למשימות באצווה:

(g)RPC timed out when SOURCE_WORKER_HARNESS talking to
DESTINATION_WORKER_HARNESS:12346.

הבעיה הזו מתרחשת אם חסר כלל של חומת אש שמאפשר תנועה ברשת ביציאות TCP‏ 12345 ו-12346. כשהמשימה משתמשת בכמה וורקרים, הם לא יכולים לתקשר זה עם זה.

כדי לפתור את הבעיה, אפשר לעיין בשלבים לפתרון בעיות בקטע DEADLINE_EXCEEDED או Server Unresponsive.

תהליך עבודה יחיד מופעל ומופסק שוב ושוב

הבעיה הבאה מתרחשת כשמפעילים משימת Dataflow. בדף Job metrics של משימת Dataflow, בתרשים CPU utilization (All Workers) מוצג ש-worker מופעל שוב ושוב ואז נעצר אחרי כמה דקות. בכל זמן נתון, רק עובד אחד זמין.

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

מופיעה השגיאה הבאה:

The Dataflow job appears to be stuck because no worker activity has been seen
in the last 1h. Please check the worker logs in Stackdriver Logging.

לא נוצרים יומני עובדים.

ביומני המשימות, יכול להיות שיופיעו כמה הודעות שדומות להודעה הבאה:

Autoscaling: Raised the number of workers to 1 based on the rate of progress in
the currently running stage(s).

הבעיה הזו מתרחשת אם לרשת ה-VPC אין מסלול ברירת מחדל לאינטרנט ומסלול ברירת מחדל לרשת המשנה.

כדי לפתור את הבעיה, הוסיפו נתיבי ברירת מחדל לרשת ה-VPC. מידע נוסף זמין במאמר גישה לאינטרנט ב-Dataflow.

הבעיה הזו יכולה לקרות גם אם חשבון השירות של ה-worker VM שמנוהל על ידי המשתמש ו-Dataflow job נמצאים בפרויקטים שונים. כדי להימנע מהבעיה הזו כשמשתמשים בחשבונות שירות בפרויקטים שונים, קראו את ההנחיות בשלבים 3 ו-4 במאמר ציון חשבון שירות של worker VM בניהול המשתמש.

אם לרשת ה-VPC יש נתיבי ברירת מחדל, וחשבון השירות של ה-worker VM שמנוהל על ידי המשתמש והמשימה ב-Dataflow נמצאים באותו פרויקט, נכנסים ל-worker VM של המשימה ב-Dataflow ובודקים את היומנים בספרייה /var/log/dataflow כדי לזהות את הבעיה.

לרשת המשנה אין גישה פרטית ל-Google

השגיאה הבאה מתרחשת כשמפעילים משימת Dataflow שבה כתובות IP חיצוניות מושבתות:

Workflow failed. Causes: Subnetwork SUBNETWORK on project
PROJECT_ID network NETWORK in
region REGION does not have Private Google Access, which
is required for usage of private IP addresses by the Dataflow workers.

הבעיה הזו מתרחשת אם משביתים את כתובות ה-IP החיצוניות בלי להפעיל גישה פרטית ל-Google.

כדי לפתור את הבעיה, מפעילים גישה פרטית ל-Google ברשת המשנה שבה משתמשת משימת Dataflow.

לא ניתן ליצור Dataflow עם טווח כתובות IP שצוין

ב-Dataflow אי אפשר להקצות טווח כתובות IP סטטיות למכונות הווירטואליות של ה-worker. כדי לפתור את הבעיה, אפשר ליצור רשת משנה עם טווח כתובות IP ספציפי ולפרוס את משימת Dataflow ברשת המשנה הזו.

למידע נוסף על שימוש ברשתות משנה עם Dataflow, קראו את המאמר ציון רשת ורשת משנה.

מידע נוסף על הגדרת טווחי כתובות IP ברשתות משנה זמין במאמר הגדרת טווחי כתובות IP חלופיות.

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

יכול להיות שתצטרכו גם ליצור כלל NAT ונתב. מידע נוסף מופיע במאמר Cloud NAT.

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

לשלבים נוספים לפתרון בעיות ברשת, קראו את המאמר פתרון בעיות בקישוריות פנימית בין מכונות וירטואליות.