קישוריות ישירה של gRPC

קישוריות ישירה היא פתרון חיבור שמאפשר חיבורי רשת gRPC ישירים ומאומתים בין ספריית לקוח לבין Cloud Storage, עם ביצועים גבוהים, וכתוצאה מכך זמן אחזור נמוך יותר ותקורה נמוכה יותר של חיבורים. Google Cloud כשמשתמשים ב-gRPC כדי להתחבר ל- Google Cloudבאמצעות קישוריות ישירה, בקשות שמופעלות דרך ספריות לקוח נתמכות של Google Cloudמנותבות ישירות ל-Cloud Storage, בלי לעבור דרך ממשקי הקצה של Google ‏ (GFE).

קישוריות ישירה זמינה רק לבקשות שמגיעות ממכונות וירטואליות (VM) של Compute Engine.

הדרישות לקישוריות ישירה

קישוריות ישירה מופעלת כברירת מחדל כשמשתמשים בספריות לקוח נתמכות של Cloud Storage כדי להתחבר ל-Cloud Storage, אבל היא זמינה רק אם כל התנאים הבאים מתקיימים:

  • למכונות הווירטואליות של Compute Engine שמתקשרות עם Cloud Storage צריך להיות חשבון שירות מצורף, גם אם לחשבון השירות אין הרשאות. חשבון השירות משמש לייצוג המכונה הווירטואלית של Compute Engine בתהליך הלחיצת יד של Application Layer Transport Security.

  • המכונות הווירטואליות ב-Compute Engine שמתקשרות עם קטגוריה של Cloud Storage צריכות להיות באותו מיקום שבו נמצאת הקטגוריה. לדוגמה, אם הקטגוריה נמצאת ב-us-central1, המכונה הווירטואלית יכולה להיות ב-us-central1-a. אם הקטגוריה נמצאת במספר אזורים או בשני אזורים, מכונת ה-VM צריכה להיות באזור שמרכיב את המיקום במספר אזורים או בשני אזורים. לדוגמה, אם קטגוריה נמצאת במספר אזורים us, המכונה הווירטואלית יכולה להיות ממוקמת ב-us-east4-c.

    מידע נוסף על מיקומי קטגוריות זמין במאמר מיקומים.

  • המסלולים וכללי חומת האש מאפשרים לתעבורת IPv4 להגיע אל 34.126.0.0/18 ולתעבורת IPv6 להגיע אל 2001:4860:8040::/42. בנוסף, צריך לאפשר לתנועה להגיע לנקודות הקצה storage.googleapis.com:443 ו-directpath-pa.googleapis.com:443.

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

  • לספריות הלקוח של Cloud Storage יש דרישות ספציפיות לגבי פרטי כניסה כדי לאמת אפליקציות ב-Cloud Storage ולאפשר קישוריות ישירה:

    • ספריית הלקוח של Java דורשת פרטי כניסה של חשבון משתמש או פרטי כניסה של חשבון שירות.

    • ספריית הלקוח C++‎ דורשת פרטי כניסה לחשבון שירות.

    • ספריית הלקוח Go דורשת פרטי כניסה לחשבון שירות. בגרסאות שלפני 1.52.0 נדרשים פרטי הכניסה של חשבון השירות שמוגדר כברירת מחדל של המכונה הווירטואלית שמקבלת גישה לדלי.

    כדי לראות את שם החשבון שהמכונה הווירטואלית משתמשת בו כדי לבצע אימות ל-Cloud Storage, משתמשים בפקודה gcloud auth list:

    gcloud auth list --filter=status:ACTIVE --format="value(account)"
    

    אם אתם משתמשים בספריית הלקוח של Go ואתם רוצים לבדוק אם החשבון שמשמש לאימות תואם לחשבון השירות שמוגדר כברירת מחדל במכונה הווירטואלית, אתם יכולים להשתמש בפקודה gcloud compute instances describe: Google

    gcloud compute instances describe INSTANCE_NAME --format='yaml(serviceAccounts)'
    

    מחליפים את INSTANCE_NAME בשם המכונה.

    למידע נוסף על אימות, תוכלו לעיין בסקירה כללית על Google ניהול זהויות.

בדיקת הקישוריות באמצעות Google Cloud CLI

‫Google Cloud CLI יכול לבדוק את האבחון של קישוריות ישירה לקטגוריה על ידי שליחת קריאה של GET לקטגוריה באמצעות gcloud storage buckets describe gs://example-bucket. בקטע הזה מוסבר איך לבצע בדיקה לאבחון בעיות בקישוריות ישירה באמצעות Google Cloud CLI.

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

  1. חשוב לוודא שיש לכם הרשאת IAM‏ storage.buckets.get בקטגוריה, שאפשר להעניק באמצעות התפקיד Storage Legacy Bucket Reader (roles/storage.legacyBucketReader).

  2. הפקודה gcloud alpha storage diagnose זמינה רק בגרסה 531.0.0 ואילך של Google Cloud CLI. כדי להשתמש בפקודה הזו, מומלץ לשדרג לגרסה האחרונה של Google Cloud CLI.

הפעלת האבחון

כדי לבדוק אם יש קישוריות ישירה, מריצים את הפקודה gcloud alpha storage diagnose עם הארגומנט --test-type=DIRECT_CONNECTIVITY:

gcloud alpha storage diagnose --test-type=DIRECT_CONNECTIVITY gs://BUCKET_NAME

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

  • BUCKET_NAME: השם של הקטגוריה. לדוגמה, my-bucket.

אם אפשר ליצור חיבור, תקבלו תגובה שדומה לזו:

Using my-bucket bucket for the diagnostic tests.
Bucket location : US
Bucket storage class : STANDARD
Running diagnostic: Direct Connectivity Diagnostic...
WARNING: This diagnostic is experimental. The output may change, and checks may be added or removed at any time. Please do not rely on the diagnostic being present.
Finished running diagnostic: Direct Connectivity Diagnostic
Generating diagnostic report...
NAME
Direct Connectivity Diagnostic
    ┌────────────────────────────┬─────────────────────────────────────────────────────────────────────────┬──────────┐
    │            NAME            │                           PAYLOAD_DESCRIPTION                           │  RESULT  │
    ├────────────────────────────┼─────────────────────────────────────────────────────────────────────────┼──────────┤
    │ Direct Connectivity Call   │ Able to get bucket metadata using Direct Connectivity network path.     │ Success. │
    └────────────────────────────┴─────────────────────────────────────────────────────────────────────────┴──────────┘

בדיקת הגדרות הרשת

אם נתקלתם בשגיאה Unable to connect to Traffic Director במהלך בדיקת הקישוריות הישירה באמצעות Google Cloud CLI, אתם יכולים להשתמש בהוראות הבאות כדי לוודא שהגדרות הרשת מאפשרות לתעבורה לעבור מהמכונות הווירטואליות לנקודות הקצה הנדרשות.

חיבור ישיר דורש שירות שמתארח בכתובות directpath-pa.googleapis.com:443 ובכתובת storage.googleapis.com:443. כדי לבדוק אם אפשר להתחבר לשירות, מבצעים קריאת curl ל-directpath-pa.googleapis.com:443 או ל-storage.googleapis.com:443. לדוגמה:

curl directpath-pa.googleapis.com:443

אם אפשר ליצור חיבור, מקבלים תגובה ריקה ללא שגיאות:

curl: (52) Empty reply from server

אם לא ניתן ליצור חיבור, תוצג שגיאה דומה לזו:

curl: (56) Recv failure: Connection reset by peer

מגבלות

קישוריות ישירה לא תומכת ב-Private Service Connect.