גישה ל-Google APIs אזוריים דרך שרתי קצה עורפיים

במדריך הזה מוסבר איך להגדיר מאזן עומסים של אפליקציות פנימי עם קצה עורפי של Private Service Connect כדי לגשת אל Google API אזורי.

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

אפשר להגיע למאזן עומסים פנימי של אפליקציות שמשמש ל-Private Service Connect מרשתות VPC משותפות ומרשתות מחוברות.

תפקידים

התפקיד 'אדמין של מאזן עומסים של Compute' (roles/compute.loadBalancerAdmin) כולל את ההרשאה שנדרשת לביצוע המשימות שמתוארות במדריך הזה.

שירותים נתמכים

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

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

  • מפעילים את Compute Engine API בפרויקט.

  • אם רוצים לרשום את כלל ההעברה של איזון העומסים ב-Service Directory, צריך להפעיל את Service Directory API בפרויקט. כדי להגדיר את Service Directory, צריך ליצור את כלל ההעברה באמצעות Google Cloud CLI או ה-API.

  • אם אין לכם רשת משנה עם פרוקסי בלבד, צריך ליצור אחת. צריכה להיות תת-רשת אחת בלבד מסוג proxy-only ברשת ה-VPC ובאזור שבהם אתם מתכוונים ליצור את מאזן העומסים הפנימי של אפליקציות. כל מאזני העומסים הפנימיים של אפליקציות (ALB) ברשת ובאזור האלה משתמשים ברשת המשנה הזו.

  • אם עדיין אין לכם מפתח פרטי ואישור בניהול עצמי לדומיין, תצטרכו ליצור אותם. במאמר בנושא שימוש באישורי SSL בניהול עצמי מוסבר איך עושים את זה. כדי ליצור את יעד ה-HTTPS proxy כשמגדירים את מאזן העומסים, צריך מפתח פרטי ואישור.

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

לכל שירות שרוצים להפוך לזמין באמצעות מאזן העומסים, צריך ליצור קבוצה של נקודות קצה ברשת (NEG) מסוג Private Service Connect.

המסוף

  1. נכנסים לדף Network endpoint groups במסוף Google Cloud .

    כניסה לדף Network endpoint groups

  2. לוחצים על יצירת קבוצת נקודות קצה ברשת.

  3. מזינים שם לקבוצת נקודות הקצה ברשת.

  4. בקטע סוג קבוצת נקודות קצה ברשת, בוחרים באפשרות קבוצה של נקודות קצה ברשת (Private Service Connect).

  5. בוחרים את האזור של קבוצת נקודות הקצה ברשת.

  6. בוחרים את שירות היעד לקבוצה של נקודות קצה ברשת.

  7. לוחצים על יצירה.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=TARGET_SERVICE \
    --region=REGION

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

  • NEG_NAME: שם לקבוצת נקודות הקצה ברשת.

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

  • REGION: האזור שבו רוצים ליצור את קבוצת נקודות הקצה ברשת. האזור צריך להיות זהה לאזור של השירות שאליו רוצים להתחבר.

הגדרת מאזן העומסים

כל הרכיבים של מאזן העומסים צריכים להיווצר באותו אזור שבו נוצרה קבוצת נקודות הקצה ברשת מסוג Private Service Connect.

המסוף

בחירת סוג מאזן העומסים

  1. נכנסים לדף Load balancing במסוף Google Cloud .

    כניסה לדף איזון עומסים

  2. לוחצים על Create load balancer (יצירת מאזן עומסים).
  3. בקטע Type of load balancer, בוחרים באפשרות Application Load Balancer (HTTP/HTTPS) ולוחצים על Next.
  4. בקטע Public facing or internal (פנימי או גלוי לכולם), בוחרים באפשרות Internal (פנימי) ולוחצים על Next (הבא).
  5. בקטע פריסה חוצה אזורים או פריסה באזור יחיד, בוחרים באפשרות הכי מתאים לעומסי עבודה אזוריים ולוחצים על הבא.
  6. לוחצים על Configure (הגדרה).

הגדרה בסיסית

  1. מזינים שם למאזן העומסים.
  2. בוחרים אזור למאזן העומסים.
  3. בוחרים רשת למאזן העומסים.

    הרשת צריכה להכיל רשת משנה של שרת proxy בלבד באזור שבו אתם יוצרים את קבוצת נקודות הקצה ברשת (NEG) ואת מאזן העומסים (LB). אם אין לכם כזה, אתם יכולים ללחוץ על שמירת רשת משנה כדי ליצור אחת.

  4. כדי להמשיך, צריך להשאיר את החלון פתוח.

הגדרת הקצה העורפי

