הגדרת שירות קצה עורפי של callout שמנוהל על ידי משתמש

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

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

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

  1. מוודאים שיש לכם תפקיד עריכה או בעלות בפרויקט, או את תפקידי ה-IAM הבאים ב-Compute Engine:

  2. מפעילים את ממשקי ה-API הבאים: Compute Engine API ו-Network Services API.

    המסוף

    1. נכנסים לדף Enable access to APIs במסוף Google Cloud .

      מעבר אל הפעלת גישה לממשקי API

    2. פועלים לפי ההוראות.

    gcloud

    משתמשים בפקודה gcloud services enable:

    gcloud services enable compute.googleapis.com networkservices.googleapis.com
    
  3. יוצרים ומגדירים מאזן עומסים של אפליקציות שתומך בתוספים. בדוגמה הזו, מגדירים מאזן עומסים פנימי אזורי של אפליקציות עם קצה עורפי של קבוצת מכונות וירטואליות. משתמשים בערכים לדוגמה שצוינו.

  4. יצירת מכונה וירטואלית של לקוח לצורך בדיקה

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

    המסוף

    1. נכנסים לדף Create an instance במסוף Google Cloud .

      כניסה לדף Create an instance

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

      • Name (שם): l7-ilb-backend2-vm
      • תגים: allow-ssh וload-balanced-backend
      • Zone (תחום): us-west1-a
      • רשת: lb-network
      • Subnetwork: backend-subnet
      • תמונה: debian-11
      • Family: debian-cloud
      • אפשרויות מתקדמות > ניהול > אוטומציה:

        '#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        echo "Page served from second backend service" | tee /var/www/html/index.html
        systemctl restart apache2'
        
    2. יצירת קבוצות של מופעי מכונה לא מנוהלים

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

      • Name (שם): l7-ilb-backend-service2-ig
      • Zone (תחום): us-west1-a
    3. מוסיפים את המכונה הווירטואלית החדשה לקבוצת המופעים.

      בקטע VM instances (מכונות וירטואליות), מציינים l7-ilb-backend2-vm.

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

      כניסה לדף Load balancing

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

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

      • Name (שם): l7-ilb-backend-service2
      • פרוטוקול: HTTP
      • בדיקת תקינות > שם: l7-ilb-basic-check
      • בדיקת תקינות > אזור: us-west1

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

      • קבוצת מכונות: l7-ilb-backend-service2-ig
      • מצב איזון: Utilization
    6. מוסיפים התאמה למארח למפת ה-URL של שירות הקצה העורפי.

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

      • Name (שם): l7-ilb-map
      • מארח: service-extensions.com
      • נתיב: callouts
      • פרוטוקול: HTTP
      • קצה עורפי: l7-ilb-backend-service2

    gcloud

    1. יוצרים מופע של VM. משתמשים בפקודה gcloud compute instances create עם ערכי הדוגמה הבאים:

      gcloud compute instances create l7-ilb-backend2-vm \
        --zone=us-west1-a \
        --network=lb-network \
        --subnet=backend-subnet \
        --tags=allow-ssh,load-balanced-backend \
        --image-family=debian-11 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
            apt-get update
            apt-get install apache2 -y
            a2ensite default-ssl
            a2enmod ssl
            echo "Page served from second backend service" | tee /var/www/html/index.html
            systemctl restart apache2'
      
    2. יוצרים קבוצה של מופעי מכונה לא מנוהלים. משתמשים בפקודה gcloud compute instance-groups unmanaged create עם ערכי הדוגמה הבאים:

      gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \
        --zone us-west1-a
      
    3. מוסיפים את המכונה הווירטואלית החדשה לקבוצת המופעים. משתמשים בפקודה gcloud compute instance-groups unmanaged add-instances עם ערכי הדוגמה הבאים:

      gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \
        --zone=us-west1-a \
        --instances=l7-ilb-backend2-vm
      
    4. יוצרים שירות לקצה העורפי. משתמשים בפקודה gcloud compute backend-services create עם ערכי הדוגמה הבאים:

      gcloud compute backend-services create l7-ilb-backend-service2 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTP \
        --health-checks=l7-ilb-basic-check \
        --health-checks-region=us-west1 \
        --region=us-west1
      
    5. מוסיפים קצה עורפי לשירות הקצה העורפי. משתמשים בפקודה gcloud compute backend-services add-backend עם ערכי הדוגמה הבאים:

      gcloud compute backend-services add-backend l7-ilb-backend-service2 \
        --balancing-mode=UTILIZATION \
        --instance-group=l7-ilb-backend-service2-ig \
        --instance-group-zone=us-west1-a \
        --region=us-west1
      
    6. מוסיפים התאמה למארח למפת URL של שירות לקצה העורפי. משתמשים בפקודה gcloud compute url-maps add-path-matcher עם ערכי הדוגמה הבאים:

      gcloud compute url-maps add-path-matcher l7-ilb-map \
        --path-matcher-name=callouts \
        --default-service=l7-ilb-backend-service2 \
        --new-hosts=service-extensions.com \
        --region=us-west1
        

הגדרת שירות קצה עורפי של יתרונות מרכזיים

