המעבר מ-Digital Ocean לאמזון Lightsail

בלוג זה התארח עד היום בבוקר אצל Digital Ocean וכלקוח שלהם, אני יכול לאמר שהם אחד הספקים שמעולם לא אכזבו אותי. שרתים יציבים, אפס תקלות חומרה, והמערכת עובדת כמו שעון שוויצרי, ובקיצור איך אומרים אנשי לינוקס רבים: ה-Uptime חוגג 🙂

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

אם יש משהו אחד שאני ממש לא אוהב, זה הפתעות בחשבוניות, אז החלטתי להישאר ב-Digital Ocean. המחיר קבוע, זה עובד, אין הפתעות.

אמזון לאחרונה הכריזה על שרות LightSail שמתחרה בדיוק ב-Digital Ocean, Linode וספקי VPS רבים אחרים. היתרון בחבילה זו: המחיר קבוע, גודל המכונה קבועה (מבחינת ליבות, זכרון וגודל דיסק SSD מקומי) ויש לך כמה טרהבייט תעבורה החוצה כלולים במחיר. מכיוון שקיבלתי לאחרונה כמה דולרים בקרדיטים, החלטתי היום להעביר את הכל מהמכונה ב-Digital Ocean למכונה חדשה באמזון LightSail. המכונה הישנה רצה על אובונטו 15, החדשה על 16 וחשבתי שזה לא יהיה מורכב: rsync להעברת קובץ tar (של האתרים עצמם), קובץ dump של ה-SQL, סקריפטים והגדרות שונות – ונגמור עניין. לא אמור להיות מסובך.

מסובך זה לא היה, אבל תקלות – היו גם היו. הנה רשימה חלקית:

  1. האזור היחיד שאפשר להקים בו כרגע מכונה ב-Lightsail – זה אזור צפון וירג'יניה, שום מקום אחר. תרגום: תתכוננו לעוד 150 מילישניות Latency (אלא אתם משתמשים ב-CDN והקבצים הראשונים הם HTML/CSS).
  2. החלטתי לעשות dump ל-mysql כולו, כלומר all-databases ולהרים אותו על MariaDB החדש במכונה באמזון. הפקודה עברה בשלום, אבל restart ל-mysql הוציא הודעה על unix_socket plugin – לא נטען. מי שמקבל את התקלה הזו – יש פתרון כאן. מה שהפתרון לא מזכיר, זה שיש להקים לאחר עצירת ה-mysql תיקיה בשם /var/run/mysql/ כאשר לתיקיית mysql ההרשאות הן mysql:root אחרת לא תצליחו להפעיל את ה-MySQL כי הוא לא יכול לכתוב קובץ PID וההפעלה תיכשל.
  3. אם אתם משתמשים ב-Wordpress, תשמחו לדעת שהוא עובד מעולה עם PHP-7, ומאוד מומלץ לעבוד עם ה-FPM של PHP-7. ההבדל בין גירסה 5.6 של PHP לבין גירסה 7 – מהירות כפולה בלי לשנות אפילו שורת PHP אחת.
  4. המכונה שתקימו ב-LightSail לא תראו אותה ב-Instances או ב-VPC שלכם. אם אתם רוצים להשתמש בשרותים האחרים של אמזון דרך כתובות פנימיות, תצטרכו להפעיל שרות VPC Peering וכאן זה תלוי מתי נרשמתם לאמזון. במקרה שלי, מכיוון שאני רשום ל-AWS בערך מ-2009 אז כל נסיון VPC Peering נכשל, ויש לפתוח קריאה לתמיכה שיסדרו מהצד שלהם את הבעיה מהצד שלהם.
  5. מבחינת בניית חוקים ל-Security Groups/חומת אש – יש באג ב-LightSail: יש לך רשימת שרותים מאוד מצומצמת ש-Lightsail מכיר. רוצה להוסיף דברים כמו ICMP, SMTPS ודברים אחרים? אתה יכול לבחור Custom ולציין את מספר הפורט ואז … החוקים שיכתבו זה פתיחה של כל הפורטים. כרגע, מכיוון שאינך יכול לראות את מכונות ה-Lightsail בתוך VPC כלשהו, אינך יכול להגדיר Security Groups לאותו VPC ומכיוון שאינך רואה את ה-Instance בשום מקום (זולת האתר של LightSail) אינך יכול להגדיר גם שם את ה-Security Group למכונה שיצרת ב-LightSail. בקיצור – רוצה פורטים פתוחים/סגורים? תעשה זאת מתוך ה-VM.
  6. מבחינת השוואת מעבדים בין מה ש-Digital Ocean נתנו לי (המכונה שלי הראשית ששירתה את הבלוגים הוקמה שם לפני 4 שנים) המעבד היה XEON E5 דגם L (כלומר מהירות שעון נמוכה יותר – 1.8 ג'יגהרץ, וכמות ה-Cache היתה כמחצית ממה שיש ב-E5 ממוצע). באמזון דגם ה-E5 היה יותר חדש עם Cache מלא.
  7. מבחינת הפצות לינוקס – אינך יכול להקים מכונות מה-Market או מ-AMI שאתה בנית בעבר. יש לך רק מה שאמזון בנו שזה אמזון לינוקס (תואם CentOS בערך…), ואובונטו 16. לבחירתך ההפצות הללו כ"ערומות" או כהפצות + תוכנות קוד פתוח מוכנות, אבל שום דבר מעבר לזה. תשכחו מרשתות מורכבות וכו'.

לסיכום, המחיר עבורי הוא פחות או יותר אותו מחיר (רק שהפעם יש לי קרדיטים אז אני מאמין שה-3-4 חודשים הקרובים העלות היא על אמזון) – שזה במקרה שלי 40$ על אותה מכונה לחודש (2 ליבות, 4 ג'יגה זכרון, 60 ג'יגה דיסק, 5 טרה תעבורה בחודש החוצה). יש ל-LightSail פה ושם עדיין "מחלות ילדות" (בכל הקשור ל-VPC Peering) אבל אם שיחקת בעבר עם AWS, אתה תצליח להסתדר.

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

קצת על IPXE

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

מבחינה טכנית – PXE הוא די פשוט: יש שרת TFTP שמגיש קבצים ב-UDP דרך פורט 69. אתה מקים שרת כזה, מוודא שיש שרת DHCP שיתן כתובות IP זמניות (או קבועות אם אתה נותן כתובות לפי MAC) למכונה שעושה BOOT PXE וכל מה שנשאר לך זה לוודא שתוכנת ה-PXE Client (יש כל מיני ללינוקס ו-Windows) יודע איך להעלות את המערכת שאתה רוצה להעלות.

הפתרון הזה הוא פתרון נחמד למעבדת מחשבים או למקום שצריך PXE פה ושם. אחרי הכל – תן לשרת TFTP להגיש קבצים ל-100 מכונות בו זמנית ותראה את השרות זוחל.

אני רוצה להכיר לכם את IPXE.

אם אנחנו מסתכלים היום על Data Center – בין אם ה-DC מורכב מחצי ארון עם 3 שרתים ועד לאולם שלם שמפוצץ שרתים – הדברים השתנו לחלוטין בעשור האחרון. שיטת העברת הקבצים הכי פופולרית היום היא HTTP, אנחנו יותר משתמשים ב-iSCSI וב-NFS, בחלק מהמקומות יש Infiniband, ועוד ועוד טכנולוגיות מודרניות, ובכלל – כיום כל VM יושב על iSCSI או על NFS והתקנה אוטומטית דרך פרוטוקולים אלו יכולה לסייע מאוד.

היחוד של IPXE הוא בכך שהוא לוקח את PXE המוכר ומקדם אותו לעידן של היום תוך מתן תמיכה טבעית ל-NFS ו-iSCSI והעברת קבצים עצמה יכולה להתבצע דרך HTTP (ולכולם יש כיום מערכות לנטר ולכוון תעבורת HTTP). מה עם שרת ה-TFTP? אותו עדיין נצטרך אך ורק להעביר קובץ יחיד (UNDIONLY.KPXE) ואולי עוד קובץ למערכות UEFI. את השאר אפשר להעביר בפרוטוקולים אחרים.

IPXE נותן לנו במכונה שעושה BOOT PXE גם אפשרויות של סקריפטים בשפה די פשוטה שיקח לכם זמן מאוד קצר ללמוד אותה. אפשר להכניס תנאים, לשרשר קבצי IPXE, וכמובן – יש תמיכה ל-NFS, iSCSI, Infiniband ופרוטוקולים אחרים. כך לדוגמא אם מרימים מערכת ESXi או לינוקס, אפשר להכניס פרמטרים להטענת kickstart להתקנה אוטומטית, להשתמש ב-WIM של Windows ועוד. צריכים מכונות דסקטופ ל-Windows? אתם יכולים לעקוב אחר ההוראות כאן לגבי פתרון שיכול להתאים לכם.

הנה לדוגמא מערכת שאני מקים אצלי ב-LAB בבית (מאז הוספתי עוד כמה שורות). לא משהו מורכב, אבל עם הסקריפט הסופר-פשוט שכתבתי – אני יכול להתקין מגוון מערכות הפעלה לכל VM חדש שאני יוצר מבלי לחפש כל פעם היכן ה-ISO. כל קבצי ההתקנה וסקריפט ה-IPXE יושבים אצלי על שרת NGINX (שרת Web) וסקריפט ה-IPXE פשוט מוריד את כל מה שהוא צריך בהתאם למערכת שבחרתי ולבסוף מריץ פקודת boot. משהו לא עבד? לחיצה על CTRL-B תתן לי "shell" נחמד שאיתו אני יכול לנסות את הפקודות ידנית או לראות את השגיאות לפרק זמן ארוך כדי לתקן אותם ולהפעיל את המערכת מחדש.

ipxe

מערכת נוספת שהכנסתי לתפריט היום (לא מופיע בתמונה) היא מערכת GParted שהיא מערכת לניהול Partitions. נניח שאני צריך לגבות Partitions מסויימים לפני שינוי והשרת עצמו הוא פיזי (ב-VM יש snapshots, במכונות פיזיות – זה קצת יותר מסובך). אני יכול להתקין תוכנת גיבוי ולעשות זאת ולקוות שהגיבוי הצליח, או שאני פשוט יכול למפות iSCSI Volume זמני דרך ה-iPXE, להפעיל את IPXE, לבחור את GParted ולגבות את ה-Partitions. אותו דבר אני יכול לעשות עם NFS ושאר טריקים לאחסון – כל זה מבלי להתקין שום תוכנה נוספת, לרכוש רשיונות וכו'.

הפתרון של IPXE הוא פתרון שמנצל את הכלים שלנו לשימוש מודרני ב-DC, הפתרונות שיש כיום להפצת קבצים יכולים יפה מאוד לעמוד בעומס של עשרות או מאות מכונות שרוצות PXE ועכשיו. בהמשך הדרך, כש-VDI יכנס יותר ויותר לתמונה, ה-Thin Client יוכל לקבל את המערכת שצריכה לרוץ עליו דרך PXE במקום לעדכן קושחות, לבצע טסטים על כל שינוי קטן וכו'.

לסיכום: גם אם יש לכם פתרון PXE, מומלץ להכיר יותר את IPXE. ה-IPXE נותן לנו פתרון שמשתמש בטכנולוגיות של היום ובדרך גם חוסך בכל מה שקשור לתחזוקה והתקנות של מחשבי דסקטופ, שרתים, מכונות VM ואחרים. לא חייבים לשנות כל 3 דקות את הגדרות ה-DHCP (יש ProxyDHCP ותמיכה לזה ל-IPXE) ובטווח הארוך זה חוסך הרבה עבודה. מנסיון.

קצת על פתרון אחסון חדש לציודים קטנים

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

עד לפני שנה פלוס, האחסון הפנימי שבטלפון/טאבלט/PC-במקל/PC מבוסס טאבלט היו מבוססים על ארכיטקטורת eMMC, זו אותה ארכיטקטורה ישנה שהיתה עוד בימי ה-Pocket PC ו-PALM (הצבעוניים). עם הזמן יצאו כמה גרסאות (גירסה 4 שלטה זמן בשוק ולפני בערך שנתיים וחצי יצאה גירסה 5, אתם יכולים להסתכל על ההבדלים מבחינת תכונות כאן). גם גירסה 5 של ה-eMMC לא בדיוק הציגה ביצועים מרשימים כל כך (בהשוואה אפילו ל-SSD ביתי!). כן, יכולות הכתיבה והקריאה היו די טובות למובייל, אבל כיום הדרישות הן ליותר: חברות מעוניינות לפתח תוכנות עריכה מתקדמות יותר, אנשים רוצים לעשות עריכות וידאו או תמונות, משהו קצת יותר מהבסיס –  לפני שהם משתפים את כל העולם ואחותו ויש עוד המון פונקציות שחברות פיתוח היו שמחות לפתח למובייל – אם יחידת האחסון היתה מגיבה קצת…יותר..מהר והיה אפשר לעשות יותר פעולות במקביל.

גם בתחום המיקרו SD חלו התפתחויות, אך ההתפתחויות הללו היו יותר שיפורים של פונקציות קיימות כמו כתיבה יותר מהירה וקריאה יותר מהירה עם תאימות אחורה ותמיכה לגדלים מעל 64 ג'יגהבייט (SDXC), אבל הבעיה העיקרית של כל פורמט המיקרו SD הן היכולות שלו – אתה יכול לכתוב בצורה רציפה או לקרוא בצורה רציפה (או למחוק וכו') אבל אתה לא יכול לעשות מספר דברים במקביל כמו קריאה וכתיבה ביחד. הפורמט של מיקרו SD לא מאפשר זאת ולכן אמצעי האחסון הזה הוא מוגבל מאוד ויותר משמש לאחסון מאשר לעריכת תמונה לדוגמא (העריכה תתבצע על ה-RAM והתוצאה תישמר על ה-eMMC/מיקרו SD ובמקרה של תוכנות מתקדמות – העריכה תתבצע על ה-eMMC והתוצאה תישמר על מיקרו SD).

