בדף הזה מפורטות הוראות שיעזרו לכם לפתור בעיות בהגדרת IAP On-premises Connector. מידע נוסף לפתרון בעיות זמין במאמר ניפוי באגים ב-Cloud Service Mesh.
פתרון בעיות שקשורות לשגיאה 500
בהמשך מפורטות בעיות שונות ופתרונות אפשריים שיעזרו לכם לפתור שגיאת 500 שמופיעה כשמנסים לגשת לאפליקציה.
האפליקציה המקומית לא מחוברת לרשת Google Cloud
יכול להיות שהאפליקציה המקומית לא מחוברת לרשתGoogle Cloud . כדי לוודא שיש קישוריות, שולחים פינג לאפליקציה המקומית מאחת המכונות של Compute Engine שבהן מותקן המחבר המקומי. אם אי אפשר להגיע לנקודת הקצה של המחבר המקומי, צריך לנפות באגים בקישוריות ובהגדרות של הרשת לפני שממשיכים.
Envoy לא מותקן בצורה תקינה במכונות הווירטואליות
כדי לוודא ש-Envoy מותקן בצורה תקינה:
- מתחברים לאחת מהמכונות הווירטואליות ב-Compute Engine ממחבר מקומי. שם המכונה הווירטואלית של המחבר המקומי מתחיל ב-
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
אם מחבר ה-on-premises נפרס בהצלחה והאישור הוקצה, אבל החיבור עדיין נכשל, יכול להיות ש-Envoy לא מותקן בצורה נכונה במכונות הווירטואליות.
כדי לוודא ש-Envoy מותקן, מתחברים לאחת ממכונות ה-VM באמצעות 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 ולנסות שוב.