פתרון בעיות בהגדרת מחבר מקומי

בדף הזה מוסבר איך לפתור בעיות בהגדרות של מחבר IAP מקומי. למידע נוסף על פתרון בעיות, קראו את המאמר ניפוי באגים ב-Cloud Service Mesh.

פתרון בעיות שקשורות לשגיאה 500

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

האפליקציה המקומית לא מחוברת לרשת Google Cloud

יכול להיות שהאפליקציה המקומית לא מחוברת לרשת שלGoogle Cloud . כדי לוודא שיש קישוריות, שולחים פינג לאפליקציה המקומית מאחת מהמכונות של המחבר המקומי ב-Compute Engine. אם אי אפשר להגיע לנקודת הקצה של המחבר המקומי, צריך לנפות באגים בקישוריות ובהגדרות של הרשת לפני שממשיכים.

‫Envoy לא מותקן כמו שצריך במכונות הווירטואליות

כדי לוודא ש-Envoy הותקן כמו שצריך, מבצעים את השלבים הבאים:

  1. מתחברים לאחת מהמכונות הווירטואליות של Compute Engine מהמחבר המקומי. שם ה-VM של המחבר המקומי מתחיל ב-opc-on-prem-app-deployment-ig-${app}.
  2. במסוף Cloud, מוודאים שבדיקות התקינות של השירות לקצה העורפי של איזון העומסים ב-opc-on-prem-app-deployment-gclb-urlmap מסומנות בירוק.
  3. אם שירות הקצה העורפי לא מופיע כתקין, מבצעים SSH לאחד מהמופעים:
    gcloud compute ssh INSTANCE_NAME --zone=ZONE_NAME
  4. כדי לוודא ש-Envoy פועל, מריצים את הפקודה הבאה:

     ps aux | grep envoy
    
    אמור לפעול יותר מתהליך אחד, מלבד grep envoy.

    פלט לדוגמה:

    envoy      943  0.0  0.0   5488  3076 ?        Ss   06:25   0:00 /bin/bash /usr/local/bin/run-proxy.sh
    envoy      944  0.1  1.5 178928 57352 ?        Sl   06:25   1:23 /usr/local/bin/envoy --config-path /usr/local/etc/
    envoy/envoy-proxy-bootstrap.json --allow-unknown-static-fields --disable-hot-restart --log-level info --drain-time-
    s 60
    
  5. מוודאים שספריית היומן של Envoy נוצרה ב-/var/log/envoy/.

  6. כדי לוודא שהמכונות הווירטואליות יכולות להגיע לקטגוריה gce-mesh, מריצים את הפקודה הבאה:

    gcloud storage cp gs://gce-mesh/service-proxy-agent/releases/service-proxy-agent-0.2.tgz .

אם אחד מהאימותים בשלב הזה נכשל, סימן ש-Envoy לא הותקן כמו שצריך. כדי לקבל מידע נוסף, אפשר לעיין ביומני ההפעלה בכתובת /var/log/daemon.log.

אם ראיתם ש-Envoy לא פועל מהשלבים הקודמים, אחת מהסיבות יכולה להיות VPC Service Controls. סקריפט ההפעלה במכונות הווירטואליות מוריד את קובץ האימג' של Envoy מהקטגוריה gce-mesh. אם הכללים של VPC Service Controls לא מאפשרים את החיבור, פריסת המחבר המקומי לא תעבוד.

כדי לוודא ש-Envoy מותקן כמו שצריך, צריך לאפשר גישה לקטגוריית האחסון gce-mesh ב-VPC Service Controls בפרויקט המארח. בנוסף, צריך לוודא שיש ל-VPC כלל מסלול שמאפשר תעבורת נתונים לאינטרנט הציבורי. כך אפשר לפרוס את Envoy. למידע נוסף, קראו את המאמר כללי תעבורת נתונים נכנסת ויוצאת.

האפליקציה המקומית לא מחוברת ל-Envoy

אם אתם יכולים לשלוח פינג לאפליקציה המקומית מהמכונה הווירטואלית אבל לא יכולים להשתמש במחבר המקומי, יכול להיות ש-Envoy לא יכול להתחבר לאפליקציה.

כדי לוודא ש-Envoy יכול להתחבר לאפליקציה המקומית, נסו לבצע קריאה ל-Envoy מהמכונה שבה Envoy פועל. מתחברים למכונה הווירטואלית opc-on-prem-app-deployment-ig-${app} באמצעות SSH ומריצים את הפקודה הבאה. מספר היציאה של Envoy מופיע ב-Instance Groups > Details > Port Name Mapping.

curl -x -v localhost:${envoy_port}

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

  • /var/log/envoy/envoy.err.log כדי לבדוק אם יש יומני שגיאות. אם אין יומני שגיאות, מריצים את הפקודה הבאה כדי לבדוק אם Cloud Service Mesh מופעל ויכול להגדיר את Envoy:
    sudo curl 0.0.0.0:15000/config_dump 
  • מוודאים שההגדרה TRAFFICDIRECTOR_INTERCEPTION_LISTENER מופעלת. אם לא מוגדר TRAFFICDIRECTOR_INTERCEPTION_LISTENER, ל-Cloud Service Mesh אין אפשרות להגדיר את Envoy.
  • בודקים אם יש הודעות שגיאה בכל מאזין.

ההרשאות לחשבונות Envoy ו-Cloud Service Mesh לא מוגדרות

אם השגיאה GRPC 403 מופיעה ב-envoy.err.log או אם TRAFFICDIRECTOR_INTERCEPTION_LISTENER לא מופיע בהגדרות של Envoy, יכול להיות שהרשאות החשבון לא מוגדרות כמו שצריך.

מוודאים שלחשבון השירות של המכונה הווירטואלית יש הרשאות גישה מסוג TD ל-xDS v3:

פתרון בעיות שקשורות לשגיאות ב-ERR_SSL_VERSION_OR_CIPHER_MISMATCH

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

חשוב לזכור שהקצאת אישור בניהול Google יכולה להימשך עד 60 דקות.

פתרון בעיות בהתקנה של Envoy

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

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

  •  ps aux | grep envoy 
    אמור לפעול יותר מתהליך אחד, מלבד grep envoy.
  •  netstat -tlpn 
    יציאת הניהול של Envoy‏ 127.0.0.1:15000 צריכה להיות במצב האזנה.

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

  1. מוודאים שהגישה הפרטית ל-Google מופעלת ברשת המשנה שבה פורסים את המחבר.
  2. מוודאים ש-VM Manager (OS Config API) מופעל.

פתרון בעיות בפריסה שנכשלה במשאבי IamMemberBinding

אם פורסים או מעדכנים את המחבר המקומי ומופיעה שגיאת PERMISSION_DENIED שקשורה למשאבי IamMemberBinding, יכול להיות שזה בגלל שלחשבון השירות Google APIs Service Agent לא הוקצה התפקיד OWNER, כפי שנדרש כשמפעילים את IAP לאפליקציות מקומיות.

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

bind-iam-policy: {"ResourceType":"gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Policy update access denied.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/<project-ID>:setIamPolicy","httpMethod":"POST"}}
bind-storage-admin-account-iam-policy: {"ResourceType":"gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Policy update access denied.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/<project-ID>:setIamPolicy","httpMethod":"POST"}}

אם השגיאות האלה מופיעות בפריסה, צריך לוודא שלחשבון השירות Google APIs Service Agent הוקצה התפקיד OWNER ולנסות שוב.