הגדרת קישור בין רשתות VPC שכנות (peering)

אתם יכולים להשתמש ב-VPC Network Peering כדי לאפשר ל-Datastream לתקשר עם משאבים ברשת של הענן הווירטואלי הפרטי (VPC) באופן פרטי.

קישור בין רשתות VPC שכנות (peering) הוא חיבור בין רשת ה-VPC שלכם לבין הרשת הפרטית של Datastream, שמאפשר ל-Datastream לתקשר עם משאבים פנימיים באמצעות כתובות IP פנימיות. שימוש בקישוריות פרטית יוצר חיבור ייעודי ברשת Datastream, כך שאף לקוח אחר לא יכול לשתף אותו.

הקישור בין רשתות VPC שכנות (peering) בין רשת ה-VPC שלכם לבין רשת ה-VPC של Datastream מאפשר ל-Datastream להתחבר אל:

הקישור בין רשתות VPC שכנות (peering) בין רשת ה-VPC שלכם לבין רשת ה-VPC של Datastream לא מאפשר ל-Datastream להתחבר אל:

כדי ליצור קישוריות בין Datastream לבין משאב שאפשר לגשת אליו רק מרשת ה-VPC, אפשר להשתמש במכונה וירטואלית של תרגום כתובות רשת (NAT) ברשת ה-VPC. תרחיש שימוש נפוץ במכונת NAT וירטואלית הוא כש-Datastream צריך להתחבר למופע של Cloud SQL.

בדף הזה מתואר דוגמה להגדרת מכונת NAT וירטואלית שמאפשרת ל-Datastream להתחבר באופן פרטי למופע Cloud SQL.

תרשים זרימה של משתמש במקור נתונים

דרישות מוקדמות לקישור בין רשתות VPC שכנות (peering)

לפני שיוצרים הגדרת קישוריות פרטית, צריך לבצע את השלבים הבאים כדי ש-Datastream יוכל ליצור את חיבור ה-VPC בין הפרויקט שלכם לבין פרויקט היעד:

  • יש לכם רשת VPC שאפשר לקשר לרשת הפרטית של Datastream, ושעומדת בדרישות שמתוארות בדף VPC Network Peering. מידע נוסף על יצירת הרשת הזו זמין במאמר שימוש ב-VPC Network Peering.
  • מזהים טווח כתובות IP זמין (עם בלוק CIDR של ‎ /29) ברשת ה-VPC. הטווח לא יכול להיות טווח כתובות IP שכבר קיים כרשת משנה, כטווח כתובות IP שהוקצה מראש לגישה לשירותים פרטיים או כנתיב כלשהו (מלבד נתיב ברירת המחדל 0.0.0.0) שכולל את טווח כתובות ה-IP. ‫Datastream משתמש בטווח כתובות ה-IP הזה כדי ליצור רשת משנה, כדי שיוכל לתקשר עם מסד הנתונים של המקור. בטבלה הבאה מפורטים טווחי כתובות ה-IP התקפים.
טווח תיאור
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
כתובות IP פרטיות RFC 1918
100.64.0.0/10 מרחב כתובות משותף RFC 6598
192.0.0.0/24 הקצאות פרוטוקולים של IETF RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
מסמכי תיעוד RFC 5737
192.88.99.0/24 ממסר IPv6 ל-IPv4 (הוצא משימוש) RFC 7526
198.18.0.0/15 בדיקות השוואה RFC 2544
  • מוודאים ש Google Cloud וחומת האש המקומית מאפשרות תנועה מטווח כתובות ה-IP שנבחר. אם לא, צריך ליצור כלל של חומת אש לתעבורת נתונים נכנסת שמאפשר תעבורה ביציאה של מסד הנתונים של המקור, ולוודא שטווחי כתובות ה-IPv4 בכלל חומת האש זהים לטווחי כתובות ה-IP שהוקצו כשנוצר משאב הקישוריות הפרטית:

    gcloud compute firewall-rules create FIREWALL-RULE-NAME \
      --direction=INGRESS \
      --priority=PRIORITY \
      --network=PRIVATE_CONNECTIVITY_VPC \
      --project=VPC_PROJECT \
      --action=ALLOW \
      --rules=FIREWALL_RULES \
      --source-ranges=IP-RANGE
      

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

    • FIREWALL-RULE-NAME: השם של כלל חומת האש שרוצים ליצור.
    • PRIORITY: העדיפות של הכלל, שמבוטאת כמספר שלם בין 0 ל-65535, כולל. הערך צריך להיות נמוך מהערך שמוגדר לכלל חסימת התנועה, אם קיים כזה. ערכים נמוכים יותר של עדיפות מצביעים על קדימות גבוהה יותר.
    • PRIVATE_CONNECTIVITY_VPC: רשת ה-VPC שאפשר לקשר לרשת הפרטית של Datastream ועומדת בדרישות שמתוארות בדף קישור בין רשתות VPC שכנות (peering). זהו ה-VPC שאתם מציינים כשאתם יוצרים את הגדרת הקישוריות הפרטית.
    • VPC_PROJECT: הפרויקט של רשת ה-VPC.
    • FIREWALL_RULES: רשימת הפרוטוקולים והיציאות שאליהם חל כלל חומת האש, לדוגמה tcp:80. הכלל צריך לאפשר תנועת TCP לכתובת ה-IP ולפורט של מסד הנתונים של המקור, או של ה-proxy. חיבור פרטי יכול לתמוך במספר מסדי נתונים, ולכן הכלל צריך להתייחס לשימוש בפועל בהגדרה שלכם.
    • IP-RANGE: טווח כתובות ה-IP שמשמש את Datastream לתקשורת עם מסד הנתונים של המקור. זהו אותו טווח שמציינים בשדה הקצאת טווח כתובות IP כשיוצרים הגדרת קישוריות פרטית.

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

  • מוקצה להם תפקיד שמכיל את ההרשאה compute.networks.list. ההרשאה הזו מעניקה לכם את הרשאות ה-IAM הנדרשות להצגת רשימה של רשתות VPC בפרויקט. כדי לראות באילו תפקידים ההרשאה הזו כלולה, אפשר לעיין במאמר בנושא הרשאות IAM.