בדוגמה הזו, יש שרת תוספים בסיסי שמבוסס על Python ומיישם את ext_proc gRPC API של Envoy. קובץ Docker עם השרת הזה נמצא בכתובת us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main במאגר Service Extensions GitHub repository של Google Cloud. מאגר המידע הזה מכיל כמה דוגמאות נוספות של שרתי Python ו-Go של ext_proc לביצוע משימות כמו שינוי כותרות ושינוי גוף.

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

  1. יוצרים מכונה וירטואלית (VM) עבור שירות הקצה העורפי של ההתקשרות, שמריץ את שרת התוסף לדוגמה של Python.

    המסוף

    יצירת מכונה באמצעות קובץ אימג' של קונטיינר.

    1. נכנסים לדף Create an instance במסוף Google Cloud .

      כניסה לדף Create an instance

    2. מציינים את הערכים לדוגמה הבאים:

      • Name (שם): callouts-vm
      • Zone (תחום): us-west1-a
      • רשת: lb-network
      • Subnetwork: backend-subnet
      • תגים: allow-ssh וload-balanced-backend
      • קובץ אימג' של קונטיינר: us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main

    gcloud

    יצירת מכונה באמצעות קובץ אימג' של קונטיינר. משתמשים בפקודה gcloud compute instances create-with-container עם ערכי הדוגמה הבאים:

    gcloud compute instances create-with-container callouts-vm \
      --container-image=us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main \
      --network=lb-network \
      --subnet=backend-subnet \
      --zone=us-west1-a \
      --tags=allow-ssh,load-balanced-backend
    
  2. מוסיפים את המכונה הווירטואלית לקבוצת מופעים לא מנוהלת.

    המסוף

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

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

      כניסה לדף Instance groups

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

      • Name (שם): callouts-ig
      • Zone (תחום): us-west1-a
    2. הגדרת יציאה לקבוצת המכונות.

      במיפוי ניוד, מציינים את שמות הניוד והערכים האלה: http:80 ו-grpc:443.

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

      בקטע VM instances (מכונות וירטואליות), מציינים callouts-vm.

    gcloud

    1. יוצרים קבוצה של מופעי מכונה לא מנוהלים. משתמשים בפקודה gcloud compute instance-groups unmanaged create עם ערכי הדוגמה הבאים:

      gcloud compute instance-groups unmanaged create callouts-ig \
        --zone=us-west1-a
      
    2. מגדירים יציאה לקבוצת המכונות. משתמשים בפקודה gcloud compute instance-groups unmanaged set-named-ports עם ערכי הדוגמה הבאים:

      gcloud compute instance-groups unmanaged set-named-ports callouts-ig \
        --named-ports=http:80,grpc:443 \
        --zone=us-west1-a
      
    3. מוסיפים את המכונה הווירטואלית החדשה לקבוצת המופעים הלא מנוהלת. משתמשים בפקודה gcloud compute instance-groups unmanaged add-instances עם הערכים לדוגמה הבאים:

      gcloud compute instance-groups unmanaged add-instances callouts-ig \
        --zone=us-west1-a \
        --instances=callouts-vm
      
  3. יוצרים שירות קצה עורפי ליתרונות מרכזיים ומוסיפים קצה עורפי. בדומה לשרתי קצה עורפיים אחרים, יכול להיות ששרתי יתרונות מרכזיים יזדקקו לכללים לחומת אש כדי לאפשר תעבורת נתונים של שרת proxy.

    המסוף

    יוצרים שירות לקצה העורפי של callout שמשתמש בפרוטוקול HTTP/2 ויש לו בדיקת תקינות HTTP.

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

      כניסה לדף Backends

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

      • Name (שם): l7-ilb-callout-service
      • אזור: us-west1
      • סוג מאזן העומסים: Regional external Application Load Balancer (EXTERNAL_MANAGED)
      • פרוטוקול: HTTP2
      • שם היציאה: grpc
      • בדיקת תקינות > שם: callouts-hc
      • בדיקת תקינות > מספר יציאה: 80
      • כללי מדיניות אבטחה של Cloud Armor לשרתי backend: None
    3. מוסיפים את קבוצת המכונות עם שרת התוסף כקצה עורפי לשירות הקצה העורפי. קבוצת המכונות מריצה את השירות ext_proc.

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

      • קבוצת מכונות: callouts-ig
      • מצב איזון: Utilization

    gcloud

    1. יוצרים בדיקת תקינות בסיסית של HTTP למכונה. משתמשים בפקודה gcloud compute health-checks create http עם ערכי הדוגמה הבאים:

      gcloud compute health-checks create http callouts-hc \
        --region=us-west1 \
        --port=80
      
    2. יוצרים שירות לקצה העורפי של callout שמשתמש בפרוטוקול HTTP/2. משתמשים בפקודה gcloud compute backend-services create.

      gcloud compute backend-services create l7-ilb-callout-service \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTP2 \
        --port-name=grpc \
        --health-checks=callouts-hc \
        --health-checks-region=us-west1 \
        --region=us-west1
      
    3. מוסיפים את קבוצת המכונות עם שרת התוסף בתור קצה עורפי לשירות הקצה העורפי. קבוצת המכונות מריצה את השירות ext_proc. משתמשים בפקודה gcloud compute backend-services add-backend עם הערכים לדוגמה הבאים:

      gcloud compute backend-services add-backend l7-ilb-callout-service \
        --balancing-mode=UTILIZATION \
        --instance-group=callouts-ig \
        --instance-group-zone=us-west1-a \
        --region=us-west1
      

אחרי שמגדירים שירות backend, אפשר להגדיר תוספים של route,‏ authorization ו-traffic.

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