נחיל דוקר להשגת זמינות גבוהה



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

מה התכונה החשובה ביותר בכל יישום מבוסס אינטרנט? יש הרבה, אבל בשבילי זמינות גבוהה זה הכי חשוב. זה מה ש- Docker Swarm עוזר לנו להשיג! זה עוזר ביישום להיות זמין מאוד.

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





במקרה של בלוג זה, רק יישום Angular יהיה Docker Swarm'ed.
הערה : השיטה למכולה של אפליקציית MEAN Stack זהה.

אז מה זה Docker Swarm?

נחיל דוקר היא טכניקה ליצור ולתחזק אשכול של מנועי דוקר . ניתן לארח את מנועי ה- Docker בצמתים שונים, וצמתים אלה הנמצאים במיקומים מרוחקים יוצרים a אֶשׁכּוֹל כאשר אתה מחובר במצב נחיל.



מדוע להשתמש ב- Docker Swarm?

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

יתרונות אחרים של נחיל דוקר

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

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



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

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

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

הערה : מנועי Docker מותקנים על מארחים / שרתים עצמאיים או במספר מחשבים וירטואליים במארח.

תחילת העבודה עם מצב נחיל

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

init נחיל של $ docker - כתובת IP i advertise-addr

כאן, הדגל '–פרסם-addr' משמש לפרסום עצמו לצמתים אחרים שרוצים להצטרף לאשכול. יש לציין את כתובת ה- IP של המנהל יחד עם הדגל. להלן צילום המסך לדוגמא.

פקודת init docker - נחיל docker - edureka

כאשר יוזם אשכול הנחיל, נוצר אסימון בסוף המנהל. אסימון זה צריך לשמש צמתים אחרים כדי להצטרף לאשכול הנחילים.

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

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

מנהל נחיצת ה- token של נחיל $

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

צומת ההצטרפות של $ docker נחיל

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

צומת $ docker ls

צילום המסך מופיע למטה:

יצירת תמונת דוקר לאפליקציה זוויתית

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

מצומת: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm מטמון נקי RUN npm להתקין COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Dockerfile משמש לביצוע קבוצת פקודות יחד לבניית תמונת Docker מותאמת אישית מתמונת בסיס. כפי שאתה יכול לראות, תמונת הבסיס בה השתמשתי היא 'צומת: 6'. NodeJS היא התמונה I מ- Docker Hub שמתויגת עם גרסה 6.

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

אני מעתיק את הקובץ 'package.json' מהמחשב המקומי שלי לספריית העבודה של המכולה. לאחר מכן אני מציין את הפקודות 'RUN npm cache clean' ו- 'RUN npm install'. התקנת npm הפקודה מורידה את גרסת התלות המוזכרת בקובץ package.json.

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

כעת, כדי ליצור את תמונת Docker המבוססת על קובץ Docker זה, הפעל את הפקודה הבאה:

$ docker build - תמונה זוויתית.

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

הפעלת שירות נחיל Docker

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

שירות $ docker ליצור - שם 'Angular-App-Container' -p 4200: 4200-image זוויתי

כאן, משתמשים בדגל 'שם' בכדי לתת שם לשירות שלי ובדגל 'p' משתמשים לחשיפת יציאת המכולה לנמל המארח. בקובץ package.json, ציינתי את יציאת המכולה שעליה יש לארח את האפליקציה Angular. וה 4200 בפקודה זו עוזר למפות את יציאת 4200 של המכולה ליציאת 4200 של מארח. 'זוויתית-תמונה' היא שם התמונה שבניתי קודם.

זכור : כאשר אנו יוצרים שירות, ניתן לארח אותו בכל מנוע העגינה באשכול. מנהל הנחיל יחליט היכן יתארח. אבל לא משנה באיזה צומת הוא מתארח, ניתן לגשת ליישום ב- localhost: 4200 מכל אחד מהצמתים המחוברים באשכול.

כיצד זה אפשרי? מכיוון שנחיל חושף באופן פנימי את מספרי היציאות להיות נגישים לכל צומת אחר באשכול. כלומר, נמל לא. 4200 על כל צומת / מנהל באשכול יעבד את היישום Angular.

עכשיו מה? האם המכולה פעילה?

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

שירות $ docker ls

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

הנה, 'REPLICAS = 1/1' מציין שיש 'שירות' אחד של אותו מיכל, באשכול. ו- 'MODE = משוכפל' מציין שהשירות משוכפל בכל הצמתים באשכול.

כעת, כדי לזהות באיזה הצומת / מנהל, האפליקציה מתארח, אנו יכולים להריץ את הפקודה ps ps docker ואחריו שם המכולה. הפקודה היא:

שירות $ docker ps Angular-App-Container

צילום המסך עבור אותו מופיע בהמשך.

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

הפקודה 'docker ps' מטילה אור על הפרטים אודות המכולה הפעילה. הפקודה היא:

$ docker ps

עיין בצילום המסך שלמטה לצורך התייחסות.

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

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

צומת $ docker ls

כדי לבדוק את המכולות הפועלות במארח מסוים, הפעל את הפקודה ps ps. הפיקוד הוא:

$ docker node ps

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

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

הפקודה לכך היא:

שירות $ docker rm Angular-App-Container

הפקודה לסובב את המיכל במצב גלובלי היא:

יישום תור עדיפות ב- Java
שירות $ docker ליצור - שם 'Angular-App-Container' -p 4200: 4200 - מצב זוויתי גלובלי למצב

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

כאשר הפקודה ps של שירות העגינה מבוצעת, תראה משהו כזה:

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

כדי שיהיו 2 העתקים של השירותים שפועלים בין שלושת המכולות, נוכל להשתמש בדגל העתקים. עיין בפקודה למטה:

שירות $ docker ליצור - שם 'מיכל אפליקציות זוויתי' -p 4200: 4200 - replicas = 2 זוויתית-תמונה

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

מצומת העובדים תוכלו לאמת שהמיכל פועל על ידי ביצוע הפקודה 'docker ps'.

נחיל דוקר לזמינות גבוהה

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

$ docker עצור Angular-App-Container

הפעל את הפקודה שלמעלה בצומת: פועל -1 שבו המכולה פועלת.מהמנהל, הפעל את הפקודה:

שירות $ docker ps Angular-App-Container

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

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

זמינות גבוהה לאחר הגדלת השירותים

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

אבל אם נחזור לנקודה שלנו, בואו נראה כמה קל להגדיל את מספר השירותים באשכול שלנו. בהנחה שיש לנו 2 או 3 עותקים משוכפלים באשכול שלנו, הבה נרחיב את השירותים ל -5 על ידי הפעלת פקודה אחת בלבד. הפקודה היא:

קנה מידה של שירות $ docker Angular-App-Container = 5

צילום המסך של זה מופיע למטה.

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

שירות $ docker ls $ docker שירות ps Angular-App-Container

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

עדכון צומת $ docker - מנהל זרימת זמינות -1

באפשרותך לאמת אם המנהל לוקח כעת חלק באשכול על ידי הפעלת הפקודה של רשימת צומת העגינה ואת פקודת ה- ps של שירות העגינה:

$ docker node ls $ docker service ps Angular-App-Container

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

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

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

נחיל דוקר לזמינות גבוהה הדרכת דוקר | מדריך DevOps

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

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות ונחזור אליך.