sdומה לגבי האח הגדול של מיקרו SD, כרטיסי ה-SD? ובכן, מבחינת פונקציונאליות כרטיסים אלו זהים לאחיהם הקטן, אך מכיוון שהם גדולים יותר, החברות יצרו כרטיסים בעלי כמות אחסון כמו 512GB, דבר שעדיין לא ניתן לעשות כיום במיקרו SD. גם האמינות שלהם טובה יותר וכמובן – אם הם נופלים, קל לזהות אותם על הדשא, שטח וכו'.

ב-30 למרץ השנה פורום JEDEC הוציא סוף סוף הודעה על המפרט המיוחל שיחליף בהמשך את עניין כרטיסי המיקרו SD (ובהמשך את כרטיסי ה-SD), הלו הוא פורמט ה-UFS.

256GB-UFS_03

פורמט ה-UFS בא להחליף את כל מה שקשור לאחסון מבחינת מובייל/טאבלט וכו'. בפורמט זה "משאילים" את מה שיש לך ב-PC ומכווצים אותו לפורמט מובייל. כך לדוגמא, מהירות הקריאה היא כמו מהירות SSD בחיבור SATA (כלומר עד 550 מגהביט), מהירות כתיבה עד 95 מגהבייט לשניה, ו-IOPS של 40,000 וזאת בהשוואה ל-100 IOPS שאפשר להוציא ממיקרו SD.

