בדף הזה מוסבר איך לפתור בעיות בהגדרות של מחבר IAP מקומי. למידע נוסף על פתרון בעיות, קראו את המאמר ניפוי באגים ב-Cloud Service Mesh.
פתרון בעיות שקשורות לשגיאה 500
כאן מפורטות בעיות שונות ופתרונות אפשריים לשגיאה 500 שמופיעה כשמנסים לגשת לאפליקציה.
האפליקציה המקומית לא מחוברת לרשת Google Cloud
יכול להיות שהאפליקציה המקומית לא מחוברת לרשת שלGoogle Cloud . כדי לוודא שיש קישוריות, שולחים פינג לאפליקציה המקומית מאחת מהמכונות של המחבר המקומי ב-Compute Engine. אם אי אפשר להגיע לנקודת הקצה של המחבר המקומי, צריך לנפות באגים בקישוריות ובהגדרות של הרשת לפני שממשיכים.
Envoy לא מותקן כמו שצריך במכונות הווירטואליות
כדי לוודא ש-Envoy הותקן כמו שצריך, מבצעים את השלבים הבאים:
- מתחברים לאחת מהמכונות הווירטואליות של Compute Engine מהמחבר המקומי. שם ה-VM של המחבר המקומי מתחיל ב-
opc-on-prem-app-deployment-ig-${app}. - במסוף Cloud, מוודאים שבדיקות התקינות של השירות לקצה העורפי של איזון העומסים ב-
opc-on-prem-app-deployment-gclb-urlmapמסומנות בירוק. - אם שירות הקצה העורפי לא מופיע כתקין, מבצעים SSH לאחד מהמופעים:
gcloud compute ssh INSTANCE_NAME --zone=ZONE_NAME
כדי לוודא ש-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מוודאים שספריית היומן של Envoy נוצרה ב-
/var/log/envoy/.כדי לוודא שהמכונות הווירטואליות יכולות להגיע לקטגוריה 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:
- אימות ההרשאות: הכנה להגדרה של Cloud Service Mesh עם Envoy
- מאמתים את החשבון: מפעילים את חשבון השירות
פתרון בעיות שקשורות לשגיאות ב-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. יציאת הניהול של Envoy 127.0.0.1:15000 צריכה להיות במצב האזנה.netstat -tlpn
אם אחת מהפעולות הקודמות נכשלת, מבצעים את הפעולות הבאות כדי לפתור את הבעיה:
- מוודאים שהגישה הפרטית ל-Google מופעלת ברשת המשנה שבה פורסים את המחבר.
- מוודאים ש-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 ולנסות שוב.