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

בדף הזה מוסבר איך לפתור בעיות ברשת של Dataflow.

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

לא ניתן ליצור PoolableConnectionFactory

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

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

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

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

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

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

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

java.net.ConnectTimeoutException: Connection timed out

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

כדי לפתור את הבעיה, צריך להגדיר את העובדים של 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. מצמצמים את מספר בקשות העובדים למשימת Dataflow. אתם יכולים לספק מספר ספציפי של עובדים על ידי הגדרת אפשרות הצינור num_workers, או להגדיר גבול עליון למספר העובדים באמצעות אפשרות הצינור max_num_workers. מידע נוסף זמין במאמר בנושא אפשרויות של צינורות.
  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

Go

--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 שלא נעשה בה שימוש ב-Streaming Engine או בארגון נתונים של 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. בתרשים CPU utilization (All Workers) בדף Job metrics של משימת Dataflow, אפשר לראות שעובד מופעל שוב ושוב ואז נעצר אחרי כמה דקות. רק עובד אחד זמין בכל רגע נתון.

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

השגיאה הבאה מתרחשת:

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.

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

אם ברשת ה-VPC שלכם יש מסלולים שמוגדרים כברירת מחדל, וחשבון השירות של העובד המנוהל על ידי המשתמש ומשימת Dataflow נמצאים באותו פרויקט, צריך להיכנס למכונה הווירטואלית של העובד של משימת 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 קבוע למכונות וירטואליות של עובדים. כפתרון עקיף, אפשר ליצור רשת משנה עם טווח כתובות IP ספציפי ולפרוס את עבודת Dataflow ברשת המשנה הזו.

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

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

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

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

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

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