الفصل 12.1 - إدارة الإنتاج
أهداف التعلم
في نهاية هذا الفصل، ستكون قادرًا على:
- تطبيق أفضل الممارسات في الإنتاج
- تكوين صيانة النظام
- إدارة التحديثات
- تنفيذ التوافر العالي
- توثيق الإجراءات
- إنشاء runbooks
أفضل الممارسات في الإنتاج
الأمان
# 1. المستخدمون والأذونات
# - أقل امتياز
# - لا يوجد وصول مباشر لـ root
# - تكوين sudo
# 2. جدار الحماية
# - قواعد تقييدية
# - المنافذ الضرورية فقط
# - مراقبة الاتصالات
# 3. التحديثات
# - منتظمة
# - اختبارها في بيئة staging
# - مخططة
# 4. المراقبة
# - مراقبة مستمرة
# - تكوين التنبيهات
# - سجلات مركزية
الأداء
# 1. الموارد
# - مراقبة CPU، RAM، القرص
# - تنبيهات العتبات
# - تخطيط التوسع
# 2. التحسين
# - الخدمات الضرورية فقط
# - تكوين التخزين المؤقت
# - تفعيل الضغط
# 3. الصيانة
# - تنظيف منتظم
# - تدوير السجلات
# - أرشفة البيانات
صيانة النظام
التخطيط
# نافذة الصيانة
# - ساعات الخمول
# - تواصل الفريق
# - تخطيط التراجع
# قائمة مراجعة الصيانة
# 1. النسخ الاحتياطي قبل
# 2. اختبارات في بيئة staging
# 3. إشعار المستخدمين
# 4. تنفيذ الصيانة
# 5. التحقق بعد الصيانة
# 6. توثيق التغييرات
سكربتات الصيانة
#!/bin/bash
# سكربت الصيانة الأسبوعي
LOG="/var/log/maintenance-$(date +%Y%m%d).log"
{
echo "=== صيانة $(date) ==="
# تحديث النظام
echo "تحديث الحزم..."
apt update && apt upgrade -y
# تنظيف
echo "تنظيف..."
apt autoremove -y
apt autoclean
# تدوير السجلات
echo "تدوير السجلات..."
logrotate -f /etc/logrotate.conf
# تنظيف السجلات القديمة
echo "تنظيف السجلات القديمة..."
find /var/log -name "*.log" -mtime +30 -delete
# التحقق من مساحة القرص
echo "مساحة القرص:"
df -h
echo "=== نهاية الصيانة ==="
} | tee "$LOG"
استراتيجيات النسخ الاحتياطي
أنواع النسخ الاحتياطي
# 1. كامل
# - جميع البيانات
# - طويل، مساحة كبيرة
# - استعادة سريعة
# 2. تزايدي
# - التغييرات فقط
# - سريع، مساحة قليلة
# - استعادة أبطأ
# 3. تفاضلي
# - منذ آخر نسخة كاملة
# - توازن الوقت/المساحة
سكربت النسخ الاحتياطي
#!/bin/bash
# نسخ احتياطي تلقائي
BACKUP_DIR="/backup"
SOURCE_DIR="/data"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
# إنشاء النسخة الاحتياطية
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"
# التحقق
if [ $? -eq 0 ]; then
echo "نسخ احتياطي ناجح: $BACKUP_FILE"
# حذف النسخ الاحتياطية > 7 أيام
find "$BACKUP_DIR" -name "backup-*.tar.gz" -mtime +7 -delete
else
echo "خطأ: فشل النسخ الاحتياطي" | mail -s "تنبيه النسخ الاحتياطي" admin@example.com
exit 1
fi
النسخ الاحتياطي باستخدام cron
# Crontab
# نسخ احتياطي يومي في الساعة 2 صباحًا
0 2 * * * /usr/local/bin/backup.sh
# نسخ احتياطي كامل أسبوعي
0 1 * * 0 /usr/local/bin/backup-full.sh
التوافر العالي
التكرار
# 1. خوادم متعددة
# - موازنة التحميل
# - تجاوز الفشل التلقائي
# - تكرار البيانات
# 2. المراقبة
# - فحوصات الصحة
# - كشف الأعطال
# - التحويل التلقائي
# 3. النسخ الاحتياطي
# - نسخ متعددة
# - مواقع مختلفة
# - اختبارات الاستعادة
فحوصات الصحة
#!/bin/bash
# فحص صحة الخادم
CHECKS_FAILED=0
# التحقق من الخدمات
for service in nginx mysql redis; do
if ! systemctl is-active --quiet "$service"; then
echo "خطأ: $service غير نشط"
CHECKS_FAILED=$((CHECKS_FAILED + 1))
fi
done
# التحقق من مساحة القرص
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK" -gt 90 ]; then
echo "خطأ: القرص عند ${DISK}%"
CHECKS_FAILED=$((CHECKS_FAILED + 1))
fi
# تنبيه إذا كان هناك مشكلة
if [ "$CHECKS_FAILED" -gt 0 ]; then
echo "تنبيه: $CHECKS_FAILED فحص(ات) فشل(ت)" | \
mail -s "تنبيه فحص الصحة" admin@example.com
exit 1
fi
التوثيق
Runbooks
إجراءات التشغيل:
# Runbook: إعادة تشغيل الخدمة
## الهدف
إعادة تشغيل خدمة في الإنتاج
## المتطلبات
- وصول SSH
- أذونات sudo
## الإجراء
1. التحقق من الحالة الحالية
systemctl status service-name
2. إشعار الفريق
# Slack/Email
3. إعادة التشغيل
sudo systemctl restart service-name
4. التحقق
systemctl status service-name
journalctl -u service-name -n 50
5. التوثيق
# سجل الحادثة
توثيق النظام
# الملفات التي يجب توثيقها:
# - تكوين الخدمات
# - إجراءات الصيانة
# - جهات اتصال الفريق
# - كلمات المرور (تدار بأمان)
# - بنية النظام
الأتمتة
سكربتات الأتمتة
#!/bin/bash
# أتمتة مهام الإنتاج
# 1. المراقبة
/usr/local/bin/monitor.sh
# 2. النسخ الاحتياطي
/usr/local/bin/backup.sh
# 3. التنظيف
/usr/local/bin/cleanup.sh
# 4. التقارير
/usr/local/bin/report.sh
cron الإنتاج
# /etc/cron.d/production
# المراقبة كل 5 دقائق
*/5 * * * * root /usr/local/bin/monitor.sh
# النسخ الاحتياطي اليومي
0 2 * * * root /usr/local/bin/backup.sh
# التنظيف الأسبوعي
0 3 * * 0 root /usr/local/bin/cleanup.sh
# التقرير اليومي
0 8 * * * root /usr/local/bin/report.sh
الملخص
في هذا الفصل، تعلمت:
أفضل الممارسات: الأمان، الأداء، الصيانة
الصيانة: التخطيط، السكربتات، الإجراءات
النسخ الاحتياطي: الاستراتيجيات، السكربتات، الأتمتة
التوافر العالي: التكرار، فحوصات الصحة، تجاوز الفشل
التوثيق: Runbooks، الإجراءات
الأتمتة: السكربتات، cron الإنتاج
الخطوات التالية
الفصل 12.2: ضبط الأداء
الفصل 12.3: الأتمتة الكاملة
تم إنشاء الفصل في: ديسمبر 2024