PracticU

Swarm - Network Ingress

בלי כתוביותעם כתוביות
PracticU › קורס Docker - עם Swarm Cluster › Swarm - Network Ingress
מילון מושגים:
פורט - מספר שמזהה שירות או תהליך מסוים בתוך מחשב, ומאפשר לכוון תעבורת רשת ליעד הנכון. למשל פורט 80 ל-HTTP.
קלאסטר - קבוצת מחשבים או שרתים שעובדים יחד כמערכת אחת, לשם זמינות גבוהה, ביצועים או חלוקת עומס.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
שירות - תוכנה שרצה ברקע ומספקת פונקציונליות לרכיבים אחרים, לרוב ללא ממשק משתמש, ומופעלת אוטומטית עם המערכת.
כתובת IP - מספר שמזהה באופן ייחודי מכשיר ברשת מבוססת פרוטוקול IP, ומאפשר לשלוח אליו ולקבל ממנו מידע.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.

Swarm - Network Ingress
הרצאה על רשת ה-Ingress ב-Swarm, שמנתבת פניות שמגיעות לפורט מפורסם למקום הנכון, גם כשהקונטיינר לא רץ על הנוד שאליו הגיעה הפנייה.
השלבים העיקריים
1. הרשת נוצרת אוטומטית: בקלאסטר Swarm נוצרת רשת מסוג Overlay בשם ingress כשהקלאסטר מוקם, והיא פרוסה על כל הנודים.
2. ניתוב פנימי: כשמפרסמים פורט, כל נוד בקלאסטר מקבל את הפנייה לפורט הזה, גם אם אין עליו קונטיינר של השירות, ומעביר אותה לנוד שבו הקונטיינר רץ.
3. חיבור כפול: שירות עם פורט מפורסם מחובר גם לרשת הפנימית שלו וגם לרשת ה-ingress. הקונטיינר מקבל שתי כתובות IP, אחת לתנועה חיצונית ואחת לתקשורת בין שירותים.
4. שירות בלי פורט: מסד נתונים שאינו מפורסם מחובר רק לרשת הפנימית, ולכן אי אפשר להגיע אליו מבחוץ.
5. מצב host לעקיפת הניתוב: --publish mode=host מפרסם את הפורט ישירות על הנוד הפיזי, בלי לעבור דרך ה-ingress. בשילוב עם מצב Global כל נוד משרת את עצמו.
פקודות והגדרות
docker network ls, docker network inspect ingress, docker service create --publish published=...,target=...,mode=host, docker service ps, docker service rm. אפשר גם ליצור רשת ingress מותאמת עם טווח כתובות אחר.
שימו לב
היתרון של ה-ingress הוא שהלקוח לא צריך לדעת איפה הקונטיינר נמצא. החיסרון הוא שאי אפשר לבחור איזה קונטיינר יקבל את הפנייה. ההרצאה הדגימה שהאתר נגיש מכל כתובת נוד, גם כשהקונטיינר רץ רק על נוד אחד.
כדי שהתעבורה תגיע לקלאסטר צריך לפתוח את פורטי התקשורת של Swarm בחומת האש.
בסיום יודעים מתי משתמשים ב-ingress ומתי עוקפים אותו במצב host.
השיעור הבא בקורס: Swarm - Network Drivers

פרקי ההרצאה: Swarm - Network Ingress

  1. 00:00

    מה זה רשת Ingress בקלאסטר

  2. 01:57

    ניתוב הפורטים אל הקונטיינרים הנכונים

  3. 02:41

    יתרונות וחסרונות של פרסום פורט

  4. 05:58

    שירות מחובר גם ל-Ingress וגם לרשת הפנימית

  5. 08:52

    שירות בלי פורט חיצוני ברשת פנימית בלבד

  6. 12:09

    מתי Ingress לא מתאים לסוכן על כל נוד

  7. 12:48

    בדיקת חברי רשת Ingress עם inspect

תמלול ההרצאה: Swarm - Network Ingress

הטקסט המלא של הדקות הראשונות בהרצאה «Swarm - Network Ingress» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם, בהרצאה הזאת אנחנו נלמד על Ingress Network, מה זה רשת Ingress הזאתי, שראינו אותה לפני כן כשעשינו Docker Network LS.

  2. 00:17

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

  3. 00:27

    שימו לב איזה בעיה יש לי. אני ניגש פה ל-Node 1, נכון? לסרוויס של ה-Container Advice, אתם זוכרים, כן? יש לי פה קונטיינר אדווייזר שרץ על כל אחד.

  4. 00:45

    ואני ניגש לנוד הראשון שלי, לאובנטו אחד. אתם רואים, אני על אובנטו אחד, IP address. באובנטו אחד ה-IP החיצוני שלי זה 121, זה ה-IP החיצוני שלי.

  5. 01:06

    ואני ניגש ל-IP החיצוני שלי, של אובנטו אחד, לקונטיינר אדווייזור, שרץ אצלי בכל אחד מהאוסטים ואני רואה מידע ופתאום אני מגלה שאני בכלל מסתכל על השרת אובונטו 2 אני אומר רגע אני בא עם אובונטו 1 אמרתי טוב יכול להיות תקלה עושה קונטרול F5 להטעין עוד פעם הנה אני על אובונטו 1 מצוין תראו אני על אובונטו 1 עושה עוד פעם קונטרול F5 הנה אני עוד פעם על

  6. 01:42

    אובונטו 1 עוד פעם קונטרול F5 אני על אובונטו 2 תראו מה קורה פה איך זה יכול להיות שכל פעם ואני נשאר כל הזמן על אותו מחשב. אני מתחבר למחשב מסוים, לאוסט מסוים, לנוד מסוים, אותו אחד כל הזמן, פתאום אני אין לו בונטו 3. מה זה?

  7. 02:05

    אז התשובה היא מאוד מאוד פשוטה, שבין הפורט המפורסם בחוץ לבין הקונטיינר תכלס יש רשת אינגרס, אינגרס נטוורק.

  8. 02:18

    אם אתם רוצים הגדרה מדויקת, זה נקרא אינגרס ראונטינג מאש. אינגריס הזה מקבל את כל הפורטים מבחוץ ומעביר אותם לקונטיינרים שפועלים תכלס. הוא בעצם עושה easy to publish ports.

  9. 02:41

    עכשיו תשאלו אותי, מה easy בכל הסיפור הזה? מה, אני מפרסם פורט ומגיע לקונטיינר לא נכון? זאת בדיוק הבעיה, שיש לזה גם חסרונות, אבל יש לזה יתרונות.

  10. 02:54

    מה היתרון? שאם קונטיינר מסוים, לדוגמה, האפליקציה MyWeb עברה מאוסט לאוסט, מנוד לנוד, אני עדיין יכול להמשיך לפנות לנוד מספר 3 ולקבל תשובה.

  11. 03:08

    זה היתרון. בואו נראה. לדוגמה, עכשיו אני רואה שוורדפרס עובד, שרת ווב עובד רק על הנוד השלישי שלי, נכון? רק על הנוד השלישי עובד.

  12. 03:21

    אתם יכולים לראות פה רק, אה, על אובנטו 2 זה עובד, סליחה. רק על אובנטו 2 זה עובד. אתם רואים רק על אובנטו 2 עובד הוורדפרס כרגע, נכון?

  13. 03:33

    אני בא, פונה לאוסט הראשון, לנוד הראשון, והכל עובד לי. איך עובד לי אתר אינטרנט אם אין עליו בעצם קונטיינר שיתפוס את הפאקטים? אז זה בדיוק היתרון של ה-Ingress Network.

  14. 03:50

    Ingress Network תופס פנייה שמיועדת לפורט 80 המפורסם בחוץ, ומעביר את זה לקונטיינר הנכון. זה היתרון שלו. החיסרון שלו, שאני לא יודע לאיזה קונטיינר הוא יעביר, ואם אני רוצה להגיע לקונטיינר ספציפי אני לא יכול, כל פעם אני אגיע לאחד אחר.

  15. 04:12

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

  16. 04:30

    אנחנו עושים www.practicy.com והוא תמיד עובד לנו ולא אכפת לנו האם לקוח פנה לנוד השני, לנוד הראשון או לנוד השלישי. כל נוד שקיים בקלאסטר ופעיל יקבל את הפנייה ויעביר אותו למקום הנכון הבנתם מה קורה פה זאת אומרת הסווארם הזה זה נקרא סווארם לורד בלנסר או רשת אינגריס הרשת אינגריס הזאת עומדת בין

  17. 04:57

    הפורט החיצוני שמפורסם לבין הקונטיינר אתם מתחילים להבין מה קורה פה או שעדיין לא כל כך זאת אומרת כשאני בא ומפרסם פורט בחוץ תראו מה קורה docker network ls, סליחה, docker service ls.

  18. 05:23

    שימו לב, יש לי פה שלושה שירותים שמפורסמים בחוץ, 1, 2 ו-3. אתם רואים? כשמגיעה פנייה בפורט 80 היא עוברת קודם כל ל-ingress network, ו-ingress network מעביר את זה ל-node הנכון.

  19. 05:39

    אז הפנייה מגיעה מבחוץ, נניח למחשב מספר 1, ל-node מספר 1. ה-node מספר 1 לוקח, מכניס את זה ל-lan שנקרא ingress, ומעביר את זה הלאה ל-Node הנכון. עכשיו, מה זה אומר?

  20. 05:58

    זה אומר שנניח השירות של וורדפרס, אתם כל הזמן חשבתם שהוא מחובר לרשת אחת, אז בואו אני אפתיע אתכם. הוא מחובר גם לרשת הפנימית וגם ל-Ingress, יש לו שני חיבורים.

  21. 06:15

    בואו נראה את הדבר הזה. בואו נעשה ככה, docker service ps wordpress, כרגע הוא רץ אך ורק על אובונטו 2, נכון?

  22. 06:35

    על אובונטו 2. docker inspect ושימו לב מה אנחנו רואים פה אנחנו רואים את המיין נטוורק שאליו מחובר הוורדפרס נכון אני רציתי לראות קונטיינר זה לא קונטיינר אנחנו רואים עוד נטוורק שנקרא אינגריס עוד פעם הקונטיינר הזה מחובר גם לרשת שקוראים לה אינגריס עם כתובת הזאת אתם רואים פה את כל הקונפיק של הסאבנט 10255 נכון והוא גם

  23. 07:22

    מחובר לרשת שנקראת מיין נטוורק בואו בואו נקפוץ שנייה, נראה איפה זה, docker.ps, הוא מחובר לשתיהם, docker.ps, docker.inspect, ניקח את הדבר הזה, אולי נראה את זה יותר טוב פה.

  24. 07:45

    שימו לב, הוורדפרס מחובר גם למיי נטוורק, שזה הלאן הפנימי שלו שאני לא יכול לגשת אליו, זה לאן פנימי מסוג Overlay, זה אומר שהוא פרוס על כל הנודים בקלאסטר ואליו מחוברים רק חברים בתוך המיי נטוורק, אבל בגלל שפרסמתי פורט בחוץ זה גם מחובר לאינגריס.

  25. 08:10

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

  26. 08:40

    הם בכוונה חסמו שם כל מיני DNS ריזולווינגים וכל מיני שירותי DNS כדי שבן אדם לא ינסה להשתמש ברשת הזאת לצרכים שלו. בואו נראה עוד משהו מעניין. אם אנחנו ניקח שירות docker service ls, ניקח שירות שאין לו פורט מפורסם, אתם רואים db service נניח, כן?

  27. 09:08

    ונעשה docker service ps על השירות הזה של mysql, ונראה שהוא עובד על אומבונטו 3, נלך לאובונטו שלוש ונעשה docker ps ו docker inspect על מיי sql אנחנו רואים שמיי sql מחובר בנטוורקס רק לרשת אחת רק למיי נטוורק שימו לב הוא מחובר רק לנטוורק אחד לעומת זאת מישהו שיש לו פורט

  28. 10:04

    מפורסם בחוץ מחובר גם לאינגריס בשביל לקבל פניות מבחוץ וגם למיי נטוורק עכשיו זה התפקיד של אינגריס וזה בלאקל עלינו איך שאנחנו יכולים לפנות ל-IP גם ל-192, 168, שימו לב שנייה, נניח גם ל-IP כזה,

  29. 10:39

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

  30. 11:07

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

  31. 11:25

    בשביל הדבר הזה צריך לפתוח את הפורט 7.9.4.6 ופורט הזה, בשביל אינגריס נטוורק ותקשורת דיסקאברי, תדעו שזה זה.

  32. 11:37

    עכשיו אני יכול לבטל את זה, תכף נעשה את זה, תכף נבטל אותו, אם יש לי סתם אתר ווב רגיל זה ממש ממש טוב בגדול זה ממש ממש טוב שאני לא צריך לדאוג שמישהו יגיע לקונטיינר 3, לנוט 3 ולא יקבל שירות אז אם מישהו יגיע לנוט 3 לא מעניין, הוא ידע, ה-ingress ידע להעביר אותו למקום הנכון

  33. 12:00

    אז זה בעצם לא בלנסר מובנה בתוך הדוקר, בתוך ה-swarm אוקיי, עכשיו מתי זה לא טוב? לפעמים זה לא טוב לדוגמה כשיש לי agent על כל אחד, נכון?

  34. 12:18

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

  35. 12:29

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

  36. 12:43

    קודם ככה, docker network ls. אנחנו יכולים לעשות docker network inspect in greese, לעשות inspect על הרשת. ולראות שלרשת הזאתי מחוברים בעצם שלושה מחשבים, שלושה פירים, וקונטיינרים, איזה קונטיינרים מחוברים? שימו לב, C-advisor מחובר אליו, Visual מחובר אליו,

  37. 13:12

    כן? מי עוד מחובר אליו? עכשיו, אני בא להראות לכם שכאן אנחנו רואים על Inspectal Network גם את הכתובות שלה. תיאורטית אפשר למחוק אותו ולהקים מחדש את האינגריסים, הכתובות לא מתאימות לכם, או לעשות לו Update של כתובות.

  38. 13:43

    אוקיי, בסדר. זה מה שרציתי להראות לכם. עכשיו, אם אני אעשה מעניין על זה docker network network inspect ingress in cadvisor וwordpress הבנתם מה שקורה פה שהאינספקט הזה רואה רק את המקומית שלו הוא לא רואה באמת את כל המידע אתם רואים האינספקט הזה לא הכי טוב אבל אני

  39. 14:23

    רוצה להראות לכם שפה wordpress מחובר לאינגריס וגם cadvisor מחובר לאינגריס ואם אני אעשה docker network inspect אפקט מיי נטוורק, למיי נטוורק מי מחובר?

  40. 14:39

    המופע הראשון של וורדפרס וזהו והוויפ, נדבר על זה בנפרד מה זה הוויפ הזה, מה זה הווירטואל איי פי הזה.

לקורס המלא: קורס Docker עם Swarm Cluster

ההרצאה הקודמת: Swarm - Global Mode

ההרצאה הבאה: Swarm - Network Drivers

הרצאות קשורות מקורסים אחרים

  • Network Teaming
  • Red Hat 7 - Network Manager

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio