מכרזים

שימוש בשירות AWS Instance Scheduler לצורך חסכון בעלויות

בעבודה עם תשתיות מחשוב ענן על גבי תשתית AWS, קיימות מספר שיטות תמחור – מודל תשלום עבור שימוש בפועל / On demand (מתאים לשירותים בעלי דפוס שימוש בלתי ידוע / בלתי צפוי), רכישת התחייבות לתקופה מראש (שנה או שלוש שנים) או Saving plans (מתאים לשירותים בעלי זמני ריצה ארוכים וצפויים מראש) ו-Spot (מתאים לתרחישים בהם נרצה להוזיל עלויות, תוך שאנו לוקחים בחשבון את הסיכון שהמכונה תילקח מאיתנו בהתראה של דקה או שתיים מראש).

עבור תרחישים בהם יש לנו שימוש בשירותי מחשוב (שירותי EC2 או Amazon RDS), בעלי משך שימוש קבוע וידוע מראש, ניתן להגיע לחסכון של עד 70% ממחיר המחירון, באמצעות שימוש בשירות AWS Instance Scheduler.

שימוש קלאסי לשירות Instance Scheduler הוא סביבות פיתוח / בדיקות, או שירותים אשר ניתן לכבות אותם מעבר לשעות הפעילות, מכיוון שהן אינן בשימוש בשעות הלילה או סופי שבוע ע"י אף לקוח.

 

ארכיטקטורה

שירות AWS Instance Scheduler מבוססת על תבניות של CloudFormation. אנו מגדירים CloudWatch event אשר יגרום להפעלת Lambda function שתכבה או תדליק את מכונות ה-EC2 או ה-RDS instances בזמנים מוגדרים מראש.

כל ההגדרה מבוססת על tagging, מה שמאפשר לנו לשלוט על מספר רב של מכונות EC2 או RDS instances תחת הגדרה בודדת.

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

שירות AWS Instance Scheduler תומך בהגדרות כיבוי והדלקה עבור חשבון ה-AWS הנוכחי וגם עבור חשבונות AWS מרוחקים / נוספים, עבור ארגונים המחזיקים מספר סביבות ענן או מספר רב של חשבונות AWS.

 

הסבר כיצד להטמיע את שירות AWS Instance Scheduler

  1. התחבר לממשק הניהול של שירות CloudFormation:
    https://console.aws.amazon.com/cloudformation/home
  1. מהפינה הימנית העליונה של ממשק הניהול יש לבחור באזור הגיאוגרפי (Region) הרלוונטי (דוגמת eu-west-1)
  1. מהמסך הראשי יש ללחוץ על Create stack
  2. תחת "Specify template", יש לבחור ב-"Amazon S3 URL" ולציין את הכתובת הבאה:
    https://s3.amazonaws.com/solutions-reference/aws-instance-scheduler/latest/instance-scheduler.template
  1. לחיצה על כפתור Next
  2. יש למלא את השדות הבאים או לבחור מתוך רשימה קיימת:

> בשדה Stack name יש לציין את שם ה-Stack, לדוגמא Instance-Scheduler

> בשדה Instance Scheduler tag name יש לציין את שם ה-tag (או להשאיר את ערך ברירת המחדל)

> בשדה Service(s) to schedule יש לבחור בין EC2, RDS או שניהם (Both)

> בשדה Create RDS instance snapshot יש לבחור ב-Yes במידה ומעוניינים לבצע גיבוי לפני כיבוי מכונת RDS, אחרת ניתן להשאיר את ערך ברירת המחדל "No"

> בשדה Scheduling enabled יש להשאיר את ערך ברירת המחדל "Yes"

> בשדה Region(s) יש לציין את קוד האזור הגיאוגרפי (Region) עליו מעוניינים להכיל את ההגדרות (כדוגמת eu-west-1), אחרת ניתן להשאיר שדה זה ריק

> בשדה Default time zone יש לבחור מתוך הרשימה את אזור הזמן הרלוונטי

> בשדה This account יש לבחור ב-Yes על-מנת להכיל את ההגדרות על חשבון ה-AWS הנוכחי

> בשדה Frequency יש לבחור כל כמה דקות Instance Scheduler יבצע בדיקת הגדרות וירוץ

> בשדה Memory size יש להשאיר את ערך ברירת המחדל (אלא אם יש לנו כמות מאוד גדולה של מכונות EC2 ו-RDS Instances אשר אנו מעוניינים לבצע כיבוי והדלקה במועדים קבועים)

> בשדה Send anonymous usage data יש לבחור ב-No

> לחיצה על כפתור Next -> בעמוד Options יש להשאיר את ערכי ברירת המחדל וללחוץ על Next

  1. בתחתית עמוד Review, יש לסמן " I acknowledge that AWS CloudFormation might create IAM resources" וללחוץ על Create stack
  2. יש להמתין מספר דקות עד שתופיע ההודעה CREATE_COMPLETE

 

 

התקנת Scheduler CLI והגדרת Period ו-Schedule

  1. התקן את Scheduler CLI על מכונת Linux, עפ"י ההוראות המופיעות בקישור:
    https://docs.aws.amazon.com/solutions/latest/instance-scheduler/appendix-a.html
  1. הרץ את הפקודה הבאה על-מנת להגדיר לו"ז של ימי השבוע (שני עד שישי) בין השעות 09:00 ל-18:00
    scheduler-cli create-period –name "weekdays" –begintime 09:00 –endtime 18:00 –weekdays mon-fri –stack Instance-Scheduler
  1. הרץ את הפקודה הבאה על-מנת להגדיר תזמון (Schedule) בשם OfficeHours באזור זמן London:
    scheduler-cli create-schedule –name OfficeHours –periods weekdays,weekends –timezone Europe/London –stack Instance-Scheduler

 

תיוג משאבים

התקן מכונת EC2 או Amazon RDS instance והוסף tag חדש עם key בשם Schedule וערך OfficeHours.

מידע נוסף אודות EC2 tagging ניתן למצוא בתיעוד:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console

מידע נוסף אודות RDS tagging ניתן למצוא בתיעוד:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html

 

הערות נוספות

כאשר מתקינים EC2 instance, חובה לוודא כי הגדרת Shutdown behavior מוגדרת כ-Stop, על מנת ששירות Instance scheduler יפעל כראוי

במידה וביצענו הצפנת EBS volume למכונת EC2, עלינו להוסיף להרשאות Instance Scheduler הרשאה בשם kms:CreateGrant על-מנת לאפשר לשירות גישה למפתח ההצפנה

במידה ואנו מעוניינים להשתמש בשירות Instance scheduler לצורך כיבוי מכונות RDS, מומלץ לאפשר לשירות Instance Scheduler לבצע snapshot לפני כיבוי ה-RDS instance

במידה ומעוניינים לשמור מדדים (metrics) של שירות Instance Scheduler ב-CloudWatch, צריך לקחת בחשבון כי תהיה לכך עלות נוספת

 

מקורות מידע נוספים

מדריך לשימוש בשירות AWS Instance Scheduler
https://s3.amazonaws.com/solutions-reference/aws-instance-scheduler/latest/instance-scheduler.pdf