UFS_02כפי שאתם יכולים לראות – פורמט ה-UFS הוא פורמט שאינו תואם לכרטיסי מיקרו SD. אינכם יכולים להשתמש בו בציודים נוכחיים, לא רק בגלל צורת הפלסטיק שמעט שונה, אלא גם בגלל כמות ומיקום הפנימים בתחתית הכרטיס. יקח כמובן זמן עד שהיצרנים יתמכו בפורמט זה אך לא זמן רב – כל החברות שמשתתפות בפורום JEDEC כבר התחייבו להוציא ציוד תואם וכך חברות כמו סמסונג, סוני, ניקון, קאנון, מוטורולה ואחרות עובדות בימים אלו על שילוב UFS במוצריהן. הראשונה שיצאה עם כרטיסים היא סמסונג, אך היצרנים האחרים גם יוציאו כרטיסים (בחבילה יכלל מתאם ל-PC) במהלך השנה הקרובה.

פורמט ה-UFS הוא הרבה יותר רחב מאשר כרטיסים אלו, הפורמט הוא גם לאחסון פנימי בטלפון וכו'. כך לדוגמא, אם יש לכם מכשירים כמו סמסונג Galaxy S6 ומעלה, האחסון הפנימי הוא מבוסס UFS, כך שהביצועים שם יותר גבוהים בהשוואה למכשירים אחרים מבחינת FILE I/O (אם כי עדיין אין תוכנות חיצוניות שמשתמשות בפונקציונאליות זו).

