למד איך לפרוס קבוצות פעולה אוטומטיות של Terraform במהירות

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

במדריך זה, תלמד כיצד לבנות ולהריץ תצורת Terraform לבניית קבוצות Autoscaling ולפרסם אותן באמצעות Terraform.

המשך והשג אפס זמן עצירה על ההתקנים שלך!

דרישות מוקדמות

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

  • חשבון Amazon Web Service (AWS).
  • A code editor – Even though you can use any text editor to work with Terraform configuration files, consider using Visual Studio (VS) Code as it understands the HCL Terraform language well.
  • Terraform – המדריך משתמש ב-Terraform v1.1.5 הרץ על Ubuntu 20.04 LTS, אך יש לעבוד על כל מערכת הפעלה עם Terraform.

בניית תצורת Terraform עבור קבוצת Autoscaling ב-AWS

לפני הרצת פקודות Terraform כדי לבנות ולהשיק את התשתיות, עליך ליצור את קבצי התצורה של Terraform. תיבנה קונפיגורציה של Terraform כדי ליצור קבוצת AWS בחשבון ה- AWS שלך.

1. התחבר למכונה שלך באמצעות לקוח SSH האהוב עליך.

2. לאחר מכן, צור תיקייה בשם ~/terraform-autoscaling-demo, ואז שנה את תיקיית העבודה (cd) לתיקייה ההיא. תיקייה זו תכיל את כל קבצי התצורה שבהם תעבוד במדריך זה.

mkdir ~/terraform-autoscaling-demo
cd ~/terraform-autoscaling-demo

3. פתח את עורך הקוד האהוב עליך, העתק/הדבק את התצורה הבאה, ושמור את הקובץ בשם main.tf בתיקייה של ~/terraform-autoscaling-demo. קובץ זה main.tf הוא קובץ הקונפיגורציה של Terraform עבור קבוצת ה- Autoscaling.

הקוד למטה יוצר תצורת הקונפיגורציה של Terraform עבור קבוצת ה- Autoscaling. קבוצת ה- Autoscaling כוללת גם את הרכיבים שלה (aws_autoscaling_schedule ו- aws_autoscaling_policy).

# יצירת תצורת ההתזנקות האוטומטית שמכילה פרטי מכונת EC2 של AWS
resource "aws_launch_configuration" "aws_autoscale_conf" {
# הגדרת שם התצורה להתזנקות אוטומטית
  name          = "web_config"
# הגדרת מזהה התמונה של מכונת ה EC2 של AWS
  image_id      = "ami-04505e74c0741db8d"
# הגדרת סוג המקרה של מכונת ה EC2 של AWS
  instance_type = "t2.micro"
# הגדרת המפתח שישמש לגישה למכונת ה EC2 של AWS
  key_name = "automateinfra"
}

# יצירת קבוצת ההתזנקות האוטומטית באזור הזמינות us-east-1a
resource "aws_autoscaling_group" "mygroup" {
# הגדרת אזור הזמינות שבו תישאר מכונת ה EC2 של AWS
  availability_zones        = ["us-east-1a"]
# ציון שם הקבוצה של ההתזנקות האוטומטית
  name                      = "autoscalegroup"
# הגדרת המספר המקסימלי של מכונות EC2 של AWS בעת התזנקות
  max_size                  = 2
# הגדרת המספר המינימלי של מכונות EC2 של AWS בעת התזנקות
  min_size                  = 1
# זמן חסינות היא התקופה אחריו מכונת EC2 של AWS מתחילה לפעול לפני בדיקת הבריאות
  health_check_grace_period = 30
# התזנקות אוטומטית תתרחש על סמך הבריאות של מכונת EC2 שהוגדרה בהתראת AWS Cloudwatch
  health_check_type         = "EC2"
# force_delete מוחק את קבוצת ההתזנקות האוטומטית מבלי לחכות לכל המכונות בבריכה להיכלל
  force_delete              = true
# הגדרת מדיניות ההפסקה שבה תיחלף המכונה הכי ישנה תחילה
  termination_policies      = ["OldestInstance"]
# קבוצת ההתזנקות תלויה בתצורת ההתזנקות האוטומטית עקב הגדרות מכונת EC2 של AWS
  launch_configuration      = aws_launch_configuration.aws_autoscale_conf.name
}
# יצירת לוח הזמנים של קבוצת ההתזנקות האוטומטית

