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

בדף הזה מפורטות הוראות שיעזרו לכם לפתור בעיות בהגדרת IAP On-premises Connector. מידע נוסף לפתרון בעיות זמין במאמר ניפוי באגים ב-Cloud Service Mesh.

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

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

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

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

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

כדי לוודא ש-Envoy מותקן בצורה תקינה:

  1. מתחברים לאחת מהמכונות הווירטואליות ב-Compute Engine ממחבר מקומי. שם המכונה הווירטואלית של המחבר המקומי מתחיל ב-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

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

כדי לוודא ש-Envoy מותקן, מתחברים לאחת ממכונות ה-VM באמצעות 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 ולנסות שוב.