פתרון תקלות בשרתי self-hosted

איך מבינים למה אפליקציה self-hosted לא עולה, לא נגישה או נופלת שוב ושוב.

רוב התקלות בשרת self-hosted שייכות לכמה משפחות מוכרות: קונטיינר שאף פעם לא מגיע למצב תקין, פורט שלא נמצא איפה שה-proxy מצפה לו, דיסק שמתמלא, או הגדרה שרכיב אחד קורא אחרת מרכיב אחר.

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

מסלול מומלץ

  1. רושמים את הסימפטום

    מה נכשל, מה הודעת השגיאה המדויקת ומה השתנה רגע לפני שזה התחיל.

  2. בודקים את הקבצים

    מעבירים את קובץ ה-Compose ב-Analyzer כדי לשלול קודם טעויות תצורה.

  3. מאמתים על השרת

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

כלים ועמודים

כלים ועמודים
עמודסוגעל העמוד
Docker Compose Analyzerכליבדיקות סטטיות לקובץ docker-compose.yml, בדפדפן שלכם. שום דבר לא יוצא מהעמוד.
בודק cloud-initכלימדביקים את ה-user-data שעומדים לתת לשרת חדש ומקבלים ממצאים שאומרים מה לשנות ולמה, כל אחד עם הפניה לתיעוד של cloud-init. הקובץ נשאר בדפדפן, ומפתח פרטי שנמצא בו ממוסך מיד.
השוואת קובצי Docker Composeכליהדביקו שתי גרסאות של קובץ Compose וראו מה באמת השתנה, ואילו שינויים מעלים את הסיכון. סדר המפתחות ותחביר קצר או ארוך לא נחשבים. שני הקבצים נשארים בדפדפן.
בודק Dockerfileכלימדביקים Dockerfile ומקבלים ממצאים שאומרים מה לשנות ולמה, כל אחד עם הפניה לתיעוד של Docker עצמו. הקובץ נשאר בדפדפן, וסודות שבו ממוסכים.
בדיקת DNS לפני עלייה לאווירכלילפני שמפנים מבקרים לשרת חדש, בודקים מה ה-DNS באמת עונה: האם השם מצביע לכתובת של השרת, האם ה-resolvers כבר מסכימים, והאם משהו יעצור את התעודה. הדפדפן שואל ישירות שני resolvers ציבוריים; שום דבר לא עובר דרך ANAROQ ולא נשאר אצלנו.
בודק התנגשויות רשת של Dockerכלימזינים את טווחי ה-LAN וה-VPN, או מדביקים פלט של ip route, ורואים אילו רשתות של Docker יתנגשו בהם, ו-pool שעוקף אותם ל-daemon.json. שום דבר שתזינו או תדביקו לא יוצא מהעמוד.
רשימת בדיקה לעלייה לאווירכלילפני ששרת self-hosted עולה לאוויר, עוברים על מה שבדרך כלל נשבר ראשון. כל סעיף אומר מה לבדוק, נותן פקודת קריאה להריץ על השרת, מסביר למה זה חשוב ומקשר לכלי באתר שעוזר. הסימונים נשמרים בקישור, ולא נשלחים לשום מקום.
קונטיינר שמופעל מחדש שוב ושוב: מוצאים את הסיבה לפי קוד היציאהקריאהבדיקה צעד אחר צעד לקונטיינר Docker שתקוע בלולאת restart: קוראים את הסטטוס ואת קוד היציאה, הולכים בענף שמתאים, ומתקנים את הסיבה בפקודות שמריצים על השרת שלכם.

ראו גם: בדיקה ופתרון תקלות · מתודולוגיה · כלים חינמיים

הצעד הבא

Docker Compose Analyzer