התחברות למקור ציבורי ממופע פרטי

בדף הזה נסביר איך להתחבר לאפליקציות מסוג תוכנה כשירות (SaaS) כמו Salesforce, ולשירותי ענן של צד שלישי כמו Amazon S3, ממופע פרטי של Cloud Data Fusion כשמפתחים צינור נתונים.

במדריך הזה אנחנו משתמשים במונחים תעבורת נתונים יוצאת (egress) ושליטה בתעבורת נתונים יוצאת:

  • תעבורת נתונים יוצאת (egress) היא תעבורת הנתונים ברשת שיוצאת מ- Google Cloud דרך האינטרנט הציבורי. בדרך כלל, יציאה מתרחשת כשיוצרים צינור שקורא משירות SaaS כמו Salesforce או כותב אליו, או משירות ענן ציבורי כמו Amazon S3.

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

בתרשים הבא של ארכיטקטורת המערכת מוצג איך מופע פרטי של Cloud Data Fusion מתחבר לאינטרנט הציבורי כשמפתחים צינור עיבוד נתונים:

דיאגרמת ארכיטקטורה של מופע פרטי

כשמעצבים את הפייפליין בתרחיש הזה, Cloud Data Fusion מעביר את תעבורת הנתונים היוצאת (egress) דרך פרויקט הלקוח בתצוגה המקדימה של Cloud Data Fusion או ב-Wrangler. בתהליך הזה נעזרים במקורות המידע הבאים:

  • מסלול מותאם אישית ברשת VPC: מסלול מותאם אישית ברשת VPC מעביר תנועה דרך מסלול מותאם אישית שיובא למכונות וירטואליות של שערים, שמייצאות לרשת VPC של פרויקט דייר באמצעות VPC Peering.

  • מכונה וירטואלית של שער: מכונה וירטואלית של שער מנתבת תעבורת נתונים יוצאת מ- Google Cloud מפרויקט הדייר של Cloud Data Fusion אל SaaS או אל ענן של צד שלישי דרך האינטרנט הציבורי. אתם מנהלים את המכונה הווירטואלית הזו בפרויקט הלקוח שלכם. אפשר להגדיר אותו בסביבת זמינות גבוהה (HA) באמצעות מאזן עומסים פנימי (ILB). מומלץ להשתמש מחדש ב-VM לכמה מופעים פרטיים של Cloud Data Fusion באותו VPC.

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

לפני שמתחילים

הגדרת חיבור לאינטרנט

בשלבים הבאים מוסבר איך לגשת לקטגוריה של Amazon S3 ממופע פרטי של Cloud Data Fusion ב-Wrangler. אותם השלבים חלים על גישה לכל מקור נתונים באינטרנט הציבורי כשמעצבים צינור ב-Preview או ב-Wrangler.

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

יצירת שער NAT

יוצרים שער Cloud NAT באותו אזור ורשת VPC כמו המכונה הפרטית של Cloud Data Fusion.

כניסה ל-Cloud NAT

יצירת מופע של מכונה וירטואלית של שער וכללים לחומת האש

המסוף

  1. נכנסים לדף VM instances.

    כניסה לדף VM instances

  2. לוחצים על Create instance. מומלץ להשתמש במכונה וירטואלית ללא כתובת IP חיצונית.

  3. משתמשים באותו VPC שמוגדר בו קישור בין רשתות שכנות (peering) עם מכונת Cloud Data Fusion פרטית. מידע נוסף על רשת VPC Network Peering בתרחיש הזה זמין במאמר לפני שמתחילים.

  4. מפעילים העברת IP עבור המכונה באותה רשת שבה נמצאת מכונת Cloud Data Fusion.

  5. בשדה סקריפט לטעינה בזמן ההפעלה, מזינים את הסקריפט הבא:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE
    echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf
    iptables-save
    

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

    כדי לקבל את טווח כתובות ה-IP שהוקצה למכונת Cloud Data Fusion, עוברים לדף פרטי המכונה ב-Cloud Data Fusion.

    ממשק יציאה של סביבת Staging

gcloud

כדי ליצור את מכונת השער הווירטואלית ואת כללי חומת האש, מריצים את הסקריפט הבא ב-Google Cloud CLI:

export CDF_PROJECT=CDF_PROJECT
export GATEWAY_VM=GATEWAY_VM_NAME
export ZONE=VM_ZONE
export SUBNET=SUBNET
export VPC_NETWORK=VPC_NETWORK
export COMPUTE_ENGINE_SA=COMPUTE_ENGINE_SA

gcloud beta compute --project=$CDF_PROJECT instances create $GATEWAY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --network-tier=PREMIUM --metadata=startup-script=\#\!\ /bin/bash$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables-save  --can-ip-forward --no-address --maintenance-policy=MIGRATE --service-account=$COMPUTE_ENGINE_SA --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server,https-server --image=debian-10-buster-v20210316 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=$GATEWAY_VM --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any

gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-http --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:80 --source-ranges=CDF_IP_RANGE --target-tags=http-server

gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE --target-tags=https-server

מחליפים את מה שכתוב בשדות הבאים:

  • ‫CDF_PROJECT: המזהה הייחודי של הפרויקט שאפשר להתאים אישית
  • ‫GATEWAY_VM: השם של המכונה הווירטואלית שרוצים להגדיר
  • ‫ZONE: האזור של המכונה הווירטואלית
  • ‫SUBNET: תת-הרשת
  • ‫VPC_NETWORK: השם של מכונת ה-VM
  • ‫COMPUTE_ENGINE_SA: השם של חשבון השירות של Compute Engine
  • ‫CDF_IP_RANGE: טווח כתובות ה-IP שהוקצה למופע של Cloud Data Fusion

שימוש ב-VPC משותף

אם אתם משתמשים ב-VPC משותף כדי לחבר את מופע Cloud Data Fusion הפרטי שלכם למקורות באינטרנט הציבורי, אתם צריכים ליצור מכונת שער וירטואלית בפרויקט המארח שבו מוגדר קישור בין רשתות שכנות של VPC עם פרויקט הדייר.

יצירת מסלול בהתאמה אישית

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

המסוף

כדי ליצור מסלול במסוף Google Cloud , אפשר לעיין במאמר בנושא הוספת מסלול סטטי.

כשמגדירים את המסלול:

  • מגדירים את העדיפות לערך שגדול מ-1001 או שווה לו. מגדירים את היעד לטווח כתובות ה-IP שהוקצה למופע Cloud Data Fusion.
  • משתמשים באותו פרויקט ובאותו VPC כמו במכונת Cloud Data Fusion הפרטית.
  • חשוב לוודא שההגדרה של הקישור בין רשתות שכנות ב-VPC מאפשרת ייצוא של נתיבים, כדי שפרויקט הדייר של Cloud Data Fusion יוכל לייבא את הנתיב המותאם אישית הזה דרך הקישור בין רשתות שכנות ב-VPC.

gcloud

כדי ליצור את המסלול ב-CLI של gcloud:

export ROUTE=ROUTE
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \
    --network=$VPC_NETWORK --priority=1001 \
    --destination-range=0.0.0.0/0 \
    --next-hop-instance=$GATEWAY_VM \
    --next-hop-instance-zone=$ZONE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ROUTE: השם של המסלול המותאם אישית.

אימות ההגדרה

אחרי שמבצעים את השלבים הקודמים, צריך לוודא שאפשר לגשת לשירותי S3 bucket (או לשירות SaaS אחר או לשירות ענן ציבורי) בתצוגה המקדימה וב-Wrangler.

הגדרת שער עם זמינות גבוהה

מומלץ: לאפליקציות קריטיות, מומלץ ליצור מכונות וירטואליות עם איזון עומסים.

יצירת כללים לחומת האש לבדיקות תקינות

יוצרים כללים לחומת האש כדי לאפשר:

  • יציאה 80 (HTTP) ויציאה 443 (HTTPS) מכל טווחי המקור.
  • תנועת TCP,‏ UDP ו-ICMP מכתובות ה-IP של בדיקת התקינות. לדוגמה: 130.211.0.0/22,35.191.0.0/16.

המסוף

יוצרים כללים של חומת אש שמאפשרים יציאות מכל טווחי המקור, וכללים של חומת אש שמאפשרים תעבורת נתונים מסוג TCP,‏ UDP ו-ICMP מכתובות ה-IP של כלי הבדיקה של בדיקת התקינות, כמו 130.211.0.0/22,35.191.0.0/16.

איך יוצרים בדיקות תקינות

gcloud

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

export CDF_PROJECT=PROJECT_ID
export VPC_NETWORK=VPC_NETWORK

gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-http \
    --direction=INGRESS --priority=1000 \
    --network=$VPC_NETWORK \
    --action=ALLOW --rules=tcp:80 \
    --source-ranges=CDF_IP_RANGE \
    --target-tags=http-server

gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-https \
    --direction=INGRESS --priority=1000 --network=$VPC_NETWORK \
    --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE \
    --target-tags=https-server

gcloud compute --project=$CDF_PROJECT firewall-rules create allow-health-checks \
    --network=$VPC_NETWORK \
    --action=allow --direction=ingress \
    --target-tags=allow-health-checks \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --rules=tcp,udp,icmp

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: המזהה הייחודי של הפרויקט, שאפשר להתאים אותו.
  • ‫VPC_NETWORK: השם של רשת ה-VPC
  • ‫CDF_IP_RANGE: טווח כתובות ה-IP שהוקצה ל-Cloud Data Fusion.

יצירת תבנית של הגדרות מכונה וירטואלית לשער

