تعلم كيفية نشر مجموعات التحكم التلقائي لـ Terraform بسرعة

هل أنت متعب من مراقبة حمولة مثيلات AWS الخاصة بك وحركة المرور التي تتلقاها؟ لماذا لا تقوم بتوتيب كل شيء عن طريق نشر Terraform مجموعات التوسع التلقائي؟ يتيح التوسع التلقائي لبعض الخوادم النوم خلال فترات الحمولة المنخفضة وإضافة المزيد من الخوادم خلال فترات الحمولة العالية، مما يوفر على تكاليف الكهرباء للشركات.

في هذا البرنامج التعليمي، ستتعلم كيفية بناء وتشغيل تكوين Terraform لإنشاء مجموعات التوسع التلقائي ونشرها باستخدام Terraform.

اقرأ وحقق عدم توقف على مثيلاتك!

المتطلبات الأولية

سيكون هذا المنشور دورًا تعليميًا خطوة بخطوة. إذا كنت ترغب في متابعة، تأكد من وجود العناصر التالية:

  • حساب خدمة الويب أمازون (AWS) 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 لمجموعة التوسع التلقائي لخدمة 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 لمجموعة التوازن التلقائي.

ينشئ الكود أدناه تكوين التشغيل التلقائي (web_config) ويوفر مجموعة التوازن التلقائي (autoscalegroup). تأتي مجموعة التوازن التلقائي أيضًا مع مكوناتها (aws_autoscaling_schedule و aws_autoscaling_policy).

# إنشاء تكوين التشغيل التلقائي الذي يحتوي على تفاصيل نموذج AWS EC2
resource "aws_launch_configuration" "aws_autoscale_conf" {
# تحديد اسم تكوين تشغيل التوسيع التلقائي
  name          = "web_config"
# تحديد معرف الصورة لنموذج AWS EC2
  image_id      = "ami-04505e74c0741db8d"
# تحديد نوع النموذج لنموذج AWS EC2
  instance_type = "t2.micro"
# تحديد المفتاح الذي سيتم استخدامه للوصول إلى نموذج AWS EC2
  key_name = "automateinfra"
}

# إنشاء مجموعة التوسع التلقائي داخل منطقة التوفر us-east-1a
resource "aws_autoscaling_group" "mygroup" {
# تحديد منطقة التوفر التي سيتم فيها تشغيل نموذج AWS EC2
  availability_zones        = ["us-east-1a"]
# تحديد اسم مجموعة التوسع التلقائي
  name                      = "autoscalegroup"
# تحديد الحد الأقصى لعدد نماذج AWS EC2 أثناء التوسيع
  max_size                  = 2
# تحديد الحد الأدنى لعدد نماذج AWS EC2 أثناء التوسيع
  min_size                  = 1
# فترة السماح هي الوقت الذي بعد انتهاء نموذج AWS EC2 يتم تشغيله قبل فحص الصحة.
  health_check_grace_period = 30
# سيتم التوسيع التلقائي استنادًا إلى صحة نموذج AWS EC2 المحددة في إنذار AWS Cloudwatch
  health_check_type         = "EC2"
# force_delete يحذف مجموعة التوسع التلقائي دون انتظار إنهاء جميع النماذج في التجمع
  force_delete              = true
# تحديد سياسة الإنهاء حيث سيتم استبدال أقدم نموذج أولاً
  termination_policies      = ["OldestInstance"]
# تعتمد مجموعة التوسيع على تكوين التشغيل التلقائي بسبب تكوين نموذج AWS EC2
  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 الذي سيوسع نموذج AWS EC2 استنادًا إلى استخدام وحدة المعالجة المركزية.
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).

١. قم بتشغيل أمر terraform init في الدليل ~/terraform-autoscaling-demo. يقوم الأمر بتهيئة الإضافات والمزودات اللازمة للعمل مع الموارد.

terraform init

إذا تم كل شيء بنجاح، سترى رسالة تقول أن Terraform تمت تهيئته بنجاح في الإخراج، كما هو موضح أدناه.

Initializing Terraform

٢. في الخطوة التالية، قم بتشغيل أمر terraform plan للتأكد من صحة بنية ملفات التكوين الخاصة بك والحصول على مخطط للموارد التي سيتم توفيرها في بنيتك التحتية.

terraform plan

إذا نجحت العملية، يجب أن ترى رسالة تظهر المخطط مثل الواحد أدناه.

