3363258787 ניהול, תחזוק ופריסה של מאות אלפי Containers בעזרת Apache Mesos | גיקטיים

סוכן חכם
אישי ודיסקרטי

לוח משרות ההיי-טק
והטכנולוגיה של ישראל.

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

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

ניהול, תחזוק ופריסה של מאות אלפי Containers בעזרת Apache Mesos

Mesos מאפשר לנו לפרוס אפליקציות ו-Containers (בין אם מדובר ב-Docker או לא) לתוך ה-Cluster שלנו, ומאפשר לנו להקצות משאבים לכל אפליקציה

introduction-to-apache-mesos

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

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

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

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

השימוש ב-Containers וב-Docker בפרט הופך לנפוץ יותר ויותר בזכות היכולת להריץ מאות ואלפים מהם על גבי מכונה אחת תוך כדי שימוש משותף ב-Kernel של ה-Host OS. דבר זה תורם לניצול משאבים חופשי יותר ועליה מהירה מאוד של Containers לעומת VM (שניות לעומת דקות).

מבחינה טכנולוגית, Containers מתאפשרים בזכות שימוש ב-cgroups ב-Linux, פיצ'ר ב-Linux Kernel שמאפשר להגדיר ולבודד משאבים כגון דיסק, זיכרון וכו' לתוך תהליכים נפרדים. אז בנינו את הפרוייקט שלנו, ויש לנו כעת 50 Microservices שמדברים עם 10 בסיסי נתונים כולל Cluster של Hadoop שמבצע פעולות Batch על נתונים.

כל כך הרבה שירותים

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

לכאן בדיוק נכנס Mesos לתמונה, בתור פרוייקט Open Source של Apache שמאפשר לנו לנהל Datacenter שלם כאילו היה מכונה אחת. Mesos נמצא בשימוש נרחב במגוון חברות כולל PayPal, Twitter, AirBNB, eBay, Cisco, Uber ורבות אחרות.

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

Marathon: תשתית PaaS להרצת Containers שאורך חייהם קבוע.
Chronos: תשתית PaaS שדומה ל-Cron המאפשרת תזמון של Container Workloads.

ל-Mesos כמה מתחרים, בהם Omega של Google, אך מה ששונה ב-Mesos היא דרך הפעולה להקצאת משאבים הקרויה two-level scheduling. שיטה זו עובדת הפוך ממרבית ה-Cluster managers בהם ה-Frameworks מבקשים מתשתית הניהול הכללית משאבים ברגע שאפליקציה חדשה מותקנת וצריכה לעלות.

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

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

מכיוון שהצעה של התשתית לאפליקציה מוגבלת בזמן, דבר זה מעודד את ה-Frameworks השונים לקבל החלטות מהירות ותורמות לביצועים וכמו כן מונעות קונפליקטים כאשר האפליקציה נפרסת לשרת אחד או יותר. ל-Mesos כמו גם ל-Frameworks השונים שרצים עליו UI שייחודי להן וכמובן RESTful API וגם CLI לשליטה מלאה בכל חלק בתשתית.

Mesos בנוי משני חלקים עיקריים: Masters ו-Agents.

ה-Master הינו המכונה שמריצה את ה-Frameworks השונים כדוגמת Swarm, Marathon, Auroria וכו', וה-Agent הינן ה Workers שמריצים את האפליקציות. ה-Frameworks השונים נותנים לנו להחליט כמה Instances אנחנו רוצים לכל אפליקציה, והתשתית דואגת לפזר אותם בצורה הנכונה ביותר ב-Cluster.

ל-Mesos תמיכה מובנית ב-Docker, וניתן בקלות לקנפג Continuous build ממערכות כגון Jenkins ישירות לתוך Mesos, כך שצ'ק אין חדש של מפתח יכול לגרום ל-Jenkins לפרוס גירסא חדשה של Docker Image על גבי Marathon או כל Framework אחר, באמצעות ה-API של התשתית הנבחרת.
ישנם שירותים נלווים כדוגמת marathon-lb, Mesos-DNS ואחרים המציעים יכולות של Service Discovery ו-Load balancing בין האפליקציות השונות שרצות ב-Cluster. לדוגמא, על מנת לחשוף את השירותים שלנו לעולם החיצון, נוכל להקים HAProxy בעזרת סקריפט פשוט שיאפשר לנו Load balancing בסיסי, או להשתמש ב-marathon-lb ולקבל יכולות מתקדמות יותר כגון SSL offloading ועוד, ואנו יכולים גם לפרוס NGINX בסיסי בעזרת Docker שינתב חלק מהשירותים.

לדבר זה חשיבות רבה עבור ארגונים שמציעים פתרונות Hybrid, שכן בעזרת Mesos ניתן להריץ ולנהל את ה-Datacenter שלכם ב-On-premise בדיוק כמו שאתם מנהלים בעזרתו Cluster של מכונות בענן.

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

הכתבה בחסות Microsoft Azure

ב-Microsoft Azure אנו מציעים את ה-Azure Container Service הבנוי על עבודה משותפת ומאומצת של Microsoft וחברת Mesosphere ומטרתו לספק פריסה וניהול נוח של Mesos וכמו כן Autoscale עבור ה-Agents. פתרון זה מצטרף למגוון הפתרונות בעולם ה-OSS הקיימים כיום בפלטפורמת Azure.

כתב אורח

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

הגב

Be the First to Comment!

avatar
wpDiscuz

תגיות לכתבה: