פיצוח האניגמה שנקראת אמזון EBS

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

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

בעסקי ה-Hosting, בניגוד למצבים שחברות צריכות להתמודד, הדברים שונים. חברה רוכשת לדוגמא שרתים ו-Storage מתוך ידיעה שיש צורך בציודים וההשקעה מחזירה את עצמה בכל מיני דרכים, בחסכונות פה ושם, קונסולידציית שרתים, איחוד ציודים ועוד. ב-Hosting לעומת זאת, הדברים שונים לחלוטין. אתה לא יכול לרכוש פתרון של Netapp או EMC ולצפות שהלקוחות ישלמו לך כמה דולרים פר ג’יגהבייט, כי אף אחד לא ישלם לך את המחיר הזה, וגם חברות גדולות כמו Softlayer לומדות את הלקח הזה על בשרן (הם הכניסו SAN גדול, הלקוחות לא קופצים על זה, כך לפחות נאמר לי ע”י אחד המנהלים הישראליים שם).

לאמזון יש דבר שנקרא EBS, זהו פתרון Storage אשר מתחבר לך לשרתים שלך שאתה שוכר באמזון (EC2) וכך אם נהרסת לך המכונה, הנתונים נשמרים. הפתרון כמובן חיוני אם אתה מפעיל מספר שרתים בתצורות כמו Load Balancing ועוד.

המחיר שאמזון מוכרת את שרותי ה-EBS גרם לאנשים רבים (כולל עבדכם הנאמן) לגרד בפדחתם ולנסות להבין איך הם מצליחים לתת שרות כזה ולמכור אותו במחיר רצפה של 10 סנט לג’יגהבייט!

רבים שאלו את אמזון מה המערכת שעומדת מאחורי ה-EBS מבחינת מפרט ברזלים, תוכנות וכו’, ועד היום, אמזון לא מגלה מאומה. על שאר השרותים כמו EC2, או S3 והשאר, כולם יודעים איך להקים דברים כאלו, אבל EBS… אניגמה.

ידוע לנו שהמחיר הוא 10 סנט, מה שמביא לתובנות הבאות:

  • אין דיסקים SAS – לא חשוב כמה אמזון תהיה הדארלינג של יצרני הדיסקים הקשיחים, אם זה היה דיסקים עם חיבור SAS ומהירות גבוהה (10000 או 15000 RPM) המחירים היו טסים למינימום 1-2 דולר לג’יגהבייט.
  • אין בקרי RAID משוכללים, כי הבקרים הללו לא זולים. סביר להניח שיש על לוח האם חיבור SAS עם מפצלים ל-SATA. סביר להניח שמוגדר RAID-5 או RAID-1 (על כל דיסק, דיסק נוסף משמש כ-Mirror). צריך לזכור: השרתים הללו לא מריצים שום וירטואליזציה או דברים כבדים אחרים.
  • הדיסקים הם דיסקים “ביתיים”, הווה אומר דיסקים SATA גדולים במהירות 7200 RPM או פחות מכך.

איך עושים עם המצב הזה שרידות? לא ב-RAID, אלא עם RAIN. בשיטה עם RAIN, הדברים משוכפלים ברמה של שרתים פשוטים, כך ששרת A עושה רפליקציה מול שרת B כל הזמן, וכך אם יש נפילה של שרת A או B, המערכת תעבור אוטומטית למערכת ה”בריאה” ותדאג שתהיה עוד רפליקציה מול שרת אחר (במקומות גדולים בד”כ יש מספר עותקים של אותו חומר).

מכאן נעבור לרשת של EBS.

EBS בעקרון אינו דבר מהיר כל כך. כל פתרון SAN חומרתי עוקף כל EBS בקלילות מכיוון ש-EBS נותן בתיאוריה מהירות מקסימלית של 1 ג’יגהביט (128 מגהבייט) לשניה. המהירות כמובן צונחת אם גם השכן שלך מחליט להשתמש ב-EBS שנמצא על אותו שרת פיזי (אפשר לקרוא בהרחבה על כך כאן).

השאלה היא מהו החיבור בין שרתי ה-EBS לשרתי ה-EC2. אני מניח שמדובר בחיבורי Ethernet של 10 ג’יגהביט פר שרת עם CAT 6A וסוויצ’ים שכל פורט מגיע עד 10 ג’יגהביט, אבל הבעיה בהנחה הזו שהמחיר הוא מאוד גבוה. סוויצ’ שיכול להעביר 240 ג’יגהביט (24 חיבורים של 10 ג’יגהביט כל אחד) הוא מאוד מאוד יקר, גם אם הוא יהיה בהוזלה משמעותית עבור אמזון, מה שמייקר מאוד את פתרון ה-EBS, כך שאני לא בטוח אם זה הפתרון שהם משתמשים. פתרון אחר הוא Bonding של מספר יציאות 1 ג’יגהביט מהשרת (כמו עם כרטיסי 4 פורטים) מה שנותן בתיאוריה רוחב פס של 4 ג’יגהביט, אבל גם זה לא נראה לי שהפתרון נכון.