Executing the Terraform Plan

٣. في النهاية، قم بتشغيل أمر terraform apply لإزالة العجلات التدريبية واستدعاء Terraform لإنشاء مجموعة AWS AutoScaling.

يخبر الأمر Terraform بقراءة كل تكوين (*.tf) في الدليل الحالي لتجميع حالة ترسل إلى AWS. ثم يقوم Terraform ببناء مجموعة AWS Autoscaling ومكونات أخرى.

لا توجد تكلفة إضافية لتوسيع AWS Auto Scaling. تدفع فقط مقابل الموارد اللازمة لتشغيل تطبيقاتك على AWS.

Applying the Terraform Configuration to Build Autoscaling Group

التحقق من مجموعة AWS Autoscaling في سحابة AWS

الآن، يجب أن تكون قد أنشأت مجموعة AWS Autoscaling والمكونات المتعلقة بها باستخدام Terraform. ولكن كيف تعرف أنها موجودة في سحابة AWS الخاصة بك؟ قم بالتحقق من مجموعة الإندفاع طريقة يدوية من خلال الرجوع إلى لوحة التحكم لإدارة AWS.

١. افتح متصفح الويب المفضل لديك وقم بتسجيل الدخول إلى لوحة تحكم إدارة AWS.

2. في صفحة الواجهة الرئيسية للوحة التحكم، انقر على مربع البحث، وابحث ثم انقر على “EC2” للوصول إلى لوحة تحكم EC2.

انقر على عنصر القائمة “مجموعة التوزيع التلقائي لخدمة AWS” في لوحة تحكم EC2 لإدارة مجموعات التوزيع التلقائي الخاصة بك.

سيتم إطلاق عدد مرغوب من مثيلات AWS EC2 في سحابة AWS في لوحة تحكم EC2 بميزة التوزيع التلقائي كما هو موضح أدناه.

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

3. أخيرًا، انقر على “تكوين إطلاق التوزيع التلقائي لخدمة AWS” في لوحة تحكم EC2. سترى تكوين إطلاق التوزيع التلقائي الخاص بك (web_config) كما هو موضح أدناه.

Verifying the AWS Autoscaling Launch Configuration in AWS Cloud

توزيع التوسع التلقائي لمثيل EC2 مع اختبار الحمل

الآن بعد التحقق من أن مجموعة التوزيع التلقائي/السياسة والمكونات ذات الصلة قد تم إعدادها بشكل صحيح، حان الوقت لاختبار ما إذا كانت ميزات التوزيع التلقائي تعمل. كيف؟ عن طريق إضافة حمل على المثيل الذي تم إطلاقه مؤخرًا مع مجموعة التوزيع التلقائي.

1. افتح مثيل AWS 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

أدناه، يمكنك رؤية ارتفاع وحدة المعالجة المركزية بعد توليد الحمل للمثيل.

Executing the top command to verify the CPU consumption

5. انتقل إلى خدمة AWS CloudWatch على AWS Cloud. ستلاحظ أنه تم توليد إنذار عندما تتجاوز وحدة المعالجة المركزية (10%). الإنذار يخطر مجموعة التحجيم التلقائي بتكبير عدد المثيل من واحد إلى اثنين، كما هو محدد في مجموعة التحجيم التلقائي.

Viewing the Alarm Generated in the AWS CloudWatch Service

6. في النهاية، انتقل إلى المثيل الخاص بك في لوحة تحكم EC2 للتحقق من مثيلات AWS EC2.

سترى أنه تم إطلاق مثيل إضافي، مما يؤكد نجاح إعداد مجموعة AWS Autoscaling ومكوناتها.

Verifying the AWS EC2 instances in the EC2 dashboard

يمكنك أيضًا التحقق من أنشطة التحجيم التلقائي في أنشطة مجموعة AWS AutoScale، كما هو موضح أدناه.

Verifying the AWS AutoScale group activities

الختام

في هذا البرنامج التعليمي، لقد تعلمت كيفية استخدام Terraform لنشر مجموعة AWS Autoscaling ومكوناتها. بناء تطبيق التحجيم التلقائي باستخدام مجموعة AWS Autoscaling يتيح لك التوسع عند الحاجة وهو مهمة سريعة.

الآن، مع هذا المعرفة الجديدة، قم بتنفيذ التوسيع التلقائي مع خدمات أمازون السحابية الأخرى دون القلق بشأن الحمل على الخوادم!

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