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

מנגנון העבודה של Docker Swarm יכול להיות קשה לפיצוח בהתחלה. אבל אל דאגה, נפרט את זה במאמר זה. אז מה זה Docker Swarm? למה להשתמש בו? ואיך זה עובד?

מה זה Docker Swarm ואיך זה עובד?

Docker Swarm מתייחס לקבוצה של מארחי Docker (מחשבים) המחוברים לרשת כאשכול כדי לספק משימות מוגדרות. כל מארח Docker באשכול זה הוא צומת, הנקרא גם צומת עובד.

כדי להבטיח חלוקה יעילה של משימות, אתה צריך צומת מנהל. באופן אידיאלי, אתחול מצב Docker Swarm מתחיל בצומת המנהל, והצמתים הבאים הופכים לעובדים.

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

עם זאת, צומת המנהל יכול גם להשתתף בביצוע משימות (כעובד) או להתמודד עם ניהול באופן ישיר. אתה יכול למנוע תזמון משימות במנהל על ידי החלפת מצבו מ פָּעִיל ל ניקוז. אבל ההחלטה שלך להקצות פונקציה כפולה זו עשויה להיות תלויה במספר גורמים. בעיקרו של דבר, אתה רוצה להיות בטוח שיש לו מספיק משאבים לטפל במספר תפקידים לפני שתעשה זאת.

instagram viewer

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

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

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

עם זאת, אינך צריך לדאוג לגבי החלפת תפקידים בין צמתים או תחזוקה של מצבים באשכול. אלגוריתם קונצנזוס הרפסודות (שיטה סובלנית לתקלות) המובנה ב-Docker SwarmKit מטפל בזה.

למה להשתמש ב-Docker Swarm?

Docker Swarm שימושי לפריסת אפליקציות מורכבות עם סיכויי מדרגיות גבוהים. אחד ממקרי השימוש העיקריים שלו הוא ביזור שירותי מיקרו. לאחר מכן כל מיקרו-שירות חולק מיכל דומה עם אלה שבצמתי עובדים אחרים.

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

התכונה הניתנת להרחבה זו של Docker Swarm מאפשרת לאפליקציות להיות זמינות באופן עקבי עם אחביות אפס. זו אפילו אחת הסיבות שאתה רוצה בחר Docker על פני כלי וירטואליזציה אחרים.

ומה עוד? בניגוד ל-Docker Containers בודדים, שבהם קונטיינר נעצר כאשר הוא נכשל, Docker Swarm מפיץ מחדש משימות אוטומטית בין צמתי העובדים הזמינים בכל פעם שאחד נכשל.

Docker Swarm גם שומר גיבוי של כל מדינה. אז אתה תמיד יכול להחזיר תצורות נחיל חדשות למצב של קודמים. נניח שצומת המנהל בנחיל קודם נכשל; אתה יכול להתחיל אשכול חדש עם יותר צמתים מנהלים ולהחזיר אותו כדי להתאים את התצורה של הקודם.

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

ל-Docker יש אלטרנטיבות רבות, ואחד הקרובים ביותר הוא Kubernetes. עם זאת, Docker Swarm קל לשימוש ואוטומטי יותר. לדוגמה, בעוד שייתכן שתצטרך לאזן עומס באופן ידני בכלי תזמור אחרים כמו Kubernetes, Docker Swarm כולל איזון עומסים אוטומטי, מה שמקל על החיים של DevOps.

ארכיטקטורת נחיל הדוקר

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

שירותים

שירות Docker Swarm מפרט את התצורה של תמונת Docker שמריצה את כל הקונטיינרים בנחיל. הוא כולל מידע על המשימות באשכול. לדוגמה, שירות עשוי לתאר א הגדרת שרת SQL עם מעוגן.

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

השירותים ב-Docker Swarm יכולים להיות גלובליים או משוכפלים.

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

צמתים

צומת ב-Docker Swarm הוא מופע של כל זמן הריצה של Docker, המכונה גם מנוע Docker. צמתי נחיל יכולים להיות מכונות פיזיות או וירטואליות. חשבו על זה כעל רשת של מחשבים המריצים תהליכים דומים (מכולות).

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

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

משימות

משימה מגדירה את העבודה שהוקצתה לכל צומת ב-Docker Swarm. ברקע, תזמון משימות ב-Docker Swarm מתחיל כאשר מתזמר יוצר משימות ומעביר אותן למתזמן, שמציג מיכל עבור כל משימה.

לאחר מכן, צומת המנהל משתמש במתזמן כדי להקצות ולהקצות מחדש משימות לצמתים כנדרש ומצוין בשירות Docker.

Docker Swarm נגד Docker Compose: מה ההבדלים?

אנשים משתמשים לעתים קרובות ב-Docker Compose וב-Docker Swarm זה בזה. למרות ששניהם כוללים הפעלת קונטיינרים מרובים, הם שונים.

בעוד Docker Compose מאפשר לך להריץ קונטיינרים מרובים על מארח יחיד, Docker Swarm מפיץ אותם על פני מספר מנועי Docker באשכול.

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

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

מכאן, שאולי יש לך זמן השבתה ב-Docker Compose, Docker Swarm מבטיח שהאפליקציה שלך תמשיך לפעול בעזרת שרתי גיבוי (צמתי עובדים). עם זאת, Docker 1.13 תומך בפריסה של Docker Compose למצב Swarm באמצעות פריסת docker stack פקודה.

Docker Swarm עוזר לך לפרוס אפליקציות מורכבות

Containerization גברה על מכונות וירטואליות בעיצוב תוכנות אינטגרציה מתמשכת ואספקה ​​מתמשכת (CI/CD). לכן, הבנת הדקויות של מנגנון Docker Swarm היא מיומנות יתרה אם אתה מחפש להיות מומחה DevOps שלא יסולא בפז.

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