מהרשת נעבור לבעיה הכי מהותית: איזו תוכנה יודעת לבצע RAIN אך גם לייצא לך החוצה Block Devices כך שתוכל להקים דיסקים של EBS? מי שמכיר את אקליפטוס (Eucalyptus) ויסתכל על הפתרון שלהם, השיטה שלהם היא שימוש ב-iSCSI הרגיל שקיים בלינוקס (או אם תחבר SAN, תצטרך להשתמש בפתרון iSCSI מתוך קופסת ה-SAN שלך עם הכלי של יצרן ה-SAN). יש פתרון Cluster של Red Hat שאפשר לראות אותו כאן, אך אני בספק אם זהו פתרון שיכול להתאים.

מה דעתכם? אם אתם הייתם צריכים להקים משהו כמו EBS עם ערימת שרתים בלי SAN ולתת throughput של 1 ג’יגה, מה אתם הייתם מכניסים? איזה כלים הייתם משתמשים?

Comments

comments

8 תגובות בנושא “פיצוח האניגמה שנקראת אמזון EBS

  1. DRBD יכול ליצא block device וגם לבצע replication (עם LVM או בלעדיו, זה המהות שלו). ניתן לבצע רפליקציה משורשרת (לא נתמך ותופס יותר נפח בכל שרשור, אבל עובד). יש שלוב עם heartbeat, כך שיש אפשרות ל-failover אוטומטי (לא ניסיתי, אבל אחרים עובדים עם זה).

    • על DRBD חשבתי ממזמן, אך יש איתו כמה בעיות בנוגע לפרוייקט כזה:
      * הוא בנוי לקונפיגורציית Master/Slave, לא הרבה מעבר לכך.
      * אם אני רוצה לתמוך ב-Snapshots, זה בעייתי ומצריך חתיכת Hack מגעיל (תראה כאן: http://goo.gl/CoMFa)
      * התמיכה שלו ב-LVM היא בעייתית: רוצה LVM? צור את זה בכל ה-Nodes ידנית, אותו זה לא מעניין ממש, הוא מתייחס לכך כ-Partition.
      * אם אני רוצה לייצא דיסקים החוצה כ-iSCSI כך שכלקוח תצטרך רק לעשות mount ולגמור עניין, זה לא עובד מי יודע מה, לפחות לפי הפוסט הזה: http://goo.gl/fxOiI

      בקיצור, אני מחפש איזה משהו קצת יותר מודרני שאני יכול לאמר לו: שרת A,B,C,D,E,F אלו שרתי Storage, תן לי שלישיה מהם שייצאו לי החוצה iSCSI עם LVM ותמיכת Snapshots. אני בטוח שאני לא היחיד שנתקלתי בסיטואציה כזו.

      • אז למה לא להריץ לינוקס על שרתים A,B,C,D,E,F וליצא את הדיסקים המקומיים שלהם באמצעות iSCSI .
        לחבר את שרתי ה host אל שרתי ה- storage ב 1Gb ethernet . בצד ה- host לשים SW RAID1 באמצעות LVM.
        עבור snapshot אתה גם יכול להשתמש ב- LVM snapshot.

        אם אתה רוצה שרידות גבוהה גם עבור הרשת תחבר את השרתים דרך שני סוויטצ'ים שונים ותריץ multipath ומעליו LVM.
        את ה logical volumes שתיצור מעל ה LVM תחשוף ל VMs המתארחים.

        באמצעות כתיבת כמה סקריפטים פשוטים אתה אפילו יכול לעשות אוטמציה כך שבפקודה אחת יווצר לך ה logical device שאותו אתה רוצה לחשוף ל-VM.

  2. הימור שלי ההוא שהם לא משתמשים ב-Ethernet אלא ב-Infiniband.
    40-56Gbps לכל פורט.

    • בקשר להימור שלך:
      1. מחירי ה-Infiniband עוד יותר גבוהים מציוד 10GB מבוסס Ethernet
      2. כל השיטה של Infiniband היא די גרועה להעברת TCP/IP. אפשר כמובן להשתמש בפרוטוקולים אחרים, אבל אז אתה צריך להוסיף שכבת המרה מה שגם מייקר וגם מוריד ביצועים.

  3. 1. אני לא יודע מאיפה המקורות שלך לגבי המחיר של Infiniband לעומת Ethernet, אני יודע שלכל הפחות המחיר זהה עבור Infiniband NIC ו-Ethernet NIC.
    2. לגבי TCP/IP אתה צודק. אבל עבור חברה גדולה כמו Amazon, השקעה חד פעמית (ולא גדולה בתשתיתות תוכנה) יכולות להשתלם. תסכים איתי שקל הרבה יותר לתחזק תוכנה מאשר חומרה. בנוסף יש סיכוי מאוד סביר שהם עושים שימוש ב-Infiniband גם עבור מוצרי Cloud אחרים שלהם, כך שאולי הם קיבלו את זה "בחינם".

סגור לתגובות.