resource "aws_autoscaling_schedule" "mygroup_schedule" {
  scheduled_action_name  = "autoscalegroup_action"
# גודל המינימלי לקבוצת ההתזנקות האוטומטית
  min_size               = 1
# גודל המקסימלי לקבוצת ההתזנקות האוטומטית
  max_size               = 2
# הגדרת היכולת הרצויה היא מספר המכונות EC2 הפועלות בקבוצת ההתזנקות
  desired_capacity       = 1
# הגדרת זמן ההתזנקות אם אתה חושב שהתעבורה יכולה להגיע לשיא בזמן זה.
  start_time             = "2022-02-09T18:00:00Z"
  autoscaling_group_name = aws_autoscaling_group.mygroup.name
}

# יצירת מדיניות ההתזנקות של קבוצת ההתזנקות האוטומטית
resource "aws_autoscaling_policy" "mygroup_policy" {
  name                   = "autoscalegroup_policy"
# מספר המכונות לפיו תתבצע ההתזנקות.
  scaling_adjustment     = 2
  adjustment_type        = "ChangeInCapacity"
# כמות הזמן (שניות) לאחר התזנקות שהיא מתרחשת והתזנקות הבאה מתחילה.
  cooldown               = 300
  autoscaling_group_name = aws_autoscaling_group.mygroup.name
}
# יצירת התראת AWS CLoudwatch שתתזנק מכונת EC2 של AWS בהתאם לשימוש במעבד המרכזי.
resource "aws_cloudwatch_metric_alarm" "web_cpu_alarm_up" {
# הגדרת שם ההתראה של AWS Cloudwatch
  alarm_name = "web_cpu_alarm_up"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods = "2"
# הגדרת שם המטריקה על פיו תתבצע ההתזנקות (על פי מעבד המרכזי)
  metric_name = "CPUUtilization"
# שם המרחב של המטריקה המקושרת להתראה
  namespace = "AWS/EC2"
# לאחר שהתראת AWS Cloudwatch מתקבלת, היא תמתין למשך 60 שניות ואז תתבצע התזנקות
  period = "60"
  statistic = "Average"
# אחוז השימוש במעבד מוגדר ל- 10 אחוז
  threshold = "10"
  alarm_actions = [
        "${aws_autoscaling_policy.mygroup_policy.arn}"
    ]
dimensions = {
    AutoScalingGroupName = "${aws_autoscaling_group.mygroup.name}"
  }
}

4. צור קובץ נוסף ב- ~/terraform-autoscaling-demo בשם provider.tf, ומלא את התוכן למטה. הקובץ provider.tf מגדיר ספקים כמו AWS, Oracle, Azure וכו '. קובץ זה מגדיר את החיבור של Terraform עם שירותי הענן הנכונים.

המדריך ייצור משאבים באזור us-east-1. אך תוכל למצוא את רשימת האזורים שבהם AWS נתמך.

provider "aws" {
   region = "us-east-1"
 }

5. לבסוף, הפעל את הפקודה tree למטה כדי לוודא שכל הקבצים הדרושים נמצאים בתיקיית הפרויקט שלך (~/terraform-autoscaling-demo).

Verifying the Required Files for Building AWS Autoscaling Group in AWS Cloud

יצירת קבוצת AWS Autoscaling עם קובץ הגדרת Terraform

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

כדי לספק את קבוצת ה-AWS Autoscaling, כמו בכל הגדרות Terraform אחרות, Terraform משתמשת בשלוש פקודות ברצף (terraform init, terraform plan, ו-terraform apply).

1. הרץ את הפקודה terraform init בתיקייה ~/terraform-autoscaling-demo. הפקודה מאתחלת את התוספים והספקים הדרושים לעבודה עם משאבים.

terraform init

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

Initializing Terraform

2. לאחר מכן, הרץ את הפקודה terraform plan כדי לוודא שהתחברות הקבצים שלך נכונה ונותנת לך תוכנית משאבים שיהיו מתקיימים בתשתית שלך.

terraform plan

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

Executing the Terraform Plan

3. לבסוף, הרץ את הפקודה terraform apply כדי להסיר את "גלגלי האימון" ולהשיב ל-Terraform ליצור את קבוצת ה-AutoScaling של AWS.

