להתחיל עם Openstack ברגל ימין

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

 

לחצו להגדלה

לחצו להגדלה

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

האינפוגרפיקה המופיעה בראש העמוד התפרסמה באוקטובר 2012 לקראת יציאת הגירסה ה-6 של OpenStack ומעידה על היקף “האימוץ” (adoption) בעיקר במישור המסחרי, מה שמסביר גם את המיצוב של OpenStack כפרויקט הקוד-פתוח המוביל בעולם, לפחות לטענת בעלי העניין.

בדף הבית של ה-OpenStack Foundation מתפרסמים נתונים עדכניים שמצביעים על המשך מגמה זו, כך למשל מס’ החברים נכון לכתיבת שורות אלה (סוף יוני 2013) עומד כבר על כ-10,000 (לעומת 5,600 כפי שמופיע באינפוגרפיקה).

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

שנייה לפני שמתחילים

הרבה פעמים שמעתי את ההגדרה הבאה: “OpenStack is an open source cloud operating system”. לטעמי יש בה לא מעט הגזמה. האמת הפשוטה והלא-מפחידה היא כזו: OpenStack הוא סט של סקריפטים בפיתון. הקוד הזה הוא הדבק (glue) שבין אבני הבניין של מרבית פרוייקטי הענן (OpenStack ואחרים, קוד פתוח וגם לא). אבני הבניין האלה הן עצמן פרוייקטי קוד פתוח, בעיקר בתחום הוירטואליזציה, קרי: משאבי עיבוד, איחסון ורשת. כל זה רץ על לינוקס, כששתי ההפצות העיקריות בשימוש הן Ubuntu ו-RedHat (ונגזרותיה החינמיות Fedora, CentOS).

לפני כשנה וחצי OpenStack היה בגירסה ה-4 שנקראה Diablo (הגירסה הנוכחית היא מס’ 7, נקראת Grizzly. שמות הגירסאות הולכים לפי סדר הא”ב וניתנים על שם ערים או מחוזות בסמוך למקום בו נערכה ועידת המפתחים של אותה גירסה). אז עשיתי את הבחירה ב-OpenStack והתחלתי לגשש. היה ברור שכדי להכיר את הדבר צריך התקנה קטנה עליה אוכל להתאמן.

Diablo ostk setup2servers

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

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

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

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

התוצאה של התיסכול הזה היתה בלוג שכתבתי על איך להתקין OpenStack Essex. ההדים והתגובות העידו יותר מכל על צורך במקור אמין כדי להתחיל איתו. בחדשים שלאחר מכן המשכתי עבודה על שיפור הקוד כך שעם יציאת Folsom היתה לי כבר גירסה עובדת של התקנת All-in-one ובגירסה הנוכחית זה כבר עובד עם שני שרתים ויותר.

לחצו להגדלה

לחצו להגדלה

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

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

סקירת שלבי ההתקנה מגובה רב

ההתקנה דורשת לפטופ וקוד שנמצא כ-GitHub (שם גם נמצא את ההוראות בפירוט הנדרש).

מכיוון שהענן הקטן שלנו רץ בתוך VirtualBox לא משנה באיזה מערכת הפעלה נשתמש (לינוקס, מק או חלונות), מה שכן צריך זה לפחות 4GB זיכרון ותמיכה של ה–BIOS ב-VT.

לחצו להגדלה

לחצו להגדלה

על הלפטופ נתקין VirtualBox ונגדיר שני ממשקי רשת מסוג Host-only Networks

נייצר מכונה וירטואלית (מסומנת Guest#1) עליה נתקין Ubuntu 12.04 server, לחילופין ניתן להוריד מ-dropbox מכונה שהכנתי כבר עם קונפיגורצית רשת מתאימה ולעשות לה Import.

למכונה שיצרנו נגדיר 3 ממשקי רשת כפי שמופיע בציור, לפני התנעתה.

אחרי שהרמנו את Guest#1 נבצע לוגין (ב-ssh), נוריד את קוד ההתקנה, נריץ אותו כ-root, וזהו.

בסיום ההרצה יופיעו על המסך מספר הצעות להפעלות פשוטות, ביניהן הסבר על יצירת אינסטנס[ים] (אלה שבציור לא נוצרים במהלך ההתקנה).

מה שקיבלנו זה “ענן כיס” שרץ כולו על הלפטופ (all-in-one), בגירסת Grizzly מה – CloudArchive של אובונטו ובמפרט של nova-network, flatDHCP, single-host.

בסיום ההתקנה נוכל לפתוח דפדפן אל הממשק הוובי של OpenStack, ליצור מכונה וירטואלית ולהתחבר אליה (אפשר או ב-ssh login או ב vnc).

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

הביצועים אגב מספקים בהחלט: על לפטופ צנוע הזמן ל-boot של האינסטנס הראשון הוא כ-10 שניות. בהתקנה זהה על שרת עם 2 מעבדי Xeon וזיכרון של 96GB מדדתי כ-1.5 שניות.

לחצו להגדלה

לחצו להגדלה

בחירות – All-in-One

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

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

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

בחירות – רשת

ציינתי כבר שההתקנה מייצרת לנו ענן במפרט של nova-network, flatDHCP, single-host. מושגים אלה מתייחסים לחלק הכי בעייתי בכל התקנה: רשת, רשת וירטואלית והחיבור שביניהן.

רכיב nova-network (המופיע בדיארגרמת הארכיטקטורה למעלה) אחראי לוירטואליזציה של הרשת. הוא מגדיר ארבעה סוגי רשת (לסוגים שונים של תעבורה) ו-3 סוגים של “מנהל רשת” (לתעבורה בין האינסטנסים).

סוגי הרשתות מוגדרים בפרק “Compute Network Planning” למשל כאן. בהתקנה שלנו יש שימוש בממשקים הבאים:

  •  vboxnet1 משמש רק לתעבורה בין האינסנסים, וזה ה-VM Network = Private Network.
  •  vboxnet0 משמש לתעבורת כל היתר קרי Public, Floating IP and Management.
  •  NAT לא נמצא בשימוש ישיר של OpenStack, הוא משמש את מערכת ההפעלה.

סוגי “מנהל הרשת” מוסברים בפרק “Networking Options” למשל כאן.
הסוג הראשון (Flat Network Manager) לא בשימוש.
הסוג השלישי מחייב מתג שתומך ב-VLAN כדי לאפשר מה שנקרא multi-tenancy. אנחנו לא צריכים את זה כאן ועכשיו.
הסוג השני, FlatDHCP Network Manager הוא זה שמתאים להתקנות מסוג “ענן פרטי”

הסעיף האחרון במפרט, single-host, לא בא לידי ביטוי בהתקנה מסוג All-in-One אלא רק כאשר יש שני שרתים או יותר. פרמטר זה מגדיר יתירות (redundancy) של הקלסטר.

הערה: הלינקים לעיל מצביעים לתיעוד של Essex וזו לא טעות: ב-Folsom נכנס לראשונה רכיב בשם Quantum לניהול הרשת ב-OpenStack (ובינתיים שם הקוד הוחלף ל-Neutron).

הסיבה לשימוש ב-nova-network היא פשטות ומכיוון שההתקנה מודולרית, ניתן להחליף רכיב זה ב-Neutron.
לסיום אוסיף שבעתיד הנראה לעין nova-network ימשיך להיות זמין ב-OpenStack כדי לאפשר מימושים פשוטים.

בחירות – QEMU

הרכיב המרכזי ב-OpenStack הוא nova (נקרא גם OpenStack Compute) והוא זה שאחראי על משאבי העיבוד: ברוב המכריע של המקרים אנחנו מדברים על וירטואליזציה אבל לאחרונה נכנסה גם האפשרות לספק מכונות פיזיות (ואז זה נמצא בקטלוג, ההקמה וה-provisioning נעשות כמו VM)

את השליטה במשאבים nova לא עושה ישירות אלא באמצעות סוכנים, ואחד מהם הוא ה-hypervisor.
בהתקנה שלנו אין לנו הרבה ברירות, משום שלא KVM ולא Xen יסכימו להתארח בתוך VirtualBox, שכן האחרון הוא היפרויזור בעצמו. ההיפרויזור היחיד שיכול לרוץ בתוך היפרויזור אחר הוא QEMU.

מכיוון ש-KVM משתמש בכל הכלים של QEMU, ההחלפה ביניהם היא עניין פשוט של הצבה אחת בקובץ הפרמטרים של ההתקנה.

בחירות – רכיבי OpenStack

הרכיבים המרכזיים שיותקנו הם:
Nova
Glance
Keystone
Cinder
Horizon
ההתקנה לא כוללת את Swift – Object Store בכוונה משום התוספת המאוד משמעותית לסיבוך.

מודולריות

על בסיס ההתקנה הזו ניתן להוסיף, הן רכיבים של OpenStack (דוגמת swift) והן “שרתים”, הקוד מכיל את הנדרש למימוש קונפיגורצית OpenStack של שני שרתים או יותר, CloudContoller ו-Compute nodes. אותו קוד רץ על חומרה פיזית, מה שמאשפר שפע של ניסויים, למשל החלפת ה-hypervisor ב-Xen או VMware.

תרומות

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

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

מעשרות

QEMU הוא פרויקט קוד פתוח של איש אחד, בחור מבריק באופן יוצא דופן מצרפת בשם פבריס בלר (Fabrice Bellard), שעשה דברים רבים ומופלאים, בין היתר גם את FFmpeg. ואם בנתינת כבוד עסקינן אז מגיע גם לחבר’ה של קומרנט (ישראל) שפיתחו את KVM. תודה לקוין ג’קסון על המימוש הראשון על virtualBox ותודה ליוג’ין קיריפישב על מאמריו מאירי העיניים.

הכתבה בחסות Tikal Knowledge

טיקל היא חברת תוכנה הפועלת מעל 12 שנים ומסייעת לחברות פורצות דרך להגיע למצוינות בתחומן. אנו מחויבים לשיפור מתמיד של השירותים שלנו ולמענה מקצועי ואיכותי ללקוחותינו. המומחים של טיקל מנוסים בפיתוח של מגוון מערכות תוכנה, שימוש במגוון כלים וטכנולוגיות בתחומי ה- Java, Python, .NET, Javascript, RoR, Mobile, ALM. לטיקל 3 ערכי ליבה:
קוד הפתוח
גישת הקוד הפתוח שלנו מאפשרת ללקוחותינו פיתוח מהיר והתאמה אישית תוך ביטול התלות בספק אחד, טכנולוגיות מתקדמות ועדכניות, נגישות למידע, תמיכה שוטפת, הוצאות נמוכות.
חדשנות
אנו לא יועצים תאורטיים, אלא מומחים בעלי ידע מעשי וניסיון רב. אנו מנהלים שגרת העשרה ולמידה כדי להחדש ולעדכן את מאגר הידע שלנו. לומדים ומכירים מקרוב כל פיתוח חדש ונמצאים באופן תמידי בחזית המרוץ הטכנולוגי.
אחריות
העקרון המנחה את העבודה שלנו הוא איזון בין אחריות מקצועית וסגירת פערים טכנולוגיים, בין אחריות לתוצאות והשגת יעדים.


לפרטים נוספים והרשמה לסדנאות הפיתוח

Avatar

Tikal

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

הגב

3 תגובות על "להתחיל עם Openstack ברגל ימין"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
רומן
Guest

מה היתרונות שלו לעומת אמאזון?
גם שם יש אפשרות לענן פרטי (VPC)

אורי צורן
Guest

@Hetz: התלבטתי אם להכניס פסקה על החלופות, כמו Packstack, Fuel, Alamo וכן הלאה, כולם טובים ובעלי ייחוס אבות. אלא שאני חושב שכדי להתחיל ברגל ימין אתה צריך להתלכלך קצת בבוץ, כי אם תתן ל-Puppet לעשות לך את העבודה זה סבבה – כל עוד זה עובד מהתחלה ועד הסוף, יחד עם זאת אין לך מושג ירוק איך לתקן אם זה נכשל (ולמען השוויון בין המינים, כנ”ל לגבי Chef)
@Aviyam: העורך הלשוני בסדר גמור, כל האחריות הספסלית עלי.

Oded
Guest

worth taking a look at another open source pr
oject called CloudStack, simpler and yet very robust

wpDiscuz

תגיות לכתבה: