در این مستند به بررسی و تجزیه و تحلیل استراتژیهای مختلف برای بهینهسازی هزینه در سرورهای ابری میپردازیم. هدف این مستند ارائه روشها و ابزارهای کاربردی است که میتوانند به شما کمک کنند تا هزینههای سرورهای ابری خود را کاهش دهید و بهرهوری را افزایش دهید.
الزامات
- دسترسی به سرورهای ابری با دسترسی ریشه (Root Access)
- آشنایی با خط فرمان لینوکس
- دانش اولیه از مدیریت سرورهای ابری و مانیتورینگ منابع
۱. اندازهگیری و تحلیل مصرف منابع
برای بهینهسازی هزینهها، ابتدا باید میزان مصرف منابع خود را به درستی اندازهگیری کنید. ابزارهای مختلفی برای مانیتورینگ و تحلیل مصرف منابع سرورهای ابری وجود دارد. در اینجا به استفاده از htop
و nmon
برای مانیتورینگ و بررسی مصرف CPU، RAM و دیسک پرداخته میشود.
نصب htop و nmon
ابتدا این ابزارها را بر روی سرور خود نصب کنید:
sudo apt-get update
sudo apt-get install -y htop nmon
استفاده از htop
برای مشاهده مصرف CPU و RAM، میتوانید از htop
استفاده کنید. این ابزار نمای گرافیکی از مصرف منابع سیستم شما ارائه میدهد:
htop
استفاده از nmon
nmon
یک ابزار قدرتمند دیگر برای مانیتورینگ سرورها است که اطلاعات کاملی از CPU، RAM، دیسک و شبکه ارائه میدهد:
nmon
پس از اجرای nmon
، با استفاده از کلیدهای c
, m
, d
و n
میتوانید به ترتیب مصرف CPU، حافظه، دیسک و شبکه را مشاهده کنید.
۲. بهینهسازی مصرف منابع
مرحله ۱: تنظیم منابع با استفاده از cgroups
cgroups
یکی از ابزارهای موجود در لینوکس است که به شما اجازه میدهد مصرف منابع توسط فرآیندها را محدود کنید. برای تنظیم cgroups
ابتدا باید پکیجهای مربوطه را نصب کنید:
sudo apt-get install -y cgroup-tools
سپس میتوانید یک cgroup جدید ایجاد کرده و محدودیتهای منابع را تنظیم کنید:
sudo cgcreate -g cpu,memory:/mygroup
sudo cgset -r cpu.shares=512 mygroup
sudo cgset -r memory.limit_in_bytes=1G mygroup
این دستورات یک cgroup جدید با نام mygroup
ایجاد میکنند که در آن مصرف CPU به نصف و مصرف حافظه به ۱ گیگابایت محدود شده است.
مرحله ۲: استفاده از کانتینرها برای بهینهسازی
یکی دیگر از روشهای موثر برای بهینهسازی مصرف منابع، استفاده از کانتینرها است. Docker یک راهحل قدرتمند برای اجرای برنامهها در کانتینرهای سبک و با منابع محدود است.
ابتدا Docker را نصب کنید:
sudo apt-get install -y docker.io
سپس میتوانید یک کانتینر را با محدودیت منابع اجرا کنید:
sudo docker run -d --name mycontainer --cpus="0.5" --memory="1g" nginx
این دستور یک کانتینر Nginx را اجرا میکند که مصرف CPU آن به نصف هسته و حافظه آن به ۱ گیگابایت محدود شده است.
۳. استفاده از مقیاسگذاری خودکار
مقیاسگذاری خودکار یکی از روشهای موثر برای بهینهسازی هزینهها در سرورهای ابری است. با استفاده از این روش، تعداد منابع سرور براساس بار کاری واقعی تنظیم میشود.
راهاندازی مقیاسگذاری خودکار با Kubernetes
اگر از Kubernetes استفاده میکنید، میتوانید HPA (Horizontal Pod Autoscaler) را برای مقیاسگذاری خودکار پادها براساس مصرف CPU یا حافظه تنظیم کنید.
ابتدا یک فایل YAML برای تنظیم HPA ایجاد کنید:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50
سپس فایل را با استفاده از kubectl اعمال کنید:
kubectl apply -f hpa.yaml
این تنظیمات، مقیاسگذاری خودکار پادهای Nginx را براساس مصرف CPU انجام میدهد.
۴. استفاده از ماشینهای مجازی با اندازه مناسب
یکی دیگر از روشهای بهینهسازی هزینه، استفاده از ماشینهای مجازی با اندازه مناسب برای بار کاری شما است. برای مثال، اگر بار کاری شما در ساعات خاصی کاهش مییابد، میتوانید از ماشینهای مجازی با اندازه کوچکتر در آن ساعات استفاده کنید.
تنظیم cron برای تغییر اندازه ماشینهای مجازی
برای تغییر اندازه ماشینهای مجازی در ساعات خاص، میتوانید از cron jobs استفاده کنید. به عنوان مثال، برای کاهش اندازه ماشین مجازی در ساعت ۸ شب:
0 20 * * * /usr/bin/virsh setvcpus --count 2 my-vm
این دستور تعداد هستههای ماشین مجازی my-vm
را به ۲ کاهش میدهد.
۵. استفاده از ذخیرهسازی بهینه
استفاده بهینه از ذخیرهسازی نیز یکی از روشهای مهم برای کاهش هزینهها است. ابزارهایی مانند du
و ncdu
به شما کمک میکنند تا مصرف فضای دیسک را تحلیل و مدیریت کنید.
نصب و استفاده از ncdu
ابتدا ncdu
را نصب کنید:
sudo apt-get install -y ncdu
سپس با استفاده از این ابزار میتوانید پوشههای بزرگ و پرمصرف را شناسایی کنید:
ncdu /
این ابزار یک نمای گرافیکی از مصرف دیسک شما ارائه میدهد.
نتیجهگیری
در این مستند، به بررسی استراتژیهای مختلف برای بهینهسازی هزینه در سرورهای ابری پرداختیم. با استفاده از این راهنما، میتوانید مصرف منابع سرورهای ابری خود را بهینه کرده و هزینهها را کاهش دهید.