קבוצה של נקודות קצה ברשת מסוג Private Service Connect היא סוג של בק-אנד למאזן עומסים. יוצרים שירות קצה עורפי לכל קצה עורפי שרוצים להגדיר.

  1. לוחצים על Backend configuration.
  2. לכל קבוצה של נקודות קצה ברשת מסוג Private Service Connect שרוצים להגדיר, יוצרים שירות backend.

    1. בתפריט Create or select backend services (יצירה או בחירה של שירותי קצה עורפי), בוחרים באפשרות Create a backend service (יצירת שירות קצה עורפי).
    2. מזינים שם לשירות לקצה העורפי.
    3. מגדירים את סוג הקצה העורפי בתור קבוצה של נקודות קצה ברשת מסוג Private Service Connect.
    4. מגדירים את סוג היעד של Private Service Connect ל-Regional Google API.
    5. בוחרים באפשרות HTTPS לפרוטוקול.

    6. בקטע Backends לוחצים על התפריט New backend ובוחרים את קבוצת נקודות הקצה ברשת Private Service Connect.

      אם אתם צריכים ליצור קבוצה חדשה של נקודות קצה ברשת מסוג Private Service Connect, לוחצים על יצירת קבוצה של נקודות קצה ברשת מסוג Private Service Connect.