דרישות מוקדמות ל-VPC משותף

אם אתם משתמשים ב-VPC משותף, אתם צריכים לבצע את הפעולות הבאות בנוסף לשלבים שמתוארים בקטע דרישות מוקדמות ל-VPC:

  1. בפרויקט השירות:

    1. מפעילים את Datastream API.
    2. מקבלים את כתובת האימייל שמשמשת את חשבון השירות של Datastream. חשבונות שירות של Datastream נוצרים כשמבצעים אחת מהפעולות הבאות:

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

      כדי לקבל את כתובת האימייל שמשמשת לחשבון השירות של Datastream, מאתרים את מספר הפרויקט בדף הבית של מסוף Google Cloud . כתובת האימייל של חשבון השירות היא service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com.

  2. בפרויקט המארח:

    1. מקצים לחשבון השירות של Datastream את ההרשאה לתפקיד compute.networkAdmin בניהול זהויות והרשאות גישה (IAM). ההרשאה הזו נדרשת רק כשיוצרים את ה-VPC peering. אחרי שהפירינג נוצר, כבר לא צריך את התפקיד.

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

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

הגדרת מכונת NAT וירטואלית

  1. מזהים את כתובת ה-IP של מופע Cloud SQL שאליו Datastream צריך להתחבר.

  2. מזהים את רשת ה-VPC. זו רשת ה-VPC שמחוברת לרשת ה-VPC של Datastream באמצעות קישור בין רשתות שכנות (peering).

  3. אם עדיין לא עשיתם זאת, צרו הגדרת קישוריות פרטית ב-Datastream. כך נוצר קישור בין רשתות VPC שכנות (peering) שמחבר בין רשת ה-VPC שלכם לבין רשת ה-VPC של Datastream. חשוב לשים לב לטווח כתובות ה-IP שבו נעשה שימוש בהגדרת הקישוריות הפרטית של Datastream.

  4. בוחרים את סוג המכונה שבה רוצים להשתמש למכונת ה-NAT שיוצרים בשלב הבא. ‫Google Cloud מגדיר מגבלת רוחב פס מקסימלית ליציאה לכל מכונה, עבור מנות שמופנות על ידי הצעדים הבאים בתוך רשת VPC, בהתאם לסוג המכונה של המכונה הווירטואלית. מידע נוסף זמין במאמרים תעבורת נתונים יוצאת ליעדים שניתן לנתב בתוך רשת VPC ורוחב פס מקסימלי של תעבורת נתונים יוצאת לכל מכונה.

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

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

    • כדי לצמצם את זמן הלוך ושוב ברשת, צריך ליצור את מכונת ה-NAT באותו אזור שבו נמצא Datastream.
    • בדוגמה הזו, נקודת המוצא היא שלמכונה הווירטואלית של NAT יש ממשק רשת יחיד.
    • מריצים את הסקריפט בהפצת Linux – לדוגמה, Debian 12.
    • משתמשים בסקריפט ההפעלה הבא. סקריפט לטעינה בזמן ההפעלה מופעל על ידי root בכל פעם שמכונת ה-VM מופעלת. הסקריפט הזה כולל הערות שמסבירות מה כל שורה בסקריפט עושה. בתסריט, מחליפים את CLOUD_SQL_INSTANCE_IP בכתובת ה-IP של מופע Cloud SQL ואת DATABASE_PORT ביעד של היציאה שבה נעשה שימוש בתוכנת מסד הנתונים.
    #! /bin/bash
    
    export DB_ADDR=CLOUD_SQL_INSTANCE_IP
    export DB_PORT=DATABASE_PORT
    
    # Enable the VM to receive packets whose destinations do
    # not match any running process local to the VM
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Ask the Metadata server for the IP address of the VM nic0
    # network interface:
    md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance"
    vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)"
    
    # Clear any existing iptables NAT table entries (all chains):
    iptables -t nat -F
    
    # Create a NAT table entry in the prerouting chain, matching
    # any packets with destination database port, changing the destination
    # IP address of the packet to the SQL instance IP address:
    iptables -t nat -A PREROUTING \
         -p tcp --dport $DB_PORT \
         -j DNAT \
         --to-destination $DB_ADDR
    
    # Create a NAT table entry in the postrouting chain, matching
    # any packets with destination database port, changing the source IP
    # address of the packet to the NAT VM's primary internal IPv4 address:
    iptables -t nat -A POSTROUTING \
         -p tcp --dport $DB_PORT \
         -j SNAT \
         --to-source $vm_nic_ip
    
    # Save iptables configuration:
    iptables-save
  6. יוצרים כלל חומת אש (או כלל במדיניות גלובלית של חומת אש ברשת, במדיניות אזורית של חומת אש ברשת או במדיניות היררכית של חומת אש) עם המאפיינים הבאים:

    • כיוון: תעבורת נתונים נכנסת (Ingress)
    • פעולה: לאפשר
    • פרמטר יעד: לפחות המכונה הווירטואלית של NAT
    • פרמטר המקור: טווח כתובות ה-IP שמשמש את הגדרת הקישוריות הפרטית של Datastream
    • פרוטוקול: TCP
    • יציאה: חייבת לכלול לפחות את DATABASE_PORT
  7. כלל חומת האש המשתמעת ליציאה מאפשר למכונה הווירטואלית של NAT לשלוח מנות לכל יעד. אם ברשת ה-VPC שלכם מוגדרים כללי חומת אש שחוסמים תעבורה יוצאת, יכול להיות שתצטרכו ליצור כלל חומת אש שמאפשר תעבורה יוצאת כדי לאפשר למכונת ה-NAT לשלוח מנות למופע Cloud SQL. אם צריך כלל הרשאה ליציאה, משתמשים בפרמטרים האלה:

    • כיוון: תעבורת נתונים יוצאת (egress)
    • פעולה: לאפשר
    • פרמטר יעד: לפחות המכונה הווירטואלית של NAT
    • פרמטר היעד: כתובת ה-IP של מופע Cloud SQL
    • פרוטוקול: TCP
    • יציאה: חייבת לכלול לפחות את DATABASE_PORT
  8. מוודאים שהגדרתם את מופע Cloud SQL כך שיקבל חיבורים מכתובת ה-IPv4 הפנימית הראשית שמשמשת את ממשק הרשת של מכונת ה-NAT. הוראות מפורטות מופיעות במאמר מתן הרשאה באמצעות רשתות מורשות במסמכי התיעוד של Cloud SQL.

  9. יוצרים פרופיל חיבור ב-Datastream. בפרטי החיבור של הפרופיל, מציינים את כתובת ה-IPv4 הפנימית הראשית של מכונת ה-NAT שנוצרה. מזינים את היציאה של מסד הנתונים של המקור בשדה היציאה של פרופיל החיבור.

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

כדי לשפר את המהימנות של פתרון NAT VM, כדאי להשתמש בארכיטקטורה הבאה, שכוללת זוג מכונות NAT VM ומאזן עומסי רשת פנימי מסוג passthrough:

  1. יוצרים שתי מכונות וירטואליות של NAT באזורים שונים באותו אזור. פועלים לפי ההוראות שבמאמר הגדרת מכונת NAT וירטואלית כדי ליצור כל מכונה וירטואלית, וממקמים כל מכונה וירטואלית בקבוצת מופעים לא מנוהלת משלה באזור.

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

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

    כשמגדירים את בדיקת התקינות של מאזן העומסים, אפשר להשתמש בבדיקת תקינות של TCP שמשתמשת ביציאת TCP של יעד שתואמת ל-DATABASE_PORT. חבילות של בדיקות תקינות מנותבות אל CLOUD_SQL_INSTANCE_IP בהתאם להגדרות של מכונת ה-NAT הווירטואלית. לחלופין, אפשר להריץ תהליך מקומי במכונת ה-VM של NAT שמשיב לבדיקת תקינות של TCP או HTTP ביציאה מותאמת אישית.

  3. יוצרים כללי חומת אש ומגדירים רשתות מורשות של Cloud SQL כמו שמתואר בהוראות הגדרה של מכונת NAT. מוודאים שהרשתות המורשות ב-Cloud SQL כוללות את כתובת ה-IPv4 הפנימית הראשית של שתי המכונות הווירטואליות של NAT.

  4. כשיוצרים פרופיל של חיבור Datastream, מציינים בפרטי החיבור של הפרופיל את כתובת ה-IP של כלל ההעברה של מאזן העומסים הפנימי להעברת סיגנל ללא שינוי.

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