הפקודה אומרת ל-Terraform לקרוא כל הגדרה (*.tf) בתיקייה הנוכחית ולהזרים מצב שישלח ל-AWS. לאחר מכן, תרם תקבל קבוצת ה-AutoScaling של AWS ורכיבים נוספים.

אין תשלום נוסף עבור AWS Auto Scaling. אתה משלם רק עבור משאבי AWS הדרושים להפעלת היישום שלך.

Applying the Terraform Configuration to Build Autoscaling Group

אימות קבוצת ה-AutoScaling של AWS בענן AWS

כעת, עליך להקים את קבוצת ה-AutoScaling של AWS ורכיבים קשורים עם Terraform. אך איך אתה יכול לוודא שהם קיימים בענן ה- AWS שלך? אמת את קבוצת ה-AutoScaling על ידי בדיקה ידנית ב-Konsole מנהלי של AWS.

1. פתח את דפדפן האינטרנט האהוב עליך והתחבר ל-Konsole המנהלי של AWS.

שלב 2. בדף הבית של הקונסול, לחץ על תיבת החיפוש, חפש ולחץ על 'EC2' כדי לגשת ללוח בקרת EC2.

לחץ על פריט התפריט של AWS Auto Scaling group בלוח בקרת EC2 כדי לנהל את קבוצות ההתפשטות האוטומטית שלך.

המספר הרצוי של מקררי EC2 של AWS יושקו בענן של AWS בלוח בקרת EC2 עם ההתפשטות האוטומטית שלמטה.

Verifying the AWS Autoscaling Group with Scaling Policy Containing AWS CloudWatch Alarm

3. לבסוף, לחץ על AWS Auto Scaling Launch Configuration בלוח בקרת EC2. תראה את התצורה שלך להתחלת ההתפשטות ( web_config) כפי שמוצג למטה.

Verifying the AWS Autoscaling Launch Configuration in AWS Cloud

התפשטות את המקרר של EC2 עם בדיקות מעמר

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

1. פתח את מקרר EC2 שהושק עם קבוצת ההתפשטות האוטומטית באמצעות לקוח SSH.

2. לאחר מכן, הפעל את הטרמינל והפעל את הפקודה למטה כדי להתקין את כלי הטרחנות (stress-ng). כלי הטרחנות מאפשר לך להגדיר וליצור לחץ על מכונת ה-Ubuntu.

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

sudo apt install stress-ng
Installing the Load Stress tool on the AWS EC2 instance

3. הפעל את הפקודה של stress-ng למטה כדי ליצור לחץ על המקרר.

הפקודה הבאה מכילה את הדגלים הבאים:

  • --cpu – מציין את מספר הליבות עליהן יווצר העומס.
  • -v – מאפשר מצב מפורט.
  • --timeout – מציין את הזמן לו יווצר העומס.
sudo stress-ng --cpu 4 -v --timeout 3000s
Generating the load on AWS EC2 instance.

4. כעת הפעל את הפקודה top מתחת לרגע שתייצר העומס כדי להציג את תהליכי ה-Linux.

top

למטה, תראה שה-CPU מתפרץ לאחר שנוצר העומס למקרה.

Executing the top command to verify the CPU consumption

5. עבור לשירות CloudWatch ב-AWS Cloud. תיכף תזהה שאזעקה נוצרה כאשר ה-CPU חצה את (10%). האזעקה הודיעה לקבוצת הגדלה אוטומטית לשפר את מספר המופעים מאחד לשני, כפי שצויין בקבוצת הגדלה האוטומטית.

Viewing the Alarm Generated in the AWS CloudWatch Service

6. לבסוף, עבור ל-מופעים בלוח המחוונים של EC2 כדי לאמת את מופעי EC2 של AWS.

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

Verifying the AWS EC2 instances in the EC2 dashboard

ניתן גם לאמת את הפעילויות של הגדלת הקבוצה האוטומטית בקבוצת פעילויות של AWS AutoScale, כפי שמוצג למטה.

Verifying the AWS AutoScale group activities

סיכום

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

עכשיו, עם הידע החדש שזה היה, תתחילו ותממשו את הגדלת הקנייה האוטומטית עם שירותי AWS אחרים מבלי לדאוג לעומס על השרתים!

Source:
https://adamtheautomator.com/terraform-autoscaling-group/