המסוף

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

  • יוצרים אותו באותו VPC שבו נמצאת מכונת Cloud Data Fusion.
  • מומלץ: שימוש במכונה וירטואלית עם כתובת IP פרטית.
  • מפעילים יציאות HTTP/HTTPS.
  • הפעלת העברת IP
  • בשדה סקריפט לטעינה בזמן ההפעלה, מזינים את הסקריפט הבא:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE
    echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf
    iptables-save
    

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

    כדי לראות את טווח כתובות ה-IP שהוקצה למופע של Cloud Data Fusion, עוברים לדף פרטי המופע ב-Cloud Data Fusion.

gcloud

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

export TEMPLATE_NAME=TEMPLATE_NAME
export REGION=REGION
export SUBNET=SUBNET
export SERVICE_ACCOUNT=SERVICE_ACCOUNT

gcloud beta compute --project=$CDF_PROJECT instance-templates create $TEMPLATE_NAME \
--machine-type=e2-medium \
--subnet=projects/$CDF_PROJECT/regions/$REGION/subnetworks/$SUBNET \
--network-tier=PREMIUM --metadata=startup-script=sudo\ bash\ -c\ \"echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward\"$'\n'sudo\ iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'sudo\ bash\ -c\ \"echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf\"$'\n'sudo\ iptables-save \
--can-ip-forward --no-address --maintenance-policy=MIGRATE \
--service-account=$SERVICE_ACCOUNT \
--scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \
--region=$REGION --tags=http-server,https-server,allow-health-checks \
--image=debian-10-buster-v20210316 \
--image-project=debian-cloud --boot-disk-size=10GB \
--boot-disk-type=pd-balanced \
--boot-disk-device-name=$TEMPLATE_NAME \
--no-shielded-secure-boot --no-shielded-vtpm \
--no-shielded-integrity-monitoring \
--reservation-affinity=any

יצירת בדיקת תקינות

אף שירות לא פועל במכונה הווירטואלית של שער הכניסה, כך שאפשר להשתמש ביציאה 22 לבדיקת תקינות.

המסוף

איך יוצרים בדיקות תקינות

gcloud

יוצרים בדיקת תקינות:

export HEATH_CHECK=HEALTH_CHECK_NAME

gcloud beta compute health-checks create tcp $HEATH_CHECK --project=$CDF_PROJECT \
--port=22 --proxy-header=NONE --no-enable-logging \
--check-interval=5 --timeout=5 \
--unhealthy-threshold=2 --healthy-threshold=2

יצירת קבוצה של מופעי מכונה

בעזרת בדיקת תקינות שנוצרה בשלב הקודם, יוצרים קבוצת מופעים:

המסוף

איך יוצרים קבוצות של מופעי מכונה מנוהלים

gcloud

יוצרים קבוצה של מופעי מכונה:

export INSTANCE_GROUP=INSTANCE_GROUP
gcloud beta compute --project=$CDF_PROJECT instance-groups managed create $INSTANCE_GROUP \
--base-instance-name=$INSTANCE_GROUP \
--template=$TEMPLATE_NAME --size=1 --zone=$ZONE \
--health-check=test --initial-delay=300

gcloud beta compute --project "$CDF_PROJECT" instance-groups managed set-autoscaling "$INSTANCE_GROUP" \
--zone "$ZONE" --cool-down-period "60" \
--max-num-replicas "10" --min-num-replicas "1" \
--target-cpu-utilization "0.6" --mode "on"

יצירת מאזן עומסים

יוצרים מאזן עומסים מסוג TCP (ILB) מקבוצת המופעים שנוצרה בשלב הקודם.

הוספת המסלול המותאם אישית למאזן העומסים

מוסיפים את המסלול המותאם אישית למאזן העומסים הפנימי (ILB) באותו VPC כמו מכונת Cloud Data Fusion.

המסוף

עוברים לדף רשת VPC.

מעבר לרשתות VPC

בכרטיסייה נתיבים, לוחצים על יצירת נתיב.

הוספת מסלול בהתאמה אישית

gcloud

מוסיפים את המסלול המותאם אישית למאזן העומסים הפנימי:

export ROUTE=ROUTE_NAME
export ILB_FRONTEND=<ip_of_ilb_frontend>
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \
--network=$VPC_NETWORK --priority=1001 \
--destination-range=0.0.0.0/0 \
--next-hop-ilb=$ILB_FRONTEND \
--next-hop-ilb-region=$REGION

פתרון בעיות

מקבלים שגיאות של פסק זמן לחיבור בתצוגה מקדימה או ב-Wrangler

יכול להיות שתקבלו שגיאה Connection Timeout כשאתם מגדירים אמצעי בקרה ליציאה.

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

בדיקות תקינות של קבוצת מופעים נכשלות

בודקים אם קיימים כללי חומת אש שמאפשרים תעבורת נתונים מסוג TCP,‏ UDP ו-ICMP מטווח המקור 130.211.0.0/22,35.191.0.0/16.

צינור נכשל במהלך ההפעלה ב-Managed Service for Apache Spark

כדי לגשת לאינטרנט הציבורי בזמן ההפעלה, צריך להפעיל את Cloud NAT באותו אזור ובאותה רשת כמו אשכול Managed Service for Apache Spark.

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