כללי ניתוב

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

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

  1. אם יש לכם יותר משירות קצה עורפי אחד, לוחצים על כללי ניתוב.
  2. בוחרים באפשרות כלל פשוט של מארח ונתיב.
  3. לכל קצה עורפי, מבצעים את הפעולות הבאות:
    1. הוספת כלל של מארח ונתיב.
    2. בשדה מארח, מזינים את שם המארח שישמש לשליחת בקשות לשירות הזה – לדוגמה, pubsub.example.com.
    3. בשדה Paths (נתיבים), מזינים את הנתיב. לדוגמה, /*.
    4. בשדה Backends (קצה עורפי), בוחרים את שירות הקצה העורפי.

הגדרות הקצה הקדמי

  1. לוחצים על Frontend configuration.
  2. לוחצים על Add frontend IP and port.
  3. מזינים שם למאזן העומסים.
  4. בשדה Protocol, בוחרים באפשרות HTTPS (includes HTTP/2).
  5. בוחרים רשת משנה למאזן העומסים.
  6. מוודאים שהיציאה מוגדרת ל-443, כדי לאפשר תנועה ב-HTTPS.
  7. בשדה כתובת IP, בוחרים כתובת IP מהתפריט.

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

  8. לוחצים על התפריט הנפתח אישור.

    1. אם כבר יש לכם משאב של אישור SSL בניהול עצמי שבו אתם רוצים להשתמש, בוחרים אותו מהתפריט.
    2. אחרת, בוחרים באפשרות Create a new certificate.
    3. מזינים שם למשאב האישור.
    4. בשדות המתאימים, מעלים את הקבצים בפורמט PEM:
      • אישור
      • מפתח פרטי
    5. לוחצים על יצירה.
  9. לוחצים על סיום.

בדיקה וסיום

  1. לוחצים על בדיקה וסיום כדי לבדוק את ההגדרה.
  2. לוחצים על יצירה.

gcloud

  1. לכל קבוצת נקודות קצה ברשת שיצרתם, יוצרים שירות backend.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTPS \
        --region=REGION
    

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

    • BACKEND_SERVICE_NAME: השם של שירות הקצה העורפי.
    • REGION: האזור שבו רוצים ליצור את שירות לקצה העורפי.
  2. לכל שירות לקצה העורפי שיצרתם, מוסיפים את ה-NEG המתאים לשירות לקצה העורפי.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --region=REGION
    

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

    • BACKEND_SERVICE_NAME: השם של שירות הקצה העורפי.
    • NEG_NAME: השם של קבוצת נקודות הקצה ברשת.
    • REGION: האזור של ה-backend.
  3. יוצרים מפת URL למאזן העומסים.

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

    gcloud compute url-maps create URL_MAP_NAME \
        --default-service=DEFAULT_BACKEND_SERVICE_NAME \
        --region=REGION
    

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

    • URL_MAP_NAME: שם למפת URL.

    • DEFAULT_BACKEND_SERVICE_NAME: השם של ברירת המחדל של מאזן העומסים. ברירת המחדל משמשת כשאין כלל מארח שתואם לשם המארח המבוקש.

    • REGION: האזור שבו רוצים ליצור את מפת ה-URL.

  4. מוסיפים שירותי קצה עורפיים נוספים למפת ה-URL.

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

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

      gcloud compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=PATH_MATCHER \
          --default-service=BACKEND_SERVICE_NAME \
          --region=REGION
      

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

      • URL_MAP_NAME: השם של מפת URL.
      • PATH_MATCHER: שם להתאמת הנתיב.
      • BACKEND_SERVICE_NAME: השם של שירות הקצה העורפי.
      • REGION: האזור של מפת ה-URL.
    2. מוסיפים כלל מארח לכל שם מארח.

      כל כלל מארח יכול להפנות רק להתאמה אחת של נתיב, אבל שני כללי מארח או יותר יכולים להפנות לאותה התאמה של נתיב.

      gcloud compute url-maps add-host-rule URL_MAP_NAME \
          --hosts=HOST \
          --path-matcher-name=PATH_MATCHER \
          --region=REGION
      

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

      • URL_MAP_NAME: השם של מפת URL.
      • HOST: שם המארח שאליו נשלחות בקשות לשירות הזה. לדוגמה, pubsub.example.com.
      • PATH_MATCHER: השם של הכלי להתאמת נתיבים.
      • REGION: האזור של מפת ה-URL.
  5. יוצרים את שרת ה-proxy של HTTPS ליעד.

    1. יוצרים משאב אזורי של אישור SSL באמצעות הפקודה gcloud compute ssl-certificates create. אין תמיכה באישורים שמנוהלים על ידי Google במאזני עומסים פנימיים של אפליקציות.

      gcloud compute ssl-certificates create CERTIFICATE \
          --certificate=LB_CERT \
          --private-key=LB_PRIVATE_KEY \
          --region=REGION
      

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

      • CERTIFICATE: שם לאישור.

      • LB_CERT: הנתיב לקובץ האישור בפורמט PEM של האישור בניהול עצמי.

      • LB_PRIVATE_KEY: הנתיב לקובץ המפתח הפרטי בפורמט PEM של האישור בניהול עצמי.

      • REGION: האזור של האישור.

    2. משתמשים במשאב של אישור SSL אזורי כדי ליצור שרת proxy אזורי של HTTPS באמצעות הפקודה gcloud compute target-https-proxies create.

      gcloud compute target-https-proxies create PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=REGION \
          --ssl-certificates=CERTIFICATE
      

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

      • PROXY_NAME: שם ל-proxy ל-HTTPS עם יעד.
      • URL_MAP_NAME: השם של מפת URL.
      • REGION: האזור של משאב האישור.
      • CERTIFICATE: השם של משאב האישור.
  6. שומרים כתובת IPv4 פנימית אזורית לכלל ההעברה.

    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 \
        --region=REGION \
        --subnet=SUBNETWORK
    

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

    • ADDRESS_NAME: שם למשאב כתובת ה-IP.
    • REGION: האזור שבו רוצים ליצור את כתובת ה-IP.
    • SUBNET: רשת המשנה שבה רוצים ליצור את כתובת ה-IP.

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

    gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --region=REGION
    
  7. יוצרים את כלל ההעברה.

    יוצרים את כלל ההעברה באמצעות הפקודה gcloud compute forwarding-rules create.

    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=NETWORK \
        --address=ADDRESS_NAME \
        --ports=443 \
        --region=REGION \
        --target-https-proxy=PROXY_NAME \
        --target-https-proxy-region=PROXY_REGION \
       [--service-directory-registration=SD_SERVICE_NAME]
    

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

    • FWD_RULE: שם לכלל ההעברה.

    • NETWORK: הרשת שבה רוצים ליצור את כלל ההעברה.

    • ADDRESS_NAME: כתובת ה-IP השמורה.

    • REGION: האזור של כלל ההעברה.

    • PROXY_NAME: השם של שרת ה-proxy ל-HTTPS של היעד.

    • PROXY_REGION: האזור של שרת ה-proxy ל-HTTPS.

    • SD_SERVICE_NAME: ה-URI של השירות של Service Directory שרוצים לרשום בו את מאזן העומסים, בפורמט הזה: projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. הערך --service-directory-registration הוא אופציונלי.

אימות ההגדרה

  1. יוצרים את המכונה הווירטואלית.

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-12 \
        --zone=ZONE
    

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

    • VM_NAME: שם למכונה הווירטואלית.

    • NETWORK: הרשת של המכונה הווירטואלית.

    • ZONE: האזור של המכונה הווירטואלית.

  2. מתחברים ל-VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. משתמשים ב-curl כדי לאמת את ההגדרה. הפקודה הזו מגדירה את הכותרת Host ומדלגת על פענוח DNS על ידי ציון כתובת IP שהוגדרה על ידי המשתמש. אפשר להשמיט את היציאה אם משתמשים ביציאת ברירת המחדל של הפרוטוקול, למשל אם משתמשים ביציאה 443 עבור HTTPS.

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

    curl -iv --resolve HOSTNAME:443:IP_ADDRESS \
       'https://HOSTNAME/RESOURCE_URI'
    

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

    • HOSTNAME: שם המארח שהגדרתם במפת ה-URL, לדוגמה pubsub.example.com.
    • IP_ADDRESS: כתובת ה-IP של כלל ההעברה של מאזן העומסים.
    • RESOURCE_URI: שאר ה-URI של המשאב שרוצים להשתמש בו לאימות. לדוגמה, אם מאזן העומסים מעביר בקשות לנקודת קצה אזורית של Pub/Sub, אפשר להשתמש ב-rest?version=v1.

הגדרת רשומות DNS

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

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

  • קבוצה של נקודות קצה ברשת מסוג Private Service Connect שמשתמשת בשירות היעד pubsub.europe-west3.rep.googleapis.com.

  • מאזן עומסים פנימי של אפליקציות שמשתמש ב-NEG של Private Service Connect כקצה עורפי.

  • מפת URL שמגדירה כלל מארח ל-pubsub.example.com.

כדי שההגדרה הזו תפעל בצורה תקינה, צריך ליצור רשומת DNS שמפנה pubsub.example.com לכתובת ה-IP של כלל ההעברה.

בהגדרה הזו, כל בקשה שנשלחת אל pubsub.example.com מועברת למאזן העומסים, שמעביר את הבקשה אל pubsub.europe-west3.rep.googleapis.com.

הגדרת לקוחות לשליחת בקשות לקצה העורפי

כדי לשלוח בקשות דרך ה-backend במקום דרך נקודות הקצה של השירות הציבורי, צריך להגדיר את הלקוחות כך שישלחו בקשות לשם המארח שהגדרתם במפת URL של מאזן העומסים – לדוגמה, pubsub.example.com. במסמכי התיעוד של הלקוח או של ספריית הלקוח שלכם מוסבר איך להגדיר אותם לשימוש בנקודות קצה מותאמות אישית. בדפים הבאים מפורטים שלבי ההגדרה של כמה לקוחות נפוצים:

  • Python: אפשר להגדיר את api_endpoint באפשרויות של הלקוח.

  • מעבר: אפשר להגדיר את WithEndpoint ב-ClientOptions.

  • ‎.NET: אפשר להגדיר את Endpoint במחלקה של בונה הלקוח.

  • Java: אפשר להגדיר את setEndpoint בכיתת ההגדרות של הלקוח.

  • gcloud: אפשר להגדיר את api_endpoint_overrides ב- CLI של gcloud.

גישה לחלק האחורי ממארחים מקומיים

אם הרשת המקומית שלכם מחוברת לרשת VPC, אתם יכולים לשלוח תנועה לקצה העורפי של Private Service Connect.

  • הרשת המקומית שלכם צריכה להיות מחוברת לרשת VPC שמכילה את מאזן העומסים של אפליקציות (ALB) הפנימי, באמצעות מנהרות Cloud VPN או צירופים ל-VLAN באותו אזור כמו מאזן העומסים של אפליקציות (ALB) הפנימי.

  • ברשת המקומית צריכים להיות מסלולים מתאימים למאזן העומסים הפנימי של אפליקציות (ALB). מוודאים שכל Cloud Router שמנהל את סשן ה-BGP של מנהרת Cloud VPN או של צירוף ל-VLAN הוגדר לפרסום טווח כתובות ה-IP הראשי של רשת המשנה שבה נעשה שימוש בכלל ההעברה של מאזן העומסים הפנימי של אפליקציות. כברירת מחדל, נתיבי רשתות משנה מפורסמים על ידי Cloud Routers.

  • צריך להגדיר את המערכות המקומיות כך ששמות המארחים במפת ה-URL של מאזן העומסים הפנימי של האפליקציות יפנו לכתובת ה-IP של כלל ההעברה של מאזן העומסים הפנימי של האפליקציות. אפשר ליצור את רשומות ה-DNS בשרתי שמות מקומיים או להשתמש ב-Cloud DNS.

    אם יצרתם את רשומות ה-DNS באמצעות תחומים פרטיים מנוהלים ב-Cloud DNS, צריך לבצע את השלבים הבאים:

    • יוצרים מדיניות שרת נכנסת ברשת ה-VPC שאליה מחוברת הרשת המקומית.

    • מזהים את נקודות הכניסה של מעביר התנועה הנכנסת באזורים שבהם נמצאים מנהרות Cloud VPN וחיבורי ה-VLAN, ברשת ה-VPC שאליה מחוברת הרשת המקומית.

    • מגדירים שרתי שמות DNS מקומיים להעברת בקשות DNS עבור שמות המארחים במפת URL לנקודת כניסה של מעביר DNS נכנס ב-Cloud DNS.

איור 1. אפשר להתחבר לממשקי API ולשירותים של Google באמצעות עורפי אזורים על ידי הגדרת Private Service Connect,‏ Cloud Router ומארחים מקומיים (לוחצים להגדלה).