אז איפה UFS בעצם יסייע לנו? הנה מספר דוגמאות:

  • כל מי שרוכש מצלמת DSLR לקהל המקצועי-ביתי למיניהם מכיר את הבעיה – אתה יכול לצלם כמות של 15-20 תמונות ברצף ואחרי זה .. אתה צריך לחכות שהמידע יעבור מה-RAM לכרטיס. עם UFS אפשר יהיה "להשתולל" כי ה-UFS יכול לכתוב במהירות את התוכן לכרטיס.
  • כיום ניתן לצלם וידאו 4K בכל סלולרי מודרני מהשנה שנתיים האחרונות, אבל אם תנסו להשוות את איכות הוידאו שצילמתם בסלולרי לאיכות מצלמת וידאו טובה (לדוגמא: Sony PXW-Z150) יראה שההבדלים הם שמיים וארץ, וזה לא רק בגלל החיישן אלא יותר בגלל שהטלפון צריך לדחוס "באכזריות" את הוידאו כך שהוידאו מהסלולר בעיניים מקצועיות יראה די עלוב. עם UFS אפשר לשמור באיכות מאוד גבוהה את הוידאו ישירות לכרטיס וגם אפשר להקליט לפרקי זמן יותר ארוכים (רק שימו לב שהסוללה "תיאכל" בצילום כזה, הקלטות כאלו צורכות המון חשמל והטלפון מתחמם במהירות).
  • כל מקלות ה-PC הזולים (בסביבות ה- ~100$) מגיעים עם כמות מועטה של אחסון: 32 או 64 ג'יגהבייט והוספת כרטיס מיקרו SD כיום לא עוזרת הרבה. אפשר כמובן להתקין תוכנות על המיקרו SD אבל הביצועים יהיו מחפירים. עם UFS לעומת זאת, אפשר יהיה לוותר על התקנת מערכת ההפעלה שהיצרן התקין ולהעביר/להתקין אותה ישירות על כרטיס UFS יחד עם האפליקציות שלכם. הביצועים יהיו כמו SSD ביתי פשוט (לא כמו Samsung 950 Pro), אבל זה הרבה יותר טוב מהמצב כיום. אגב, תהליך זה יקח זמן הואיל ואינטל עד כה לא הוציאה שום Chipset שתומך ב-UFS בצורה "טבעית" ובמקלות PC היצרנים לא נוטים להוסיף צ'יפים מעבר למה שאינטל ממליצה.

לסיכום: UFS מביא סוף סוף את האחסון הקטן לעולם המודרני של משהו שמזכיר SATA (אם כי UFS יותר מתוחכם מ-SATA הואיל והוא יכול לקבל מספר פקודות לביצוע במקביל ולא אחד אחד כמו SATA). אני מתקשה להאמין שנראה בשנה שנתיים הקרובות את האחסון הקטן מתקרב ל"אח" הגדול (NVMe) שנותן מהירויות פנטסטיות, אבל זה יקרה במוקדם או במאוחר. מבחינה פרקטית אם אתם רוצים UFS ככרטיסון – תוכלו להשתמש בו ב-Galaxy Note-7 שיוכרז בהתחלת חודש הבא (2 לאוגוסט), סמסונג מכניסה במכשיר הסלולרי הזה התקן שידע לתמוך הן במיקרו SD רגיל והן בכרטיסון UFS (רק אחד יכול להיות בפנים). שאר החברות בוודאי יתנו פתרון כזה בהמשך השנה או בשנה הבאה.